From b076f5cf58f7376da88655fdefd6922e47126caa Mon Sep 17 00:00:00 2001 From: NikitaZotov Date: Wed, 6 Oct 2021 15:36:31 +0300 Subject: [PATCH] Add new graph programs --- .../proc_graph_intersection.scs | 212 ------- .../scp_program_proc_graph_intersection.scs | 37 -- .../proc_of_checking_if_binary_tree.scs | 379 ++++++++++++ .../scp_proc_of_checking_if_binary_tree.scs | 37 ++ .../proc_of_checking_if_functional_graph.scs | 306 ++++++++++ ...p_proc_of_checking_if_functional_graph.scs | 55 ++ .../proc_check_if_symmetric_graph.scs | 343 +++++++++++ ...cp_proc_of_checking_if_symmetric_graph.scs | 55 ++ .../proc_of_determining_acyclic_graph.scs | 153 +++++ ...oc_of_determining_acyclic_graph_helper.scs | 158 +++++ .../scp_proc_of_determining_acyclic_graph.scs | 37 ++ .../proc_check_if_path_exists.scs | 143 +++++ ...of_determining_one_way_connected_graph.scs | 262 ++++++++ ...of_determining_one_way_connected_graph.scs | 36 ++ ...f_determining_strongly_connected_graph.scs | 263 ++++++++ .../proc_of_finding_path.scs | 143 +++++ ...f_determining_strongly_connected_graph.scs | 35 ++ ...proc_of_disconnected_graph_decomposing.scs | 211 +++++++ .../proc_of_finding_connected_component2.scs | 211 +++++++ ...proc_of_disconnected_graph_decomposing.scs | 36 ++ .../proc_chains_finder_helper.scs | 189 ++++++ .../proc_of_finding_chains_set.scs | 168 +++++ .../scp_proc_of_finding_chains_set.scs | 35 ++ .../proc_of_finding_connected_component.scs | 199 ++++++ ...of_finding_connected_components_number.scs | 171 ++++++ ...of_finding_connected_components_number.scs | 37 ++ ...s_deleting_going_to_increase_cc_number.scs | 186 ++++++ .../proc_of_chosing_cut_for_max.scs | 255 ++++++++ .../proc_of_finding_edges_size.scs | 82 +++ .../proc_of_finding_maximum_cut.scs | 145 +++++ .../scp_proc_of_finding_maximum_cut.scs | 36 ++ .../proc_of_checking_if_cut.scs | 186 ++++++ .../proc_of_chosing_cut.scs | 255 ++++++++ .../proc_of_finding_edges_weigth.scs | 143 +++++ .../proc_of_finding_minimum_cut.scs | 145 +++++ .../scp_proc_of_finding_minimum_cut.scs | 35 ++ ...of_finding_graph_minimum_spanning_tree.scs | 577 ++++++++++++++++++ .../proc_of_terminal_chosing.scs | 76 +++ ...of_finding_graph_minimum_spanning_tree.scs | 35 ++ .../proc_of_finding_graphs_composition.scs | 333 ++++++++++ ...scp_proc_of_finding_graphs_composition.scs | 38 ++ .../proc_of_finding_graphs_intersection.scs | 288 +++++++++ ...cp_proc_of_finding_graphs_intersection.scs | 38 ++ .../proc_of_finding_lengthed_chain.scs | 446 ++++++++++++++ .../proc_of_finding_lengthed_chains_set.scs | 211 +++++++ ...cp_proc_of_finding_lengthed_chains_set.scs | 35 ++ .../proc_of_finding_lengthed_cycle.scs | 446 ++++++++++++++ .../proc_of_finding_lengthed_cycles_set.scs | 196 ++++++ ...cp_proc_of_finding_lengthed_cycles_set.scs | 35 ++ ..._deleting_to_transport_graph_into_tree.scs | 437 +++++++++++++ .../proc_of_finding_power.scs | 91 +++ ..._deleting_to_transport_graph_into_tree.scs | 35 ++ .../proc_of_finding_neg_vertex_degree.scs | 86 +++ .../proc_of_finding_tree_root.scs | 126 ++++ .../scp_proc_of_finding_tree_root.scs | 39 ++ .../proc_symmetric_graph.scs | 129 ---- .../scp_program_proc_symmeetric_graph.scs | 40 -- 57 files changed, 8698 insertions(+), 418 deletions(-) delete mode 100755 programs/graph_programs/proc_graph_intersection/proc_graph_intersection.scs delete mode 100755 programs/graph_programs/proc_graph_intersection/scp_program_proc_graph_intersection.scs create mode 100644 programs/graph_programs/proc_of_checking_if_binary_tree/proc_of_checking_if_binary_tree.scs create mode 100644 programs/graph_programs/proc_of_checking_if_binary_tree/scp_proc_of_checking_if_binary_tree.scs create mode 100644 programs/graph_programs/proc_of_checking_if_functional_graph/proc_of_checking_if_functional_graph.scs create mode 100644 programs/graph_programs/proc_of_checking_if_functional_graph/scp_proc_of_checking_if_functional_graph.scs create mode 100644 programs/graph_programs/proc_of_checking_if_symmetric_graph/proc_check_if_symmetric_graph.scs create mode 100644 programs/graph_programs/proc_of_checking_if_symmetric_graph/scp_proc_of_checking_if_symmetric_graph.scs create mode 100644 programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph.scs create mode 100644 programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph_helper.scs create mode 100644 programs/graph_programs/proc_of_determining_acyclic_graph/scp_proc_of_determining_acyclic_graph.scs create mode 100644 programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_check_if_path_exists.scs create mode 100644 programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_of_determining_one_way_connected_graph.scs create mode 100644 programs/graph_programs/proc_of_determining_one_way_connected_graph/scp_proc_of_determining_one_way_connected_graph.scs create mode 100644 programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_determining_strongly_connected_graph.scs create mode 100644 programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_finding_path.scs create mode 100644 programs/graph_programs/proc_of_determining_strongly_connected_graph/scp_proc_of_determining_strongly_connected_graph.scs create mode 100644 programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_disconnected_graph_decomposing.scs create mode 100644 programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_finding_connected_component2.scs create mode 100644 programs/graph_programs/proc_of_disconnected_graph_decomposing/scp_proc_of_disconnected_graph_decomposing.scs create mode 100644 programs/graph_programs/proc_of_finding_chains_set/proc_chains_finder_helper.scs create mode 100644 programs/graph_programs/proc_of_finding_chains_set/proc_of_finding_chains_set.scs create mode 100644 programs/graph_programs/proc_of_finding_chains_set/scp_proc_of_finding_chains_set.scs create mode 100644 programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_component.scs create mode 100644 programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_components_number.scs create mode 100644 programs/graph_programs/proc_of_finding_connected_components_number/scp_proc_of_finding_connected_components_number.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_checking_if_edges_deleting_going_to_increase_cc_number.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_chosing_cut_for_max.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_edges_size.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_maximum_cut.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_maximum_cut/scp_proc_of_finding_maximum_cut.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_checking_if_cut.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_chosing_cut.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_edges_weigth.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_minimum_cut.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_cut/scp_proc_of_finding_minimum_cut.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_finding_graph_minimum_spanning_tree.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_terminal_chosing.scs create mode 100644 programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/scp_proc_of_finding_graph_minimum_spanning_tree.scs create mode 100644 programs/graph_programs/proc_of_finding_graphs_composition/proc_of_finding_graphs_composition.scs create mode 100644 programs/graph_programs/proc_of_finding_graphs_composition/scp_proc_of_finding_graphs_composition.scs create mode 100644 programs/graph_programs/proc_of_finding_graphs_intersection/proc_of_finding_graphs_intersection.scs create mode 100644 programs/graph_programs/proc_of_finding_graphs_intersection/scp_proc_of_finding_graphs_intersection.scs create mode 100644 programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chain.scs create mode 100644 programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chains_set.scs create mode 100644 programs/graph_programs/proc_of_finding_lengthed_chains_set/scp_proc_of_finding_lengthed_chains_set.scs create mode 100644 programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycle.scs create mode 100644 programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycles_set.scs create mode 100644 programs/graph_programs/proc_of_finding_lengthed_cycles_set/scp_proc_of_finding_lengthed_cycles_set.scs create mode 100644 programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs create mode 100644 programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_power.scs create mode 100644 programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs create mode 100644 programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_neg_vertex_degree.scs create mode 100644 programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_tree_root.scs create mode 100644 programs/graph_programs/proc_of_finding_tree_root/scp_proc_of_finding_tree_root.scs delete mode 100755 programs/graph_programs/proc_symmetric_graph/proc_symmetric_graph.scs delete mode 100755 programs/graph_programs/proc_symmetric_graph/scp_program_proc_symmeetric_graph.scs diff --git a/programs/graph_programs/proc_graph_intersection/proc_graph_intersection.scs b/programs/graph_programs/proc_graph_intersection/proc_graph_intersection.scs deleted file mode 100755 index 1f7f27f..0000000 --- a/programs/graph_programs/proc_graph_intersection/proc_graph_intersection.scs +++ /dev/null @@ -1,212 +0,0 @@ -scp_program -> proc_graph_intersection(* - - -> rrel_params: ...(* - -> rrel_1: rrel_in: _graph1;; - -> rrel_2: rrel_in: _graph2;; - -> rrel_3: rrel_out: _per;; - - *);; - - - -> rrel_operators: ... (* - - -> rrel_init: ..proc_graph_intersection_operator0 - (* - <- genEl;; - -> rrel_1: rrel_assign: rrel_struct: rrel_const: rrel_node: rrel_scp_var: _per;; - - => nrel_goto: ..proc_graph_intersection_operator1;; - *);; - - -> rrel_init: ..proc_graph_intersection_operator1(* - <- searchSetStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _graph1;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; - -> rrel_3: rrel_assign: rrel_scp_var: _el3;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; - - ->rrel_set_3: rrel_assign: rrel_scp_var: _allvertex;; - - => nrel_then: ..proc_graph_intersection_operator2;; - => nrel_else: ..proc_graph_intersection_return_end;; - - *);; - -> ..proc_graph_intersection_operator2 (* - <- searchElStr3;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _allvertex;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc;; - -> rrel_3: rrel_assign: rrel_scp_var: _v;; - - - => nrel_then: ..proc_graph_intersection_operator3;; - => nrel_else: ..proc_graph_intersection_operator6;; - *);; - -> ..proc_graph_intersection_operator3 (* - <- eraseEl;; - - -> rrel_1:rrel_fixed:rrel_pos_const_perm:rrel_scp_var:rrel_erase:_arc;; - - => nrel_goto: ..proc_graph_intersection_operator4;; - *);; - ->..proc_graph_intersection_operator4 - (* - <- searchElStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _graph2;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; - -> rrel_3: rrel_fixed: rrel_scp_var: _v;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; - - - => nrel_then: ..proc_graph_intersection_operator5;; - => nrel_else: ..proc_graph_intersection_operator2;; - - *);; - ->..proc_graph_intersection_operator5 - (* - - <- genElStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _per;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; - -> rrel_3: rrel_fixed: rrel_scp_var: _v;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; - - => nrel_goto: ..proc_graph_intersection_operator2;; - - *);; - - ->..proc_graph_intersection_operator6 - (* - <- searchSetStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _graph1;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; - -> rrel_3: rrel_assign: rrel_scp_var: _el3;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; - - ->rrel_set_3: rrel_assign: rrel_scp_var: _allarc;; - - => nrel_then: ..proc_graph_intersection_operator7;; - => nrel_else: ..proc_graph_intersection_return_end;; - - *);; - -> ..proc_graph_intersection_operator7 (* - <- searchElStr3;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _allarc;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc;; - -> rrel_3: rrel_assign: rrel_scp_var: _A;; - - - => nrel_then: ..proc_graph_intersection_operator8;; - => nrel_else: ..proc_graph_intersection_return;; - *);; - -> ..proc_graph_intersection_operator8 (* - <- eraseEl;; - - -> rrel_1:rrel_fixed:rrel_pos_const_perm:rrel_scp_var:rrel_erase:_arc;; - - => nrel_goto: ..proc_graph_intersection_operator9;; - *);; - ->..proc_graph_intersection_operator9 - (* - <- searchElStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _graph2;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; - -> rrel_3: rrel_fixed: rrel_scp_var: _A;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; - - - => nrel_then: ..proc_graph_intersection_operator10;; - => nrel_else: ..proc_graph_intersection_operator7;; - - *);; - ->..proc_graph_intersection_operator10 - (* - - <- genElStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _per;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; - -> rrel_3: rrel_fixed: rrel_scp_var: _A;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; - - => nrel_goto: ..proc_graph_intersection_operator7;; - - *);; - - ->..proc_graph_intersection_return - (* - <- genEl;; - - -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: comp;; - - => nrel_goto: ..proc_graph_intersection_return1;; - *);; - ->..proc_graph_intersection_return1 - (* - - <- genElStr5;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _comp;; - -> rrel_2: rrel_assign: rrel_common: rrel_const:rrel_scp_var: _arc1;; - -> rrel_3: rrel_fixed: rrel_scp_var: _per;; - -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_5: rrel_fixed: rrel_scp_const: nrel_graph_intersection;; - - => nrel_goto: ..proc_graph_intersection_return2;; - - *);; - ->..proc_graph_intersection_return2 - (* - - <- genElStr3;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _comp;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_3: rrel_fixed: rrel_scp_var: _graph1;; - - - => nrel_goto: ..proc_graph_intersection_return3;; - - *);; - ->..proc_graph_intersection_return3 - (* - - <- genElStr3;; - - -> rrel_1: rrel_fixed: rrel_scp_var: _comp;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_3: rrel_fixed: rrel_scp_var: _graph2;; - - => nrel_goto: ..proc_graph_intersection_return4;; - - *);; - ->..proc_graph_intersection_return4 - (* - - <- genElStr3;; - - -> rrel_1: rrel_fixed: rrel_scp_const: concept_graph;; - -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; - -> rrel_3: rrel_fixed: rrel_scp_var: _per;; - - => nrel_goto: ..proc_graph_intersection_return_end;; - - *);; - - -> ..proc_graph_intersection_return_end (* <- return;; *);; - *);; -*);; - - diff --git a/programs/graph_programs/proc_graph_intersection/scp_program_proc_graph_intersection.scs b/programs/graph_programs/proc_graph_intersection/scp_program_proc_graph_intersection.scs deleted file mode 100755 index 5220c67..0000000 --- a/programs/graph_programs/proc_graph_intersection/scp_program_proc_graph_intersection.scs +++ /dev/null @@ -1,37 +0,0 @@ -proc_graph_intersection -=> nrel_main_idtf: - [Программа поиска пересечения 2-х графов] (* <- lang_ru;; *); - -=> nrel_initiation_condition_and_result: (..scp_program_proc_graph_intersection_initiation_condition - => ..scp_program_proc_graph_intersection_result); - --> rrel_key_sc_element: concept_graph; nrel_graph_intersection; --> rrel_solver_key_sc_element: nrel_graph_intersection; - -<- rrel_key_sc_element: - ..scp_program_proc_graph_intersection_behavior - (* - <- sc_description_of_scp_program_behavior;; - <= nrel_sc_text_translation: - ... - (* - -> rrel_example: - [Это программа создает узел-связку ,которой принадлежат исходные графы,и потом связывает пересечение этох графов с помощью отношения "пересечение графов*" ];; - *);; - *);; - -..scp_program_proc_graph_intersection_initiation_condition -= [* - concept_graph _-> _graph_intersection1;; - concept_graph _-> _graph_intersection2;; -*];; - - -..scp_program_proc_graph_intersection_result -= [* - concept_graph _-> _graph_intersection;; - _graph_intersection<= nrel_graph_intersection:_...(* - ->_graph_intersection1;; - ->_graph_intersection2;; - *);; -*];; diff --git a/programs/graph_programs/proc_of_checking_if_binary_tree/proc_of_checking_if_binary_tree.scs b/programs/graph_programs/proc_of_checking_if_binary_tree/proc_of_checking_if_binary_tree.scs new file mode 100644 index 0000000..0bfeaae --- /dev/null +++ b/programs/graph_programs/proc_of_checking_if_binary_tree/proc_of_checking_if_binary_tree.scs @@ -0,0 +1,379 @@ +scp_program -> proc_of_checking_if_binary_tree +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + *);; + + -> rrel_operators: ... + (* + + -> rrel_init: ..proc_of_checking_if_binary_tree_operator0 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_binary_tree;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator_return;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator1;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_binary_tree;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_neg_const_perm: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator_return;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator2;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator2 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_link: rrel_const: rrel_scp_var: _counter;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator3;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator3 + (* + <- contAssign;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _counter;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator3_1;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator3_1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_link: rrel_const: rrel_scp_var: _counter2;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator3_2;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator3_2 + (* + <- contAssign;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _counter2;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator4;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator4 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc3;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _not_checked_vertexes1;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator4_1;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_failure;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator4_1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertexes1;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc6;; + -> rrel_3: rrel_assign: rrel_scp_var: _node2;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _not_checked_vertexes2;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator5;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_failure;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator5 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc7;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc8;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _oredges_set;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator5_1;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_failure;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator5_1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _oredges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc10;; + -> rrel_3: rrel_assign: rrel_scp_common: rrel_scp_var: _arc61;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _not_checked_arcs1;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator5_2;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_failure;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator5_2 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _oredges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc10;; + -> rrel_3: rrel_assign: rrel_scp_common: rrel_scp_var: _arc61;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _not_checked_arcs2;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator6;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_failure;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator6 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc11;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc12;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _set_arcs;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator7;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_failure;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator7 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertexes1;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc13;; + -> rrel_3: rrel_assign: rrel_scp_var: _node3;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator8;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator9;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator8 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _node3;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc14;; + -> rrel_3: rrel_assign: rrel_scp_var: _sec_node1;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc15;; + -> rrel_5: rrel_fixed: rrel_scp_var: _not_checked_arcs1;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator8_1;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator8_1_1;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator8_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_pos_const_perm: rrel_erase: _arc15;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator8_2;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator8_2 + (* + <- contAdd;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_3 : rrel_fixed : rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator8_3;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator8_3 + (* + <- ifEq;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_const: [3];; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator_failure;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator8;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator8_1_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc13;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator8_1_2;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator8_1_2 + (* + <- contAdd;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_const: [0];; + -> rrel_3 : rrel_fixed : rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator7;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertexes2;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc16;; + -> rrel_3: rrel_assign: rrel_scp_var: _sec_node;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator10;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator_success;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10 + (* + <- searchElStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _node4;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc17;; + -> rrel_3: rrel_fixed: rrel_scp_var: _sec_node;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc18;; + -> rrel_5: rrel_fixed: rrel_scp_var: _not_checked_arcs2;; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator10_1;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator10_1_1;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_pos_const_perm: rrel_erase: rrel_scp_var: _arc18;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator10_2;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_2 + (* + <- contAdd;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_3 : rrel_fixed : rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator10_3;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_3 + (* + <- ifEq;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_const: [2];; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator_failure;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator10;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_1_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_pos_const_perm: rrel_erase: rrel_scp_var: _arc16;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator10_1_2;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_1_2 + (* + <- ifEq;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_const: [1];; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator10_1_5;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator10_1_3;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_1_3 + (* + <- contAdd;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter2;; + -> rrel_2 : rrel_fixed : rrel_scp_var: _counter2;; + -> rrel_3 : rrel_fixed : rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator10_1_4;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_1_4 + (* + <- ifEq;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter2;; + -> rrel_2 : rrel_fixed : rrel_scp_const: [2];; + + => nrel_then: ..proc_of_checking_if_binary_tree_operator_failure;; + => nrel_else: ..proc_of_checking_if_binary_tree_operator10_1_5;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator10_1_5 + (* + <- contAdd;; + + -> rrel_1 : rrel_fixed : rrel_scp_var: _counter;; + -> rrel_2 : rrel_fixed : rrel_scp_const: [0];; + -> rrel_3 : rrel_fixed : rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator9;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator_success + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_binary_tree;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc_success;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator_return;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator_failure + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_binary_tree;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_neg_const_perm: _arc_failure;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_checking_if_binary_tree_operator_return;; + *);; + + -> ..proc_of_checking_if_binary_tree_operator_return + (* + <- return;; + *);; + + *);; +*);; diff --git a/programs/graph_programs/proc_of_checking_if_binary_tree/scp_proc_of_checking_if_binary_tree.scs b/programs/graph_programs/proc_of_checking_if_binary_tree/scp_proc_of_checking_if_binary_tree.scs new file mode 100644 index 0000000..4dfce85 --- /dev/null +++ b/programs/graph_programs/proc_of_checking_if_binary_tree/scp_proc_of_checking_if_binary_tree.scs @@ -0,0 +1,37 @@ +proc_of_checking_if_binary_tree +=> nrel_main_idtf: + [Программа проверки дерева на бинарность] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_checking_if_binary_tree_initiation_condition + => ..scp_proc_of_checking_if_binary_tree_result); + +-> rrel_key_sc_element: +concept_graph; +concept_tree; +concept_binary_tree; + +-> rrel_solver_key_sc_element: +concept_binary_tree; + +<- rrel_key_sc_element: + ..scp_proc_of_checking_if_binary_tree_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [Эта программа проверяет дерево на бинарность. В случае бинарности дерева генерируется позитивная дуга принадлежности от абсолютного понятия "concept_binary_tree" к сущности "_graph", в ином случае - создаётся негативная дуга];; + *);; + *);; + + +..scp_proc_of_checking_if_binary_tree_initiation_condition = [* + concept_tree _-> _graph;; +*];; + +..scp_proc_of_checking_if_binary_tree_result += [* + concept_binary_tree -> _graph;; +*];; + diff --git a/programs/graph_programs/proc_of_checking_if_functional_graph/proc_of_checking_if_functional_graph.scs b/programs/graph_programs/proc_of_checking_if_functional_graph/proc_of_checking_if_functional_graph.scs new file mode 100644 index 0000000..b263ad3 --- /dev/null +++ b/programs/graph_programs/proc_of_checking_if_functional_graph/proc_of_checking_if_functional_graph.scs @@ -0,0 +1,306 @@ +scp_program -> proc_of_checking_if_functional_graph +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_checking_if_functional_graph_operator0_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator0_2;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator0_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_nonfunctional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator0_3;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator0_3 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_functional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator0_4;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator0_4 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_contrfunctional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator1;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices_set;; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator2;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator_return;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_edge_set;; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator3;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator18;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator3 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_vertex;; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator4_0;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator18;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator4_0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator4;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator4 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator5;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator5 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: _graph;; + + -> rrel_set_2: rrel_assign: rrel_scp_var: _inc_edges_set;; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator6;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator3;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _inc_edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator7;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator16;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator7 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator8;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator8 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator9;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator10;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator9 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator6;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator10 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [2];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator6;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator16 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator_is_functional_str;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator17;; + *);; + + + -> ..proc_of_checking_if_functional_graph_operator17 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_functional;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator_is_contrfunctional_str;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator_is_nonfunctional_str;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_is_functional_str + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_functional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator3;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_is_contrfunctional_str + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_contrfunctional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator3;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_is_nonfunctional_str + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_nonfunctional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator3;; + *);; + + + -> ..proc_of_checking_if_functional_graph_operator18 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_nonfunctional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator_particle_functional;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator19;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator19 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_functional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator20;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator_contrfunctional;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator20 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_contrfunctional_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_of_checking_if_functional_graph_operator_functional;; + => nrel_else: ..proc_of_checking_if_functional_graph_operator_particle_functional;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_functional + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_functional_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator_return;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_particle_functional + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_particle_functional_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator_return;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_contrfunctional + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_contrfunctional_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_checking_if_functional_graph_operator_return;; + *);; + + -> ..proc_of_checking_if_functional_graph_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_checking_if_functional_graph/scp_proc_of_checking_if_functional_graph.scs b/programs/graph_programs/proc_of_checking_if_functional_graph/scp_proc_of_checking_if_functional_graph.scs new file mode 100644 index 0000000..092e3f8 --- /dev/null +++ b/programs/graph_programs/proc_of_checking_if_functional_graph/scp_proc_of_checking_if_functional_graph.scs @@ -0,0 +1,55 @@ +proc_of_checking_if_functional_graph +=> nrel_main_idtf: + [Программа проверки графа на функциональность] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_checking_if_functional_graph_initiation_condition + => ..scp_proc_of_checking_if_functional_graph_result); + +-> rrel_key_sc_element: +concept_graph; +concept_functional_graph; +concept_particle_functional_graph; +concept_contrfunctional_graph; + +-> rrel_solver_key_sc_element: +concept_functional_graph; +concept_particle_functional_graph; +concept_contrfunctional_graph; + +<- rrel_key_sc_element: + ..scp_proc_of_checking_if_functional_graph_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [Это программа проверяет исходный граф на функциональность. В случае функциональности графа генерируется позитивная дуга принадлежности от абсолютного понятия "concept_functional_graph" к сущности "_graph", в случае частичной функциональности - создаётся дуга принадлежности от абсолютного понятия "concept_particle_functional_graph", в случае контруфункциональности - создаётся дуга принадлежности от абсолютного понятия "concept_contrfunctional_graph".];; + *);; + *);; + + +..scp_proc_of_checking_if_functional_graph_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_checking_if_functional_graph_result + <- nrel_disjunction; + -> ..scp_proc_of_checking_if_functional_graph_result_one; + -> ..scp_proc_of_checking_if_functional_graph_result_two; + -> ..scp_proc_of_checking_if_functional_graph_result_three;; + +..scp_proc_of_checking_if_functional_graph_result_one += [* + concept_functional_graph _-> _graph;; +*];; + +..scp_proc_of_checking_if_functional_graph_result_two += [* + concept_particle_functional_graph _-> _graph;; +*];; + +..scp_proc_of_checking_if_functional_graph_result_three += [* + concept_contrfunctional_graph _-> _graph;; +*];; diff --git a/programs/graph_programs/proc_of_checking_if_symmetric_graph/proc_check_if_symmetric_graph.scs b/programs/graph_programs/proc_of_checking_if_symmetric_graph/proc_check_if_symmetric_graph.scs new file mode 100644 index 0000000..16c94c1 --- /dev/null +++ b/programs/graph_programs/proc_of_checking_if_symmetric_graph/proc_check_if_symmetric_graph.scs @@ -0,0 +1,343 @@ +scp_program -> proc_check_if_symmetric_graph +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_check_if_symmetric_graph_operator0_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_exist_arc_to_from;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator0_2;; + *);; + + -> ..proc_check_if_symmetric_graph_operator0_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_exist_arc_from_to;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator0_3;; + *);; + + -> ..proc_check_if_symmetric_graph_operator0_3 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_symmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator0_4;; + *);; + + -> ..proc_check_if_symmetric_graph_operator0_4 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_antisymmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator1;; + *);; + + -> ..proc_check_if_symmetric_graph_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices_set;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator2;; + => nrel_else: ..proc_check_if_symmetric_graph_operator_return;; + *);; + + -> ..proc_check_if_symmetric_graph_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_edge_set;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator3;; + => nrel_else: ..proc_check_if_symmetric_graph_operator_return;; + *);; + + -> ..proc_check_if_symmetric_graph_operator3 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_vertex;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator4;; + => nrel_else: ..proc_check_if_symmetric_graph_operator18;; + *);; + + -> ..proc_check_if_symmetric_graph_operator4 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator5;; + *);; + + -> ..proc_check_if_symmetric_graph_operator5 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_graph_vertices_set;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator6;; + => nrel_else: ..proc_check_if_symmetric_graph_operator_return;; + *);; + + -> ..proc_check_if_symmetric_graph_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _second_vertex;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator7;; + => nrel_else: ..proc_check_if_symmetric_graph_operator3;; + *);; + + -> ..proc_check_if_symmetric_graph_operator7 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator8;; + *);; + + -> ..proc_check_if_symmetric_graph_operator8 + (* + <- ifCoin;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _second_vertex;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator6;; + => nrel_else: ..proc_check_if_symmetric_graph_operator9;; + *);; + + -> ..proc_check_if_symmetric_graph_operator9 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator10;; + => nrel_else: ..proc_check_if_symmetric_graph_operator11;; + *);; + + -> ..proc_check_if_symmetric_graph_operator10 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_exist_arc_from_to;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator12;; + *);; + + -> ..proc_check_if_symmetric_graph_operator11 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_exist_arc_from_to;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator12;; + *);; + + -> ..proc_check_if_symmetric_graph_operator12 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_check_if_symmetric_graph_operator13;; + => nrel_else: ..proc_check_if_symmetric_graph_operator14;; + *);; + + -> ..proc_check_if_symmetric_graph_operator13 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_exist_arc_to_from;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator15;; + *);; + + -> ..proc_check_if_symmetric_graph_operator14 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_exist_arc_to_from;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator15;; + *);; + + -> ..proc_check_if_symmetric_graph_operator15 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_symmetric;; + -> rrel_2: rrel_fixed: rrel_scp_var: _is_exist_arc_to_from;; + -> rrel_3: rrel_fixed: rrel_scp_var: _is_exist_arc_from_to;; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator16;; + *);; + + -> ..proc_check_if_symmetric_graph_operator16 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_symmetric;; + -> rrel_2: rrel_fixed: rrel_scp_const: [2];; + + => nrel_then: ..proc_check_if_symmetric_graph_operator_is_symmetric_str;; + => nrel_else: ..proc_check_if_symmetric_graph_operator17;; + *);; + + -> ..proc_check_if_symmetric_graph_operator17 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_symmetric;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_check_if_symmetric_graph_operator_is_antisymmetric_str;; + => nrel_else: ..proc_check_if_symmetric_graph_operator6;; + *);; + + -> ..proc_check_if_symmetric_graph_operator_is_symmetric_str + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_symmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator6;; + *);; + + -> ..proc_check_if_symmetric_graph_operator_is_antisymmetric_str + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_antisymmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator6;; + *);; + + -> ..proc_check_if_symmetric_graph_operator18 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_symmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_check_if_symmetric_graph_operator19;; + => nrel_else: ..proc_check_if_symmetric_graph_operator_antisymmetric;; + *);; + + -> ..proc_check_if_symmetric_graph_operator19 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_antisymmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_check_if_symmetric_graph_operator_symmetric;; + => nrel_else: ..proc_check_if_symmetric_graph_operator20;; + *);; + + -> ..proc_check_if_symmetric_graph_operator20 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_antisymmetric_str;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_check_if_symmetric_graph_operator_particle_symmetric;; + => nrel_else: ..proc_check_if_symmetric_graph_operator_particle_symmetric;; + *);; + + -> ..proc_check_if_symmetric_graph_operator_symmetric + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_symmetric_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator_return;; + *);; + + -> ..proc_check_if_symmetric_graph_operator_particle_symmetric + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_particle_symmetric_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator_return;; + *);; + + -> ..proc_check_if_symmetric_graph_operator_antisymmetric + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_antisymmetric_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_check_if_symmetric_graph_operator_return;; + *);; + + -> ..proc_check_if_symmetric_graph_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_checking_if_symmetric_graph/scp_proc_of_checking_if_symmetric_graph.scs b/programs/graph_programs/proc_of_checking_if_symmetric_graph/scp_proc_of_checking_if_symmetric_graph.scs new file mode 100644 index 0000000..c90b919 --- /dev/null +++ b/programs/graph_programs/proc_of_checking_if_symmetric_graph/scp_proc_of_checking_if_symmetric_graph.scs @@ -0,0 +1,55 @@ +proc_of_checking_if_symmetric_graph +=> nrel_main_idtf: + [Программа проверки графа на симметричность] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_checking_if_symmetric_graph_initiation_condition + => ..scp_proc_of_checking_if_symmetric_graph_result); + +-> rrel_key_sc_element: +concept_graph; +concept_symmetric_graph; +concept_particle_symmetric_graph; +concept_antisymmetric_graph; + +-> rrel_solver_key_sc_element: +concept_symmetric_graph; +concept_particle_symmetric_graph; +concept_antisymmetric_graph; + +<- rrel_key_sc_element: + ..scp_proc_of_checking_if_symmetric_graph_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [Эта программа проверяет исходный граф на cимметричность. В случае симметричности графа генерируется позитивная дуга принадлежности от абсолютного понятия "concept_symmetric_graph" к сущности "_graph", в случае частичной симметричности - создаётся дуга принадлежности от абсолютного понятия "concept_particle_symmetric_graph", в случае антисимметричности - создаётся дуга принадлежности от абсолютного понятия "concept_antisymmetric_graph".];; + *);; + *);; + + +..scp_proc_of_checking_if_symmetric_graph_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_checking_if_functional_graph_result + <- nrel_disjunction; + -> ..scp_proc_of_checking_if_symmetric_graph_result_one; + -> ..scp_proc_of_checking_if_symmetric_graph_result_two; + -> ..scp_proc_of_checking_if_symmetric_graph_result_three;; + +..scp_proc_of_checking_if_symmetric_graph_result_one += [* + concept_symmetric_graph _-> _graph;; +*];; + +..scp_proc_of_checking_if_symmetric_graph_result_two += [* + concept_particle_symmetric_graph _-> _graph;; +*];; + +..scp_proc_of_checking_if_symmetric_graph_three += [* + concept_antisymmetric_graph _-> _graph;; +*];; diff --git a/programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph.scs b/programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph.scs new file mode 100644 index 0000000..b3dc48c --- /dev/null +++ b/programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph.scs @@ -0,0 +1,153 @@ +scp_program -> proc_of_determining_acyclic_graph +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + *);; + + -> rrel_operators: ... + (* + + -> rrel_init: ..check_if_graph_acyclic + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_acyclic_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..stop_program_execution;; + => nrel_else: ..check_if_graph_not_acyclic;; + *);; + + -> ..check_if_graph_not_acyclic + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_acyclic_graph;; + -> rrel_2: rrel_assign: rrel_neg_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..stop_program_execution;; + => nrel_else: ..get_vertices_set;; + *);; + + -> ..get_vertices_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..get_arcs_set;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..get_arcs_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _arc;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_arcs;; + + => nrel_then: ..iterate_over_graph_vertices;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..iterate_over_graph_vertices + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_current_iterated_vertex;; + -> rrel_3: rrel_assign: rrel_scp_var: _current_vertex;; + + => nrel_then: ..erase_arc_to_current_iterated_vertex;; + => nrel_else: ..set_graph_as_acyclic_and_return;; + *);; + + -> ..erase_arc_to_current_iterated_vertex + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_current_iterated_vertex;; + + => nrel_goto: ..create_empty_path;; + *);; + + -> ..create_empty_path + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_scp_var: _empty_path;; + + => nrel_goto: ..perform_depth_search;; + *);; + + -> ..perform_depth_search + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_determining_acyclic_graph_helper;; + -> rrel_2: rrel_fixed: rrel_scp_const: ..call_params + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _empty_path;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..wait_recursion_return;; + *);; + + -> ..wait_recursion_return + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..check_if_graph_already_not_acyclic;; + *);; + + -> ..check_if_graph_already_not_acyclic + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_acyclic_graph;; + -> rrel_2: rrel_assign: rrel_neg_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..stop_program_execution;; + => nrel_else: ..iterate_over_graph_vertices;; + *);; + + -> ..set_graph_as_acyclic_and_return + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_acyclic_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..stop_program_execution;; + *);; + + -> ..stop_program_execution + (* + <- return;; + *);; + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph_helper.scs b/programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph_helper.scs new file mode 100644 index 0000000..3da1b14 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_acyclic_graph/proc_of_determining_acyclic_graph_helper.scs @@ -0,0 +1,158 @@ +scp_program -> proc_of_determining_acyclic_graph_helper +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _current_path;; + -> rrel_3: rrel_in: _graph_vertex;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..check_if_vertex_already_exists_in_current_path + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_path;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph_vertex;; + + => nrel_then: ..set_graph_as_not_acyclic_and_return;; + => nrel_else: ..add_graph_vertex_to_current_path;; + *);; + + -> ..add_graph_vertex_to_current_path + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_path;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph_vertex;; + + => nrel_goto: ..get_vertices_set;; + *);; + + -> ..get_vertices_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _node;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..get_arcs_set;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..get_arcs_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _arc;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_arcs;; + + => nrel_then: ..get_incident_vertices_for_graph_vertex;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..get_incident_vertices_for_graph_vertex + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertex;; + -> rrel_2: rrel_assign: rrel_edge: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph_arcs;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _incident_vertices_for_graph_vertex;; + + => nrel_then: ..iterate_over_incident_vertices_for_graph_vertex;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..iterate_over_incident_vertices_for_graph_vertex + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _incident_vertices_for_graph_vertex;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_iterated_vertex;; + -> rrel_3: rrel_assign: rrel_scp_var: _next_vertex;; + + => nrel_then: ..erase_arc_to_iterated_vertex;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..erase_arc_to_iterated_vertex + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_iterated_vertex;; + + => nrel_goto: ..continue_depth_search;; + *);; + + -> ..continue_depth_search + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_determining_acyclic_graph_helper;; + -> rrel_2: rrel_fixed: rrel_scp_const: ..call_params + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _current_path;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph_vertex;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..wait_recursion_return;; + *);; + + -> ..wait_recursion_return + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..check_if_graph_not_acyclic_determined_before;; + *);; + + -> ..check_if_graph_not_acyclic_determined_before + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_acyclic_graph;; + -> rrel_2: rrel_assign: rrel_neg_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..stop_program_execution;; + => nrel_else: ..iterate_over_incident_vertices_for_graph_vertex;; + *);; + + -> ..set_graph_as_not_acyclic_and_return + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_acyclic_graph;; + -> rrel_2: rrel_assign: rrel_neg_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..stop_program_execution;; + *);; + + -> ..stop_program_execution + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_determining_acyclic_graph/scp_proc_of_determining_acyclic_graph.scs b/programs/graph_programs/proc_of_determining_acyclic_graph/scp_proc_of_determining_acyclic_graph.scs new file mode 100644 index 0000000..417f7fa --- /dev/null +++ b/programs/graph_programs/proc_of_determining_acyclic_graph/scp_proc_of_determining_acyclic_graph.scs @@ -0,0 +1,37 @@ +proc_of_determining_acyclic_graph +=> nrel_main_idtf: + [Программа проверки графа на ацикличность] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_determining_acyclic_graph_initiation_condition + => ..scp_proc_of_determining_acyclic_graph_result); + +-> rrel_key_sc_element: +concept_graph; +concept_acyclic_graph; + +-> rrel_solver_key_sc_element: +concept_acyclic_graph; + +<- rrel_key_sc_element: + ..scp_proc_of_determining_acyclic_graph_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [Эта программа проверяет исходный граф на ацикличность. В случае ацикличности графа генерируется позитивная дуга принадлежности от абсолютного понятия "concept_acyclic_graph" к сущности "_graph", + иначе создаётся негативная дуга.];; + *);; + *);; + + +..scp_proc_of_determining_acyclic_graph_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_determining_acyclic_graph_result += [* + concept_acyclic_graph _-> _graph;; +*];; + diff --git a/programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_check_if_path_exists.scs b/programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_check_if_path_exists.scs new file mode 100644 index 0000000..0c178c3 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_check_if_path_exists.scs @@ -0,0 +1,143 @@ +scp_program -> proc_check_if_path_exists +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph_nodes;; + -> rrel_2: rrel_in: _graph_arcs;; + -> rrel_3: rrel_in: _visited_nodes;; + -> rrel_4: rrel_in: _current_node;; + -> rrel_5: rrel_in: _target_node;; + -> rrel_6: rrel_in: .._call_result;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_check_if_path_exists_operator1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _visited_nodes;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_node;; + + => nrel_then: ..proc_check_if_path_exists_operator_return;; + => nrel_else: ..proc_check_if_path_exists_operator2;; + *);; + + -> ..proc_check_if_path_exists_operator2 + (* + <- ifCoin;; + + -> rrel_1: _current_node;; + -> rrel_2: _target_node;; + + => nrel_then: ..proc_check_if_path_exists_operator_return_true;; + => nrel_else: ..proc_check_if_path_exists_operator3;; + *);; + + -> ..proc_check_if_path_exists_operator3 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _visited_nodes;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_node;; + + => nrel_goto: ..proc_check_if_path_exists_operator4;; + *);; + + -> ..proc_check_if_path_exists_operator4 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_node;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _to_node;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph_arcs;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _incident_nodes;; + + => nrel_then: ..proc_check_if_path_exists_operator5;; + => nrel_else: ..proc_check_if_path_exists_operator_return;; + *);; + + -> ..proc_check_if_path_exists_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _incident_nodes;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_next_node;; + -> rrel_3: rrel_assign: rrel_scp_var: _next_node;; + + => nrel_then: ..proc_check_if_path_exists_operator6;; + => nrel_else: ..proc_check_if_path_exists_operator_return;; + *);; + + -> ..proc_check_if_path_exists_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_next_node;; + + => nrel_goto: ..proc_check_if_path_exists_operator7;; + *);; + + -> ..proc_check_if_path_exists_operator7 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_check_if_path_exists;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_arcs;; + -> rrel_3: rrel_fixed: rrel_scp_var: _visited_nodes;; + -> rrel_4: rrel_fixed: rrel_scp_var: _next_node;; + -> rrel_5: rrel_fixed: rrel_scp_var: _target_node;; + -> rrel_6: rrel_fixed: rrel_scp_var: .._call_result;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descr;; + + => nrel_goto: ..proc_check_if_path_exists_operator8;; + *);; + + -> ..proc_check_if_path_exists_operator8 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descr;; + + => nrel_goto: ..proc_check_if_path_exists_operator9;; + *);; + + -> ..proc_check_if_path_exists_operator9 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: .._call_result;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_check_if_path_exists_operator_return;; + => nrel_else: ..proc_check_if_path_exists_operator5;; + *);; + + -> ..proc_check_if_path_exists_operator_return_true + (* + <- contAssign;; + + -> rrel_1: rrel_fixed: rrel_scp_var: .._call_result;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_check_if_path_exists_operator_return;; + *);; + + -> ..proc_check_if_path_exists_operator_return + (* + <- return;; + *);; + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_of_determining_one_way_connected_graph.scs b/programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_of_determining_one_way_connected_graph.scs new file mode 100644 index 0000000..d6aa480 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_one_way_connected_graph/proc_of_determining_one_way_connected_graph.scs @@ -0,0 +1,262 @@ +scp_program -> proc_of_determining_one_way_connected_graph +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_determining_connected_graph_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_nodes;; + + => nrel_then: ..proc_of_determining_connected_graph_operator2;; + => nrel_else: ..proc_of_determining_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_connected_graph_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_nodes_copy_1;; + + => nrel_then: ..proc_of_determining_connected_graph_operator3;; + => nrel_else: ..proc_of_determining_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_connected_graph_operator3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_arcs_copy;; + + => nrel_then: ..proc_of_determining_connected_graph_operator5;; + => nrel_else: ..proc_of_determining_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes_copy_1;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_node_1;; + -> rrel_3: rrel_assign: rrel_scp_var: _node_1;; + + => nrel_then: ..proc_of_determining_one_way_connected_graph_operator6;; + => nrel_else: ..proc_of_determining_one_way_connected_graph_operator_return_true;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_node_1;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator7;; + *);; + + -> .proc_of_determining_connected_graph_operator7 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_nodes_copy_1;; + + => nrel_then: ..proc_of_determining_connected_graph_operator8;; + => nrel_else: ..proc_of_determining_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator8 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes_copy_2;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_node_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _node_2;; + + => nrel_then: ..proc_of_determining_one_way_connected_graph_operator9;; + => nrel_else: ..proc_of_determining_one_way_connected_graph_operator5;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator9 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_node_2;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator10;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator10 + (* + <- contAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _call_one;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator11;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator11 + (* + <- contAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _second_call;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator12;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator12 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_scp_var: _visited_nodes_1;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator13;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator13 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_scp_var: _visited_nodes_2;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator14;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator14 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_check_if_path_exists;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_arcs_copy;; + -> rrel_3: rrel_fixed: rrel_scp_var: _visited_nodes_1;; + -> rrel_4: rrel_fixed: rrel_scp_var: _node_1;; + -> rrel_5: rrel_fixed: rrel_scp_var: _node_2;; + -> rrel_6: rrel_fixed: rrel_scp_var: _call_one;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor_1;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator15;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator15 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor_1;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator16;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator16 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_check_if_path_exists;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_arcs_copy;; + -> rrel_3: rrel_fixed: rrel_scp_var: _visited_nodes_2;; + -> rrel_4: rrel_fixed: rrel_scp_var: _node_2;; + -> rrel_5: rrel_fixed: rrel_scp_var: _node_1;; + -> rrel_6: rrel_fixed: rrel_scp_var: _second_call;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor_2;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator17;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator17 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor_2;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator18;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator18 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _call_one;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_determining_one_way_connected_graph_operator8;; + => nrel_else: ..proc_of_determining_one_way_connected_graph_operator19;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator19 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_call;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_determining_one_way_connected_graph_operator8;; + => nrel_else: ..proc_of_determining_one_way_connected_graph_operator_return_false;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator_return_false + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_one_way_connected_graph;; + -> rrel_2: rrel_assign: rrel_neg_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator_return_true + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_one_way_connected_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_determining_one_way_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_one_way_connected_graph_operator_return + (* + <- return;; + *);; + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_determining_one_way_connected_graph/scp_proc_of_determining_one_way_connected_graph.scs b/programs/graph_programs/proc_of_determining_one_way_connected_graph/scp_proc_of_determining_one_way_connected_graph.scs new file mode 100644 index 0000000..19b0fd7 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_one_way_connected_graph/scp_proc_of_determining_one_way_connected_graph.scs @@ -0,0 +1,36 @@ +proc_of_determining_one_way_connected_graph +=> nrel_main_idtf: + [Программа проверки графа на одностороннюю связность] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_determining_one_way_connected_graph_initiation_condition + => ..scp_proc_of_determining_one_way_connected_graph_result); + +-> rrel_key_sc_element: +concept_graph; +concept_one_way_connected_graph; + +-> rrel_solver_key_sc_element: +concept_one_way_connected_graph; + +<- rrel_key_sc_element: + ..scp_proc_of_determining_one_way_connected_graph_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [Эта программа проверяет исходный граф на одностороннюю связность. В случае односторонней связности графа генерируется позитивная дуга принадлежности от абсолютного понятия "concept_one_way_connected_graph" к сущности "_graph", иначе создаётся негативная дуга.];; + *);; + *);; + + +..scp_proc_of_determining_one_way_connected_graph_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_determining_one_way_connected_graph_result += [* + concept_one_way_connected_graph _-> _graph;; +*];; + diff --git a/programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_determining_strongly_connected_graph.scs b/programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_determining_strongly_connected_graph.scs new file mode 100644 index 0000000..1ed81c6 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_determining_strongly_connected_graph.scs @@ -0,0 +1,263 @@ +scp_program -> proc_of_determining_strongly_connected_graph +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + *);; + + -> rrel_operators: ... + (* + + -> rrel_init: ..proc_of_determining_strongly_connected_graph_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_nodes;; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator2;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_nodes_copy_1;; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator3;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_arcs_copy;; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator5;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes_copy_1;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_node_1;; + -> rrel_3: rrel_assign: rrel_scp_var: _node_1;; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator6;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return_true;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_node_1;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator7;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator7 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_nodes_copy_2;; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator8;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator8 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes_copy_2;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_node_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _node_2;; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator9;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator5;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator9 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_node_2;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator10;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator10 + (* + <- contAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _call_one;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator11;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator11 + (* + <- contAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _second_call;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator12;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator12 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_scp_var: _visited_nodes_1;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator13;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator13 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_scp_var: _visited_nodes_2;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator14;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator14 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_path;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_arcs_copy;; + -> rrel_3: rrel_fixed: rrel_scp_var: _visited_nodes_1;; + -> rrel_4: rrel_fixed: rrel_scp_var: _node_1;; + -> rrel_5: rrel_fixed: rrel_scp_var: _node_2;; + -> rrel_6: rrel_fixed: rrel_scp_var: _call_one;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor_1;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator15;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator15 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor_1;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator16;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator16 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_path;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_arcs_copy;; + -> rrel_3: rrel_fixed: rrel_scp_var: _visited_nodes_2;; + -> rrel_4: rrel_fixed: rrel_scp_var: _node_2;; + -> rrel_5: rrel_fixed: rrel_scp_var: _node_1;; + -> rrel_6: rrel_fixed: rrel_scp_var: _second_call;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor_2;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator17;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator17 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor_2;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator18;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator18 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _call_one;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator19;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return_false;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator19 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_call;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_determining_strongly_connected_graph_operator8;; + => nrel_else: ..proc_of_determining_strongly_connected_graph_operator_return_false;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator_return_false + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_strongly_connected_graph;; + -> rrel_2: rrel_assign: rrel_neg_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator_return_true + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_strongly_connected_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_goto: ..proc_of_determining_strongly_connected_graph_operator_return;; + *);; + + -> ..proc_of_determining_strongly_connected_graph_operator_return + (* + <- return;; + *);; + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_finding_path.scs b/programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_finding_path.scs new file mode 100644 index 0000000..4bcfe07 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_strongly_connected_graph/proc_of_finding_path.scs @@ -0,0 +1,143 @@ +scp_program -> proc_of_finding_path +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph_nodes;; + -> rrel_2: rrel_in: _graph_arcs;; + -> rrel_3: rrel_in: _visited_nodes;; + -> rrel_4: rrel_in: _current_node;; + -> rrel_5: rrel_in: _target_node;; + -> rrel_6: rrel_in: .._call_result;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_path_operator1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _visited_nodes;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_node;; + + => nrel_then: ..proc_of_finding_path_operator_return;; + => nrel_else: ..proc_of_finding_path_operator2;; + *);; + + -> ..proc_of_finding_path_operator2 + (* + <- ifCoin;; + + -> rrel_1: _current_node;; + -> rrel_2: _target_node;; + + => nrel_then: ..proc_of_finding_path_operator_return_true;; + => nrel_else: ..proc_of_finding_path_operator3;; + *);; + + -> ..proc_of_finding_path_operator3 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _visited_nodes;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_node;; + + => nrel_goto: ..proc_of_finding_path_operator4;; + *);; + + -> ..proc_of_finding_path_operator4 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_node;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc1;; + -> rrel_3: rrel_assign: rrel_scp_var: _to_node;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph_arcs;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _incident_nodes;; + + => nrel_then: ..proc_of_finding_path_operator5;; + => nrel_else: ..proc_of_finding_path_operator_return;; + *);; + + -> ..proc_of_finding_path_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _incident_nodes;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_next_node;; + -> rrel_3: rrel_assign: rrel_scp_var: _next_node;; + + => nrel_then: ..proc_of_finding_path_operator6;; + => nrel_else: ..proc_of_finding_path_operator_return;; + *);; + + -> ..proc_of_finding_path_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_next_node;; + + => nrel_goto: ..proc_of_finding_path_operator7;; + *);; + + -> ..proc_of_finding_path_operator7 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_path;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_nodes;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_arcs;; + -> rrel_3: rrel_fixed: rrel_scp_var: _visited_nodes;; + -> rrel_4: rrel_fixed: rrel_scp_var: _next_node;; + -> rrel_5: rrel_fixed: rrel_scp_var: _target_node;; + -> rrel_6: rrel_fixed: rrel_scp_var: .._call_result;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descr;; + + => nrel_goto: ..proc_of_finding_path_operator8;; + *);; + + -> ..proc_of_finding_path_operator8 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descr;; + + => nrel_goto: ..proc_of_finding_path_operator9;; + *);; + + -> ..proc_of_finding_path_operator9 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: .._call_result;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_finding_path_operator_return;; + => nrel_else: ..proc_of_finding_path_operator5;; + *);; + + -> ..proc_of_finding_path_operator_return_true + (* + <- contAssign;; + + -> rrel_1: rrel_fixed: rrel_scp_var: .._call_result;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_path_operator_return;; + *);; + + -> ..proc_of_finding_path_operator_return + (* + <- return;; + *);; + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_determining_strongly_connected_graph/scp_proc_of_determining_strongly_connected_graph.scs b/programs/graph_programs/proc_of_determining_strongly_connected_graph/scp_proc_of_determining_strongly_connected_graph.scs new file mode 100644 index 0000000..fb08c59 --- /dev/null +++ b/programs/graph_programs/proc_of_determining_strongly_connected_graph/scp_proc_of_determining_strongly_connected_graph.scs @@ -0,0 +1,35 @@ +scp_proc_of_determining_strongly_connected_graph +=> nrel_main_idtf: + [Программа проверки графа на cильную связность] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_scp_proc_of_determining_strongly_connected_graph_initiation_condition + => ..scp_proc_of_determining_strongly_connected_graph_result); + +-> rrel_key_sc_element: +concept_graph; +concept_strongly_connected_graph; + +-> rrel_solver_key_sc_element: +concept_strongly_connected_graph; + +<- rrel_key_sc_element: + ..scp_proc_of_determining_strongly_connected_graph_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [Эта программа проверяет исходный граф на сильную связность. В случае сильной связности графа генерируется позитивная дуга принадлежности от абсолютного понятия "concept_strongly_connected_graph" к сущности "_graph", иначе создаётся негативная дуга.];; + *);; + *);; + + +..scp_proc_of_determining_strongly_connected_graph_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_determining_strongly_connected_graph_result += [* + concept_one_way_connected_graph _-> _graph;; +*];; diff --git a/programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_disconnected_graph_decomposing.scs b/programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_disconnected_graph_decomposing.scs new file mode 100644 index 0000000..689b231 --- /dev/null +++ b/programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_disconnected_graph_decomposing.scs @@ -0,0 +1,211 @@ +scp_program -> proc_of_disconnected_graph_decomposing +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _graphs_set;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_disconnected_graph_decomposing_operator3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _vertices_set;; + + => nrel_then: ..proc_of_disconnected_graph_decomposing_operator4;; + => nrel_else: ..proc_of_disconnected_graph_decomposing_operator_return;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator4 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _not_checked_vertices;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator5;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator5 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _edges_set;; + + => nrel_then: ..proc_of_disconnected_graph_decomposing_operator6;; + => nrel_else: ..proc_of_disconnected_graph_decomposing_operator_return;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator6 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _not_checked_edges;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator7;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator7 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graphs_set;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator8;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator8 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _current_subgraph;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator9_0;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator9_0 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Subgraph has been created.];; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator9;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + => nrel_then: ..proc_of_disconnected_graph_decomposing_operator10;; + => nrel_else: ..proc_of_disconnected_graph_decomposing_operator12;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator10 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_component;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_3: rrel_fixed: rrel_scp_var: _not_checked_vertices;; + -> rrel_4: rrel_fixed: rrel_scp_var: _current_subgraph;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator11;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator11 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator11_0;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator11_0 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + => nrel_then: ..proc_of_disconnected_graph_decomposing_operator8;; + => nrel_else: ..proc_of_disconnected_graph_decomposing_operator12;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator12 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _current_subgraph;; + + => nrel_then: ..proc_of_disconnected_graph_decomposing_operator13;; + => nrel_else: ..proc_of_disconnected_graph_decomposing_operator_decomposing;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator13 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator14;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator14 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_graph_minimum_spanning_tree;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_scp_var: _tree;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator15;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator15 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator12;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator_decomposing + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_const: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_2: rrel_fixed: rrel_scp_const: nrel_disconnected_graph_decomposing;; + + => nrel_goto: ..proc_of_disconnected_graph_decomposing_operator_return;; + *);; + + -> ..proc_of_disconnected_graph_decomposing_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_finding_connected_component2.scs b/programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_finding_connected_component2.scs new file mode 100644 index 0000000..8d04b9c --- /dev/null +++ b/programs/graph_programs/proc_of_disconnected_graph_decomposing/proc_of_finding_connected_component2.scs @@ -0,0 +1,211 @@ +scp_program -> proc_of_finding_connected_component2 +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _current_vertex;; + -> rrel_3: rrel_in: _not_checked_vertices;; + -> rrel_4: rrel_in: _current_subgraph;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_connected_component2_operator1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + + => nrel_then: ..proc_of_finding_connected_component2_operator2;; + => nrel_else: ..proc_of_finding_connected_component2_operator_return;; + *);; + + -> ..proc_of_finding_connected_component2_operator2 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator3;; + *);; + + -> ..proc_of_finding_connected_component2_operator3 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator4;; + *);; + + -> ..proc_of_finding_connected_component2_operator4 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_connected_component2_operator5_1;; + => nrel_else: ..proc_of_finding_connected_component2_operator5_2;; + *);; + + -> ..proc_of_finding_connected_component2_operator5_1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_3: rrel_fixed: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_connected_component2_operator6;; + => nrel_else: ..proc_of_finding_connected_component2_operator6;; + *);; + + -> ..proc_of_finding_connected_component2_operator5_2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_connected_component2_operator6;; + => nrel_else: ..proc_of_finding_connected_component2_operator_return;; + *);; + + -> ..proc_of_finding_connected_component2_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_component2_operator7;; + => nrel_else: ..proc_of_finding_connected_component2_operator_return;; + *);; + + -> ..proc_of_finding_connected_component2_operator7 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator8;; + *);; + + -> ..proc_of_finding_connected_component2_operator8 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _not_checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_component2_operator9;; + => nrel_else: ..proc_of_finding_connected_component2_operator6;; + *);; + + -> ..proc_of_finding_connected_component2_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _current_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_component2_operator10;; + => nrel_else: ..proc_of_finding_connected_component2_operator11;; + *);; + + -> ..proc_of_finding_connected_component2_operator10 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator11;; + *);; + + -> ..proc_of_finding_connected_component2_operator11 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _current_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + + => nrel_then: ..proc_of_finding_connected_component2_operator12;; + => nrel_else: ..proc_of_finding_connected_component2_operator13;; + *);; + + -> ..proc_of_finding_connected_component2_operator12 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator13;; + *);; + + -> ..proc_of_finding_connected_component2_operator13 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_component2;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_3: rrel_fixed: rrel_scp_var: _not_checked_vertices;; + -> rrel_4: rrel_fixed: rrel_scp_var: _current_subgraph;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator14;; + *);; + + -> ..proc_of_finding_connected_component2_operator14 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_connected_component2_operator6;; + *);; + + -> ..proc_of_finding_connected_component2_operator_return + (* + <- return;; + *);; + *);; + +*);; diff --git a/programs/graph_programs/proc_of_disconnected_graph_decomposing/scp_proc_of_disconnected_graph_decomposing.scs b/programs/graph_programs/proc_of_disconnected_graph_decomposing/scp_proc_of_disconnected_graph_decomposing.scs new file mode 100644 index 0000000..4f31049 --- /dev/null +++ b/programs/graph_programs/proc_of_disconnected_graph_decomposing/scp_proc_of_disconnected_graph_decomposing.scs @@ -0,0 +1,36 @@ +proc_of_disconnected_graph_decomposing +=> nrel_main_idtf: + [Программа разложения несвязного графа на множество компонент связности] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_disconnected_graph_decomposing_initiation_condition + => ..scp_proc_of_disconnected_graph_decomposing_result); + +-> rrel_key_sc_element: +concept_graph; +concept_disconnected_graph; +nrel_disconnected_graph_decomposing; + +-> rrel_solver_key_sc_element: +nrel_disconnected_graph_decomposing; + +<- rrel_key_sc_element: + ..scp_proc_of_disconnected_graph_decomposing_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит множество компонент связности графа и генерирует дугу принадлежности от относительного понятия "nrel_disconnected_graph_decomposing" к связке сущности "_graph" и найденного множества его компонент связности. ];; + *);; + *);; + + +..scp_proc_of_disconnected_graph_decomposing_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_disconnected_graph_decomposing_result += [* + _graph _=> nrel_disconnected_graph_decomposing:: _graph_set;; +*];; diff --git a/programs/graph_programs/proc_of_finding_chains_set/proc_chains_finder_helper.scs b/programs/graph_programs/proc_of_finding_chains_set/proc_chains_finder_helper.scs new file mode 100644 index 0000000..7887f34 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_chains_set/proc_chains_finder_helper.scs @@ -0,0 +1,189 @@ +scp_program -> proc_chains_finder_helper +(* + + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _current_chain;; + -> rrel_3: rrel_in: _previous_vertex;; + -> rrel_4: rrel_in: _current_arc;; + -> rrel_5: rrel_in: _result;; + *);; + + -> rrel_operators: ... + (* + + -> rrel_init: ..check_if_arc_already_exists_in_chain + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_arc;; + + => nrel_then: ..stop_program_execution;; + => nrel_else: ..add_current_arc_to_current_chain;; + *);; + + -> ..add_current_arc_to_current_chain + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _added_arc;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_arc;; + + => nrel_goto: ..copy_current_chain;; + *);; + + -> ..copy_current_chain + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _current_chain_copy;; + + => nrel_then: ..add_current_chain_to_result;; + => nrel_else: ..erase_added_arc_and_stop_program_execution;; + *);; + + -> ..add_current_chain_to_result + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _result;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_chain_copy;; + + => nrel_goto: ..get_vertices_set;; + *);; + + -> ..get_vertices_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..get_arcs_set;; + => nrel_else: ..erase_added_arc_and_stop_program_execution;; + *);; + + -> ..get_arcs_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_arcs;; + + => nrel_then: ..get_next_vertex_from_previous_vertex_through_current_arc;; + => nrel_else: ..erase_added_arc_and_stop_program_execution;; + *);; + + -> ..get_next_vertex_from_previous_vertex_through_current_arc + (* + <- searchElStr3;; + + -> rrel_1: rrel_assign: rrel_scp_var: _null_sc_var_1;; + -> rrel_2: rrel_fixed: rrel_edge: rrel_scp_var: _current_arc;; + -> rrel_3: rrel_assign: rrel_scp_var: _next_vertex;; + + => nrel_then: ..get_incident_arcs_for_next_vertex;; + => nrel_else: ..erase_added_arc_and_stop_program_execution;; + *);; + + -> ..get_incident_arcs_for_next_vertex + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _next_vertex;; + -> rrel_2: rrel_assign: rrel_edge: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph_arcs;; + + -> rrel_set_2: rrel_assign: rrel_scp_var: _incident_arcs_for_next_vertex;; + + => nrel_then: ..iterate_over_incident_arcs_for_next_vertex;; + => nrel_else: ..erase_added_arc_and_stop_program_execution;; + *);; + + -> ..iterate_over_incident_arcs_for_next_vertex + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _incident_arcs_for_next_vertex;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_iterated_arc;; + -> rrel_3: rrel_assign: rrel_scp_var: _next_arc;; + + => nrel_then: ..erase_arc_to_iterated_arc;; + => nrel_else: ..erase_added_arc_and_stop_program_execution;; + *);; + + -> ..erase_arc_to_iterated_arc + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_iterated_arc;; + + => nrel_goto: ..continue_depth_search;; + *);; + + -> ..continue_depth_search + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_chains_finder_helper;; + -> rrel_2: rrel_fixed: rrel_scp_const: ..call_params + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _current_chain;; + -> rrel_3: rrel_fixed: rrel_scp_var: _next_vertex;; + -> rrel_4: rrel_fixed: rrel_scp_var: _next_arc;; + + -> rrel_5: rrel_fixed: rrel_scp_var: _result;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..wait_recursion_return;; + *);; + + -> ..wait_recursion_return + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..iterate_over_incident_arcs_for_next_vertex;; + *);; + + -> ..erase_added_arc_and_stop_program_execution + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _added_arc;; + + => nrel_goto: ..stop_program_execution;; + *);; + + -> ..stop_program_execution + (* + <- return;; + *);; + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_finding_chains_set/proc_of_finding_chains_set.scs b/programs/graph_programs/proc_of_finding_chains_set/proc_of_finding_chains_set.scs new file mode 100644 index 0000000..a322ab9 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_chains_set/proc_of_finding_chains_set.scs @@ -0,0 +1,168 @@ +scp_program -> proc_of_finding_chains_set +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _result;; + *);; + + -> rrel_operators: ... + (* + + -> rrel_init: ..gen_result + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _result;; + + => nrel_goto: ..get_vertices_set;; + *);; + + -> ..get_vertices_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..get_arcs_set;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..get_arcs_set + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graph_arcs;; + + => nrel_then: ..create_empty_chain_set;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..create_empty_chain_set + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_node: rrel_scp_var: _current_chain;; + + => nrel_goto: ..iterate_over_graph_vertices;; + *);; + + -> ..iterate_over_graph_vertices + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_current_iterated_vertex;; + -> rrel_3: rrel_assign: rrel_scp_var: _current_vertex;; + + => nrel_then: ..erase_arc_to_current_iterated_vertex;; + => nrel_else: ..stop_program_execution;; + *);; + + -> ..erase_arc_to_current_iterated_vertex + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_current_iterated_vertex;; + + => nrel_goto: ..get_incident_arcs_for_current_iterated_vertex;; + *);; + + -> ..get_incident_arcs_for_current_iterated_vertex + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_edge: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_assign: rrel_scp_var: _null_sc_var_3;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph_arcs;; + + -> rrel_set_2: rrel_assign: rrel_scp_var: _incident_arcs_for_current_iterated_vertex;; + + => nrel_then: ..iterate_over_incident_arcs_for_current_iterated_vertex;; + => nrel_else: ..iterate_over_graph_vertices;; + *);; + + -> ..iterate_over_incident_arcs_for_current_iterated_vertex + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _incident_arcs_for_current_iterated_vertex;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc_to_current_iterated_arc;; + -> rrel_3: rrel_assign: rrel_scp_var: _current_arc;; + + => nrel_then: ..erase_arc_to_current_iterated_arc;; + => nrel_else: ..iterate_over_graph_vertices;; + *);; + + -> ..erase_arc_to_current_iterated_arc + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc_to_current_iterated_arc;; + + => nrel_goto: ..perform_depth_search_with_forming_all_chains_from_current_vertex_through_current_arc;; + *);; + + -> ..perform_depth_search_with_forming_all_chains_from_current_vertex_through_current_arc + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_chains_finder_helper;; + -> rrel_2: rrel_fixed: rrel_scp_const: ..call_params + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _current_chain;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_4: rrel_fixed: rrel_scp_var: _current_arc;; + -> rrel_5: rrel_fixed: rrel_scp_var: _result;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..wait_recursion_return;; + *);; + + -> ..wait_recursion_return + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _recursion_call_descriptor;; + + => nrel_goto: ..iterate_over_incident_arcs_for_current_iterated_vertex;; + *);; + + -> ..stop_program_execution + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _null_sc_var_2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _result;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _null_sc_var_4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_chains_set;; + + => nrel_goto: ..return;; + *);; + + -> ..return + (* + <- return;; + *);; + + + *);; + +*);; diff --git a/programs/graph_programs/proc_of_finding_chains_set/scp_proc_of_finding_chains_set.scs b/programs/graph_programs/proc_of_finding_chains_set/scp_proc_of_finding_chains_set.scs new file mode 100644 index 0000000..7709f70 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_chains_set/scp_proc_of_finding_chains_set.scs @@ -0,0 +1,35 @@ +proc_of_finding_chains_set +=> nrel_main_idtf: + [Программа нахождения множества всех цепей исходного графа] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_chains_set_initiation_condition + => ..scp_proc_of_finding_chains_set_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_chains_set; + +-> rrel_solver_key_sc_element: +nrel_chains_set; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_chains_set_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит множество всех цепей исходного графа и генерирует дугу принадлежности от относительного понятия "nrel_chains_set" к связке сущности "_graph" и найденного множества его цепей. ];; + *);; + *);; + + +..scp_proc_of_finding_chains_set_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_chains_set_result += [* + _graph _=> nrel_chains_set:: _graph_set;; +*];; diff --git a/programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_component.scs b/programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_component.scs new file mode 100644 index 0000000..3f14d46 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_component.scs @@ -0,0 +1,199 @@ +scp_program -> proc_of_finding_connected_component +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _current_vertex;; + -> rrel_3: rrel_in: _checked_vertices;; + -> rrel_4: rrel_in: _current_subgraph;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_connected_component_operator1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + + => nrel_then: ..proc_of_finding_connected_component_operator_return;; + => nrel_else: ..proc_of_finding_connected_component_operator2;; + *);; + + -> ..proc_of_finding_connected_component_operator2 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + + => nrel_goto: ..proc_of_finding_connected_component_operator3;; + *);; + + -> ..proc_of_finding_connected_component_operator3 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_connected_component_operator4;; + *);; + + -> ..proc_of_finding_connected_component_operator4 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_connected_component_operator5_1;; + => nrel_else: ..proc_of_finding_connected_component_operator5_2;; + *);; + + -> ..proc_of_finding_connected_component_operator5_1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_3: rrel_fixed: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_connected_component_operator6;; + => nrel_else: ..proc_of_finding_connected_component_operator6;; + *);; + + -> ..proc_of_finding_connected_component_operator5_2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_connected_component_operator6;; + => nrel_else: ..proc_of_finding_connected_component_operator_return;; + *);; + + -> ..proc_of_finding_connected_component_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_component_operator7;; + => nrel_else: ..proc_of_finding_connected_component_operator_return;; + *);; + + -> ..proc_of_finding_connected_component_operator7 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_connected_component_operator9;; + *);; + + -> ..proc_of_finding_connected_component_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _current_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_component_operator10;; + => nrel_else: ..proc_of_finding_connected_component_operator11;; + *);; + + -> ..proc_of_finding_connected_component_operator10 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_connected_component_operator11;; + *);; + + -> ..proc_of_finding_connected_component_operator11 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _current_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_vertex;; + + => nrel_then: ..proc_of_finding_connected_component_operator12;; + => nrel_else: ..proc_of_finding_connected_component_operator13;; + *);; + + -> ..proc_of_finding_connected_component_operator12 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_connected_component_operator13;; + *);; + + -> ..proc_of_finding_connected_component_operator13 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_component;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_3: rrel_fixed: rrel_scp_var: _checked_vertices;; + -> rrel_4: rrel_fixed: rrel_scp_var: _current_subgraph;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_connected_component_operator14;; + *);; + + -> ..proc_of_finding_connected_component_operator14 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_connected_component_operator6;; + *);; + + -> ..proc_of_finding_connected_component_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_components_number.scs b/programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_components_number.scs new file mode 100644 index 0000000..8e3a5c6 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_connected_components_number/proc_of_finding_connected_components_number.scs @@ -0,0 +1,171 @@ +scp_program -> proc_of_finding_connected_components_number +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _connected_components_number;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_connected_components_number_operator0_1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _checked_vertices;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator0;; + *);; + + -> ..proc_of_finding_connected_components_number_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _connected_components_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator1;; + *);; + + -> ..proc_of_finding_connected_components_number_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..proc_of_finding_connected_components_number_operator2;; + => nrel_else: ..proc_of_finding_connected_components_number_operator_return;; + *);; + + -> ..proc_of_finding_connected_components_number_operator2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_components_number_operator3;; + => nrel_else: ..proc_of_finding_connected_components_number_operator_return;; + *);; + + -> ..proc_of_finding_connected_components_number_operator3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator4;; + *);; + + -> ..proc_of_finding_connected_components_number_operator4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _checked_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_connected_components_number_operator2;; + => nrel_else: ..proc_of_finding_connected_components_number_operator5_0;; + *);; + + -> ..proc_of_finding_connected_components_number_operator5_0 + (* + <- printEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _checked_vertices;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator5;; + *);; + + -> ..proc_of_finding_connected_components_number_operator5 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _current_subgraph;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator6;; + *);; + + -> ..proc_of_finding_connected_components_number_operator6 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_component;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_3: rrel_fixed: rrel_scp_var: _checked_vertices;; + -> rrel_4: rrel_fixed: rrel_scp_var: _current_subgraph;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator7;; + *);; + + -> ..proc_of_finding_connected_components_number_operator7 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator8;; + *);; + + -> ..proc_of_finding_connected_components_number_operator8 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator9;; + *);; + + -> ..proc_of_finding_connected_components_number_operator9 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _connected_components_number;; + -> rrel_2: rrel_fixed: rrel_scp_var: _temp;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator10;; + *);; + + -> ..proc_of_finding_connected_components_number_operator10 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _current_subgraph;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator2;; + *);; + + -> ..proc_of_finding_connected_components_number_operator_return + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_const: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_connected_components_number;; + + => nrel_goto: ..proc_of_finding_connected_components_number_operator_return_end;; + *);; + + -> ..proc_of_finding_connected_components_number_operator_return_end + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_connected_components_number/scp_proc_of_finding_connected_components_number.scs b/programs/graph_programs/proc_of_finding_connected_components_number/scp_proc_of_finding_connected_components_number.scs new file mode 100644 index 0000000..1e16547 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_connected_components_number/scp_proc_of_finding_connected_components_number.scs @@ -0,0 +1,37 @@ +proc_of_finding_connected_components_number +=> nrel_main_idtf: + [Программа нахождения числа компонент связности] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_connected_components_number_initiation_condition + => ..scp_proc_of_finding_connected_components_number_result); + +-> rrel_key_sc_element: +concept_graph; +concept_disconnected_graph; +nrel_connected_components_number; + +-> rrel_solver_key_sc_element: +nrel_connected_components_number; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_connected_components_number_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит число компонент связности графа и генерирует дугу принадлежности от относительного понятия "nrel_connected_components_number" к связке сущности "_graph" и найденного числа его компонент связности. ];; + *);; + *);; + + +..scp_proc_of_finding_connected_components_number_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_connected_components_number_result += [* + _graph _=> nrel_connected_components_number:: _connected_components_number;; +*];; + diff --git a/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_checking_if_edges_deleting_going_to_increase_cc_number.scs b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_checking_if_edges_deleting_going_to_increase_cc_number.scs new file mode 100644 index 0000000..d3d8a2d --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_checking_if_edges_deleting_going_to_increase_cc_number.scs @@ -0,0 +1,186 @@ +scp_program -> proc_of_checking_if_edges_deleting_going_to_increase_cc_number +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _deleting_edges;; + -> rrel_3: rrel_in: _connected_components_number;; + -> rrel_4: rrel_out: _is_going;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_going;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator1;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_deleting_edges;; + + => nrel_then: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator2;; + => nrel_else: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator_return;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + => nrel_then: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator3;; + => nrel_else: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator6;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator4;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _del_edge;; + + => nrel_then: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator5;; + => nrel_else: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator2;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator5 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator2;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator6 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_components_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_scp_var: _del_connected_components_number;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator7;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator7 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator8;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator8 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_deleting_edges;; + + => nrel_then: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator9;; + => nrel_else: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator_return;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + => nrel_then: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator10;; + => nrel_else: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator12;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator10 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator11;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator11 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _del_edge;; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator9;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator12 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator13;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator13 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _del_connected_components_number;; + + => nrel_then: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator14;; + => nrel_else: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator_return;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator14 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_going;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator_return;; + *);; + + -> ..proc_of_checking_if_edges_deleting_going_to_increase_cc_number_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_chosing_cut_for_max.scs b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_chosing_cut_for_max.scs new file mode 100644 index 0000000..5f84140 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_chosing_cut_for_max.scs @@ -0,0 +1,255 @@ +scp_program -> proc_of_chosing_cut_for_max +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _connected_components_number;; + -> rrel_3: rrel_in: _deleting_edges;; + -> rrel_4: rrel_in: _maximum_cut;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_chosing_cut_for_max_operator1 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_checking_if_edges_deleting_going_to_increase_cc_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_3: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_4: rrel_assign: rrel_scp_var: _is_going;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator2;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator2 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator3;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator3 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_going;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator4;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator12;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator4 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_edges_size;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _maximum_cut;; + -> rrel_2: rrel_assign: rrel_scp_var: _maximum_cut_size;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator5;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator5 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator6;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator6 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _maximum_cut_size;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator10;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator7;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator7 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_edges_size;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_scp_var: _deleting_edges_size;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator8;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator8 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator9;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator9 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges_size;; + -> rrel_2: rrel_fixed: rrel_scp_var: _maximum_cut_size;; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator10;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator_return;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator10 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _maximum_cut;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator11_0;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator11;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator11_0 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator11;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator11 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + -> rrel_set_3: rrel_fixed: rrel_scp_var: _maximum_cut;; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator12;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator_return;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator12 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _edges_set;; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator13;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator_return;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator13 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator14;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator_return;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator14 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator15_0;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator15_0 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _maximum_cut;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_chosing_cut_for_max_operator13;; + => nrel_else: ..proc_of_chosing_cut_for_max_operator15;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator15 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator16;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator16 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_chosing_cut_for_max;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_4: rrel_fixed: rrel_scp_var: _maximum_cut;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator17;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator17 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator18;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator18 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_chosing_cut_for_max_operator13;; + *);; + + -> ..proc_of_chosing_cut_for_max_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_edges_size.scs b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_edges_size.scs new file mode 100644 index 0000000..b62715c --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_edges_size.scs @@ -0,0 +1,82 @@ +scp_program -> proc_of_finding_edges_size +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _edges_set;; + -> rrel_2: rrel_out: _size;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_edges_size_operator1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _size;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_edges_size_operator2;; + *);; + + -> ..proc_of_finding_edges_size_operator2 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_edges_set;; + + => nrel_then: ..proc_of_finding_edges_size_operator3;; + => nrel_else: ..proc_of_finding_edges_size_operator_return;; + *);; + + -> ..proc_of_finding_edges_size_operator3 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_finding_edges_size_operator4;; + => nrel_else: ..proc_of_finding_edges_size_operator_return;; + *);; + + -> ..proc_of_finding_edges_size_operator4 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_edges_size_operator5;; + *);; + + -> ..proc_of_finding_edges_size_operator5 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _size;; + -> rrel_3: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_edges_size_operator6;; + *);; + + -> ..proc_of_finding_edges_size_operator6 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _size;; + -> rrel_2: rrel_fixed: rrel_scp_var: _temp;; + + => nrel_goto: ..proc_of_finding_edges_size_operator3;; + *);; + + -> ..proc_of_finding_edges_size_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_maximum_cut.scs b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_maximum_cut.scs new file mode 100644 index 0000000..5abd9e4 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_maximum_cut/proc_of_finding_maximum_cut.scs @@ -0,0 +1,145 @@ +scp_program -> proc_of_finding_maximum_cut +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _maximum_cut;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_maximum_cut_operator1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _maximum_cut;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator2;; + *);; + + -> ..proc_of_finding_maximum_cut_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_edges;; + + => nrel_then: ..proc_of_finding_maximum_cut_operator3;; + => nrel_else: ..proc_of_finding_maximum_cut_operator_return;; + *);; + + -> ..proc_of_finding_maximum_cut_operator3 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_components_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_scp_var: _connected_components_number;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator4;; + *);; + + -> ..proc_of_finding_maximum_cut_operator4 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator5;; + *);; + + -> ..proc_of_finding_maximum_cut_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_finding_maximum_cut_operator6;; + => nrel_else: ..proc_of_finding_maximum_cut_operator_success;; + *);; + + -> ..proc_of_finding_maximum_cut_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator7;; + *);; + + -> ..proc_of_finding_maximum_cut_operator7 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _deleting_edges;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator8;; + *);; + + -> ..proc_of_finding_maximum_cut_operator8 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator9;; + *);; + + -> ..proc_of_finding_maximum_cut_operator9 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_chosing_cut;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_4: rrel_fixed: rrel_scp_var: _maximum_cut;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator10;; + *);; + + -> ..proc_of_finding_maximum_cut_operator10 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator5;; + *);; + + -> ..proc_of_finding_maximum_cut_operator_success + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_const: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _maximum_cut;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_maximum_cut;; + + => nrel_goto: ..proc_of_finding_maximum_cut_operator_return;; + *);; + + -> ..proc_of_finding_maximum_cut_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_maximum_cut/scp_proc_of_finding_maximum_cut.scs b/programs/graph_programs/proc_of_finding_graph_maximum_cut/scp_proc_of_finding_maximum_cut.scs new file mode 100644 index 0000000..a8b79ae --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_maximum_cut/scp_proc_of_finding_maximum_cut.scs @@ -0,0 +1,36 @@ +proc_of_finding_maximum_cut +=> nrel_main_idtf: + [Программа нахождения максимального разреза в графе] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_maximum_cut_initiation_condition + => ..scp_proc_of_finding_maximum_cut_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_maximum_cut; + +-> rrel_solver_key_sc_element: +nrel_maximum_cut; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_maximum_cut_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит максимальный разрез в графе и генерирует дугу принадлежности от относительного понятия "nrel_maximum_cut" к связке сущности "_graph" и найденного его максимального разреза. ];; + *);; + *);; + + +..scp_proc_of_finding_maximum_cut_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_maximum_cut_result += [* + _graph _=> nrel_maximum_cut:: _maximum_cut;; +*];; + diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_checking_if_cut.scs b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_checking_if_cut.scs new file mode 100644 index 0000000..cc45885 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_checking_if_cut.scs @@ -0,0 +1,186 @@ +scp_program -> proc_of_checking_if_cut +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _deleting_edges;; + -> rrel_3: rrel_in: _connected_components_number;; + -> rrel_4: rrel_out: _is_going;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_checking_if_cut_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_going;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_checking_if_cut_operator1;; + *);; + + -> ..proc_of_checking_if_cut_operator1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_deleting_edges;; + + => nrel_then: ..proc_of_checking_if_cut_operator2;; + => nrel_else: ..proc_of_checking_if_cut_operator_return;; + *);; + + -> ..proc_of_checking_if_cut_operator2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + => nrel_then: ..proc_of_checking_if_cut_operator3;; + => nrel_else: ..proc_of_checking_if_cut_operator6;; + *);; + + -> ..proc_of_checking_if_cut_operator3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_cut_operator4;; + *);; + + -> ..proc_of_checking_if_cut_operator4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _del_edge;; + + => nrel_then: ..proc_of_checking_if_cut_operator5;; + => nrel_else: ..proc_of_checking_if_cut_operator2;; + *);; + + -> ..proc_of_checking_if_cut_operator5 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_cut_operator2;; + *);; + + -> ..proc_of_checking_if_cut_operator6 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_components_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_scp_var: _del_connected_components_number;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_checking_if_cut_operator7;; + *);; + + -> ..proc_of_checking_if_cut_operator7 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_checking_if_cut_operator8;; + *);; + + -> ..proc_of_checking_if_cut_operator8 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_deleting_edges;; + + => nrel_then: ..proc_of_checking_if_cut_operator9;; + => nrel_else: ..proc_of_checking_if_cut_operator_return;; + *);; + + -> ..proc_of_checking_if_cut_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _del_edge;; + + => nrel_then: ..proc_of_checking_if_cut_operator10;; + => nrel_else: ..proc_of_checking_if_cut_operator12;; + *);; + + -> ..proc_of_checking_if_cut_operator10 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_checking_if_cut_operator11;; + *);; + + -> ..proc_of_checking_if_cut_operator11 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _del_edge;; + + => nrel_goto: ..proc_of_checking_if_cut_operator9;; + *);; + + -> ..proc_of_checking_if_cut_operator12 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_cut_operator13;; + *);; + + -> ..proc_of_checking_if_cut_operator13 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _del_connected_components_number;; + + => nrel_then: ..proc_of_checking_if_cut_operator14;; + => nrel_else: ..proc_of_checking_if_cut_operator_return;; + *);; + + -> ..proc_of_checking_if_cut_operator14 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_going;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_checking_if_cut_operator_return;; + *);; + + -> ..proc_of_checking_if_cut_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_chosing_cut.scs b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_chosing_cut.scs new file mode 100644 index 0000000..87f1e38 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_chosing_cut.scs @@ -0,0 +1,255 @@ +scp_program -> proc_of_chosing_cut +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _connected_components_number;; + -> rrel_3: rrel_in: _deleting_edges;; + -> rrel_4: rrel_in: _minimum_cut;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_chosing_cut_operator1 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_checking_if_cut;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_3: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_4: rrel_assign: rrel_scp_var: _is_going;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator2;; + *);; + + -> ..proc_of_chosing_cut_operator2 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator3;; + *);; + + -> ..proc_of_chosing_cut_operator3 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_going;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_chosing_cut_operator4;; + => nrel_else: ..proc_of_chosing_cut_operator12;; + *);; + + -> ..proc_of_chosing_cut_operator4 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_edges_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_cut;; + -> rrel_2: rrel_assign: rrel_scp_var: _minimum_cut_weigth;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator5;; + *);; + + -> ..proc_of_chosing_cut_operator5 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator6;; + *);; + + -> ..proc_of_chosing_cut_operator6 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_cut_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_of_chosing_cut_operator10;; + => nrel_else: ..proc_of_chosing_cut_operator7;; + *);; + + -> ..proc_of_chosing_cut_operator7 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_edges_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_scp_var: _deleting_edges_weigth;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator8;; + *);; + + -> ..proc_of_chosing_cut_operator8 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator9;; + *);; + + -> ..proc_of_chosing_cut_operator9 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_var: _minimum_cut_weigth;; + + => nrel_then: ..proc_of_chosing_cut_operator10;; + => nrel_else: ..proc_of_chosing_cut_operator_return;; + *);; + + -> ..proc_of_chosing_cut_operator10 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_cut;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + => nrel_then: ..proc_of_chosing_cut_operator11_0;; + => nrel_else: ..proc_of_chosing_cut_operator11;; + *);; + + -> ..proc_of_chosing_cut_operator11_0 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_chosing_cut_operator11;; + *);; + + -> ..proc_of_chosing_cut_operator11 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + -> rrel_set_3: rrel_fixed: rrel_scp_var: _minimum_cut;; + + => nrel_then: ..proc_of_chosing_cut_operator12;; + => nrel_else: ..proc_of_chosing_cut_operator_return;; + *);; + + -> ..proc_of_chosing_cut_operator12 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _edges_set;; + + => nrel_then: ..proc_of_chosing_cut_operator13;; + => nrel_else: ..proc_of_chosing_cut_operator_return;; + *);; + + -> ..proc_of_chosing_cut_operator13 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_chosing_cut_operator14;; + => nrel_else: ..proc_of_chosing_cut_operator_return;; + *);; + + -> ..proc_of_chosing_cut_operator14 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_chosing_cut_operator15_0;; + *);; + + -> ..proc_of_chosing_cut_operator15_0 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_cut;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_chosing_cut_operator13;; + => nrel_else: ..proc_of_chosing_cut_operator15;; + *);; + + -> ..proc_of_chosing_cut_operator15 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + => nrel_goto: ..proc_of_chosing_cut_operator16;; + *);; + + -> ..proc_of_chosing_cut_operator16 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_chosing_cut;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_4: rrel_fixed: rrel_scp_var: _minimum_cut;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator17;; + *);; + + -> ..proc_of_chosing_cut_operator17 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_chosing_cut_operator18;; + *);; + + -> ..proc_of_chosing_cut_operator18 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_chosing_cut_operator13;; + *);; + + -> ..proc_of_chosing_cut_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_edges_weigth.scs b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_edges_weigth.scs new file mode 100644 index 0000000..d3b9f69 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_edges_weigth.scs @@ -0,0 +1,143 @@ +scp_program -> proc_of_finding_edges_weigth +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _edges_set;; + -> rrel_2: rrel_out: _weigth;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_edges_weigth_operator1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _weigth;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_edges_weigth_operator2;; + *);; + + -> ..proc_of_finding_edges_weigth_operator2 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_edges_set;; + + => nrel_then: ..proc_of_finding_edges_weigth_operator3;; + => nrel_else: ..proc_of_finding_edges_weigth_operator_return;; + *);; + + -> ..proc_of_finding_edges_weigth_operator3 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_edges_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_finding_edges_weigth_operator4;; + => nrel_else: ..proc_of_finding_edges_weigth_operator_return;; + *);; + + -> ..proc_of_finding_edges_weigth_operator4 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_edges_weigth_operator5;; + *);; + + -> ..proc_of_finding_edges_weigth_operator5 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_assign: rrel_scp_var: _weigth_node;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _set_with_weigth;; + + => nrel_then: ..proc_of_finding_edges_weigth_operator6;; + => nrel_else: ..proc_of_finding_edges_weigth_operator3;; + *);; + + -> ..proc_of_finding_edges_weigth_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set_with_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _weigth_node;; + + => nrel_then: ..proc_of_finding_edges_weigth_operator7;; + => nrel_else: ..proc_of_finding_edges_weigth_operator_return;; + *);; + + -> ..proc_of_finding_edges_weigth_operator7 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_edges_weigth_operator8;; + *);; + + -> ..proc_of_finding_edges_weigth_operator8 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _weigth_node;; + + => nrel_then: ..proc_of_finding_edges_weigth_operator9;; + => nrel_else: ..proc_of_finding_edges_weigth_operator6;; + *);; + + -> ..proc_of_finding_edges_weigth_operator9 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _weigth_node;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: rrel_link: _edge_weigth;; + -> rrel_4: rrel_assign: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + => nrel_then: ..proc_of_finding_edges_weigth_operator10;; + => nrel_else: ..proc_of_finding_edges_weigth_operator6;; + *);; + + -> ..proc_of_finding_edges_weigth_operator10 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _weigth;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_goto: ..proc_of_finding_edges_weigth_operator11;; + *);; + + -> ..proc_of_finding_edges_weigth_operator11 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _weigth;; + -> rrel_2: rrel_fixed: rrel_scp_var: _temp;; + + => nrel_goto: ..proc_of_finding_edges_weigth_operator3;; + *);; + + -> ..proc_of_finding_edges_weigth_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_minimum_cut.scs b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_minimum_cut.scs new file mode 100644 index 0000000..4747786 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_cut/proc_of_finding_minimum_cut.scs @@ -0,0 +1,145 @@ +scp_program -> proc_of_finding_minimum_cut +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _minimum_cut;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_minimum_cut_operator1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _minimum_cut;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator2;; + *);; + + -> ..proc_of_finding_minimum_cut_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_edges;; + + => nrel_then: ..proc_of_finding_minimum_cut_operator3;; + => nrel_else: ..proc_of_finding_minimum_cut_operator_return;; + *);; + + -> ..proc_of_finding_minimum_cut_operator3 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_connected_components_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_scp_var: _connected_components_number;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator4;; + *);; + + -> ..proc_of_finding_minimum_cut_operator4 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator5;; + *);; + + -> ..proc_of_finding_minimum_cut_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + + => nrel_then: ..proc_of_finding_minimum_cut_operator6;; + => nrel_else: ..proc_of_finding_minimum_cut_operator_success;; + *);; + + -> ..proc_of_finding_minimum_cut_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator7;; + *);; + + -> ..proc_of_finding_minimum_cut_operator7 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _deleting_edges;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator8;; + *);; + + -> ..proc_of_finding_minimum_cut_operator8 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator9;; + *);; + + -> ..proc_of_finding_minimum_cut_operator9 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_chosing_cut;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _connected_components_number;; + -> rrel_3: rrel_fixed: rrel_scp_var: _deleting_edges;; + -> rrel_4: rrel_fixed: rrel_scp_var: _minimum_cut;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator10;; + *);; + + -> ..proc_of_finding_minimum_cut_operator10 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator5;; + *);; + + -> ..proc_of_finding_minimum_cut_operator_success + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_const: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _minimum_cut;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_minimum_cut;; + + => nrel_goto: ..proc_of_finding_minimum_cut_operator_return;; + *);; + + -> ..proc_of_finding_minimum_cut_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_cut/scp_proc_of_finding_minimum_cut.scs b/programs/graph_programs/proc_of_finding_graph_minimum_cut/scp_proc_of_finding_minimum_cut.scs new file mode 100644 index 0000000..7a0c295 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_cut/scp_proc_of_finding_minimum_cut.scs @@ -0,0 +1,35 @@ +proc_of_finding_minimum_cut +=> nrel_main_idtf: + [Программа нахождения минимального разреза в графе] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_minimum_cut_initiation_condition + => ..scp_proc_of_finding_minimum_cut_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_minimum_cut; + +-> rrel_solver_key_sc_element: +nrel_minimum_cut; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_minimum_cut_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит минимальный разрез в графе и генерирует дугу принадлежности от относительного понятия "nrel_minimum_cut" к связке сущности "_graph" и найденного его минимального разреза. ];; + *);; + *);; + + +..scp_proc_of_finding_minimum_cut_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_minimum_cut_result += [* + _graph _=> nrel_minimum_cut:: _minimum_cut;; +*];; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_finding_graph_minimum_spanning_tree.scs b/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_finding_graph_minimum_spanning_tree.scs new file mode 100644 index 0000000..ea6c64a --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_finding_graph_minimum_spanning_tree.scs @@ -0,0 +1,577 @@ +scp_program -> proc_of_finding_graph_minimum_spanning_tree +(* + -> rrel_params: ..proc_of_finding_graph_minimum_spanning_tree_params + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _spanning_tree;; + *);; + + -> rrel_operators: ..proc_of_finding_graph_minimum_spanning_tree_operators + (* + -> rrel_init: ..proc_of_finding_graph_minimum_spanning_tree_operator1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_scp_var: rrel_node: rrel_const: _spanning_tree;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator2_0;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator2_0 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator2;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator3;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator3 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator4;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator4 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator5;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator6;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator7;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator7 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _minimum_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_const: rrel_link: [9999];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator8;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator8 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _second_copy_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator9;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator_graph_struct_error;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator10;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator29;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator10 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [second];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator11;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator11 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator12;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator12 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator13;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator9;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator13 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _third_copy_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator_graph_struct_error;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator14 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _third_copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _second_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator15;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator9;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator15 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [third];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator16;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator16 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator17;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator17 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator18;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator18 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [finding for edge];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator19;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator19 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_inc_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator20_1;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator24;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator20_1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_assign: rrel_scp_var: _edge_weigth_node;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _set_with_weigth;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator20_2;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator24;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator20_2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set_with_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge_weigth_node;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator20_3;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator24;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator20_3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator20_4;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator20_4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_weight;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge_weigth_node;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator20_5;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator20_2;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator20_5 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edge_weigth_node;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge_weigth;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc3;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator21;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator24;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator21 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator22;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator24;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator22 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _minimum_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator23_1;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator23_1 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_weigth;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator23_2;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator23_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_edge;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator23_3;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator23_3 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_second_inc_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator24;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator24 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator25_1;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator25_1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_assign: rrel_scp_var: _edge_weigth_node;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _set_with_weigth;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator25_2;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator25_2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set_with_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge_weigth_node;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator25_3;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator25_3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator25_4;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator25_4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_weight;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge_weigth_node;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator25_5;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator25_2;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator25_5 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edge_weigth_node;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge_weigth;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc3;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator26;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator26 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator27;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator27 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _minimum_weigth;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator28_1;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator28_1 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _minimum_weigth;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator28_2;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator28_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_edge;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator28_3;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator28_3 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_second_inc_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator14;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator29 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_edge;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator31;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator30;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator30 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_edge;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator31;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator31 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_second_inc_vertex;; + + => nrel_then: ..proc_of_finding_graph_minimum_spanning_tree_operator33;; + => nrel_else: ..proc_of_finding_graph_minimum_spanning_tree_operator32;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator32 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_second_inc_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator33;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator33 + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Vertex and edge have been added.];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator5;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator_of_successfull_solving + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Minimum spanning tree for graph has been found.];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator_of_nrel_arc_generation;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator_of_nrel_arc_generation + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_const: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _spanning_tree;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_minimum_spanning_tree;; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator_return;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator_graph_struct_error + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Incorrect graph representation!];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator_return;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator_error + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Error was occured...];; + + => nrel_goto: ..proc_of_finding_graph_minimum_spanning_tree_operator_return;; + *);; + + -> ..proc_of_finding_graph_minimum_spanning_tree_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_terminal_chosing.scs b/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_terminal_chosing.scs new file mode 100644 index 0000000..400607e --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/proc_of_terminal_chosing.scs @@ -0,0 +1,76 @@ +scp_program -> proc_of_terminal_chosing +(* + -> rrel_params: ..proc_of_terminal_chosing_params + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _tree;; + *);; + + -> rrel_operators: ..proc_of_terminal_chosing_operators + (* + -> rrel_init: ..proc_of_terminal_chosing_operator1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_disconnected_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc1;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_of_terminal_chosing_operator2;; + => nrel_else: ..proc_of_terminal_chosing_operator4;; + *);; + + -> ..proc_of_terminal_chosing_operator2 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_disconnected_graph_decomposing;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_scp_var: _tree;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_terminal_chosing_operator3;; + *);; + + -> ..proc_of_terminal_chosing_operator3 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_terminal_chosing_operator_return;; + *);; + + -> ..proc_of_terminal_chosing_operator4 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_minimum_spanning_tree;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _current_subgraph;; + -> rrel_2: rrel_assign: rrel_scp_var: _tree;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_terminal_chosing_operator5;; + *);; + + -> ..proc_of_terminal_chosing_operator5 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_terminal_chosing_operator_return;; + *);; + + -> ..proc_of_terminal_chosing_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/scp_proc_of_finding_graph_minimum_spanning_tree.scs b/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/scp_proc_of_finding_graph_minimum_spanning_tree.scs new file mode 100644 index 0000000..3608c75 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graph_minimum_spanning_tree/scp_proc_of_finding_graph_minimum_spanning_tree.scs @@ -0,0 +1,35 @@ +proc_of_finding_graph_minimum_spanning_tree +=> nrel_main_idtf: + [Программа нахождения минимального остовного дерева в графе] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_graph_minimum_spanning_tree_initiation_condition + => ..scp_proc_of_finding_graph_minimum_spanning_tree_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_graph_minimum_spanning_tree; + +-> rrel_solver_key_sc_element: +nrel_graph_minimum_spanning_tree; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_graph_minimum_spanning_tree_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит минимальное остовное дерево в графе и генерирует дугу принадлежности от относительного понятия "nrel_graph_minimum_spanning_tree" к связке сущности "_graph" и найденного его минимального остовного дерева. ];; + *);; + *);; + + +..scp_proc_of_finding_graph_minimum_spanning_tree_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_graph_minimum_spanning_tree_result += [* + _graph _=> nrel_graph_minimum_spanning_tree:: _spanning_tree;; +*];; diff --git a/programs/graph_programs/proc_of_finding_graphs_composition/proc_of_finding_graphs_composition.scs b/programs/graph_programs/proc_of_finding_graphs_composition/proc_of_finding_graphs_composition.scs new file mode 100644 index 0000000..73508bb --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graphs_composition/proc_of_finding_graphs_composition.scs @@ -0,0 +1,333 @@ +scp_program -> proc_of_finding_graphs_composition +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _first_graph;; + -> rrel_2: rrel_in: _second_graph;; + -> rrel_3: rrel_out: _graphs_composition;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_graphs_composition_operator0 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graphs_composition;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator1;; + *);; + + -> ..proc_of_finding_graphs_composition_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _first_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator2;; + => nrel_else: ..proc_of_finding_graphs_composition_operator13;; + *);; + + -> ..proc_of_finding_graphs_composition_operator2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _comp_vertex;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator3;; + => nrel_else: ..proc_of_finding_graphs_composition_operator16;; + *);; + + -> ..proc_of_finding_graphs_composition_operator3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator4_1;; + *);; + + -> ..proc_of_finding_graphs_composition_operator4_1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _first_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _comp_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _first_graph;; + + -> rrel_set_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _vertices_from_first;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator4_3;; + => nrel_else: ..proc_of_finding_graphs_composition_operator4_2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator4_2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _comp_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _first_edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _first_graph;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _vertices_from_first;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator5_1;; + => nrel_else: ..proc_of_finding_graphs_composition_operator2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator4_3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _comp_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _first_edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _first_graph;; + + -> rrel_set_3: rrel_fixed: rrel_const: rrel_node: rrel_scp_var: _vertices_from_first;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator5_1;; + => nrel_else: ..proc_of_finding_graphs_composition_operator5_1;; + *);; + + -> ..proc_of_finding_graphs_composition_operator5_1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _comp_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _second_edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _second_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _second_graph;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _vertices_from_second;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator5_3;; + => nrel_else: ..proc_of_finding_graphs_composition_operator5_2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator5_2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _second_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _second_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _comp_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _second_graph;; + + -> rrel_set_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _vertices_from_second;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator6;; + => nrel_else: ..proc_of_finding_graphs_composition_operator2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator5_3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _second_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _second_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _comp_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _second_graph;; + + -> rrel_set_1: rrel_fixed: rrel_const: rrel_node: rrel_scp_var: _vertices_from_second;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator6;; + => nrel_else: ..proc_of_finding_graphs_composition_operator6;; + *);; + + -> ..proc_of_finding_graphs_composition_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertices_from_first;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_vertex;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator7;; + => nrel_else: ..proc_of_finding_graphs_composition_operator2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator7 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator8;; + *);; + + -> ..proc_of_finding_graphs_composition_operator8 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertices_from_second;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _second_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _copy_vertices_from_second;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator9;; + => nrel_else: ..proc_of_finding_graphs_composition_operator6;; + *);; + + -> ..proc_of_finding_graphs_composition_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_vertices_from_second;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _second_vertex;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator10;; + => nrel_else: ..proc_of_finding_graphs_composition_operator6;; + *);; + + -> ..proc_of_finding_graphs_composition_operator10 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator11;; + *);; + + -> ..proc_of_finding_graphs_composition_operator11 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_assign: rrel_const: rrel_common: rrel_scp_var: _new_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graphs_composition;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator13;; + *);; + + -> ..proc_of_finding_graphs_composition_operator13 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: rrel_oredge;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _arc4;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator14_1;; + *);; + + -> ..proc_of_finding_graphs_composition_operator14_1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_composition;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_vertex;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator15_1;; + => nrel_else: ..proc_of_finding_graphs_composition_operator14_2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator14_2 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_composition;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator15_1;; + *);; + + -> ..proc_of_finding_graphs_composition_operator15_1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_composition;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_vertex;; + + => nrel_then: ..proc_of_finding_graphs_composition_operator9;; + => nrel_else: ..proc_of_finding_graphs_composition_operator15_2;; + *);; + + -> ..proc_of_finding_graphs_composition_operator15_2 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_composition;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator9;; + *);; + + -> ..proc_of_finding_graphs_composition_operator16 + (* + <- genElStr3;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_graph;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator17;; + *);; + + -> ..proc_of_finding_graphs_composition_operator17 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_graph;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator18;; + *);; + + -> ..proc_of_finding_graphs_composition_operator18 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_const: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graphs_composition;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_graphs_composition;; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator_return;; + *);; + + -> ..proc_of_finding_graphs_composition_operator_error + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Incorrect graph representation...];; + + => nrel_goto: ..proc_of_finding_graphs_composition_operator_return;; + *);; + + -> ..proc_of_finding_graphs_composition_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_graphs_composition/scp_proc_of_finding_graphs_composition.scs b/programs/graph_programs/proc_of_finding_graphs_composition/scp_proc_of_finding_graphs_composition.scs new file mode 100644 index 0000000..5927906 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graphs_composition/scp_proc_of_finding_graphs_composition.scs @@ -0,0 +1,38 @@ +proc_of_finding_graphs_composition +=> nrel_main_idtf: + [Программа нахождения композиции двух неориентированных графов] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_graphs_composition_initiation_condition + => ..scp_proc_of_finding_graphs_composition_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_graphs_composition; + +-> rrel_solver_key_sc_element: +nrel_graphs_composition; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_graphs_composition_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит композицию двух графов и генерирует дугу принадлежности от относительного понятия "nrel_graphs_composition" ко множеству двух исходных графов и их композиции. ];; + *);; + *);; + + +..scp_proc_of_finding_graphs_composition_initiation_condition = [* + concept_graph _-> _first_graph;; + concept_graph _-> _second_graph;; +*];; + +..scp_proc_of_finding_graphs_composition_result += [* + _graph_set _-> _first_graph;; + _graph_set _-> _second_graph;; + _graph_set _=> nrel_graphs_composition:: _graphs_composition;; +*];; diff --git a/programs/graph_programs/proc_of_finding_graphs_intersection/proc_of_finding_graphs_intersection.scs b/programs/graph_programs/proc_of_finding_graphs_intersection/proc_of_finding_graphs_intersection.scs new file mode 100644 index 0000000..c25b1f1 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graphs_intersection/proc_of_finding_graphs_intersection.scs @@ -0,0 +1,288 @@ +scp_program -> proc_of_finding_graphs_intersection +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _first_graph;; + -> rrel_2: rrel_in: _second_graph;; + -> rrel_3: rrel_out: _graphs_intersection;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_graphs_intersection_operator0_1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graphs_intersection;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator0_2;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator0_2 + (* + <- genElStr3;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_graph;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator0_3;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator0_3 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_graph;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator0_4;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator0_4 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_set;; + -> rrel_2: rrel_assign: rrel_const: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graphs_intersection;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_graphs_intersection;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator0_5;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator0_5 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graphs_intersection;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator1;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _first_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator2;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator_return;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _second_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator4;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator_return;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex_from_first;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator5;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator8;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator5 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_pos_const_perm: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator6;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex_from_first;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator7;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator4;; + + *);; + + -> ..proc_of_finding_graphs_intersection_operator7 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_intersection;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex_from_first;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator4;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator8 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_intersection;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graphs_intersection_vertices_set;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator9;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator_return;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_intersection_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex_in_intersection;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator10;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator_return;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator10 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_pos_const_perm: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator11;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator11 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex_in_intersection;; + -> rrel_2: rrel_assign: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _first_graph;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _checking_vertices;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator12;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator9;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator12 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _checking_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _checking_vertex;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator13;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator9;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator13 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_pos_const_perm: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator14;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator14 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex_in_intersection;; + -> rrel_2: rrel_assign: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _checking_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _second_graph;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator15;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator9;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator15 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_intersection;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _checking_vertex;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator16;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator12;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator16 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex_in_intersection;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _checking_vertex;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator17;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator12;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator17 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_intersection;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge;; + + => nrel_then: ..proc_of_finding_graphs_intersection_operator12;; + => nrel_else: ..proc_of_finding_graphs_intersection_operator18;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator18 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graphs_intersection;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_graphs_intersection_operator12;; + *);; + + -> ..proc_of_finding_graphs_intersection_operator_return + (* + <- return;; + *);; + *);; +*);; + + diff --git a/programs/graph_programs/proc_of_finding_graphs_intersection/scp_proc_of_finding_graphs_intersection.scs b/programs/graph_programs/proc_of_finding_graphs_intersection/scp_proc_of_finding_graphs_intersection.scs new file mode 100644 index 0000000..113d868 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_graphs_intersection/scp_proc_of_finding_graphs_intersection.scs @@ -0,0 +1,38 @@ +proc_of_finding_graphs_intersection +=> nrel_main_idtf: + [Программа нахождения пересечения двух неориентированных графов] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_graphs_intersection_initiation_condition + => ..scp_proc_of_finding_graphs_intersection_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_graphs_intersection; + +-> rrel_solver_key_sc_element: +nrel_graphs_intersection; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_graphs_intersection_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит пересечение двух графов и генерирует дугу принадлежности от относительного понятия "nrel_graphs_intersection" ко множеству двух исходных графов и их пересечению. ];; + *);; + *);; + + +..scp_proc_of_finding_graphs_intersection_initiation_condition = [* + concept_graph _-> _first_graph;; + concept_graph _-> _second_graph;; +*];; + +..scp_proc_of_finding_graphs_intersection_result += [* + _graph_set _-> _first_graph;; + _graph_set _-> _second_graph;; + _graph_set _=> nrel_graphs_intersection:: _graphs_intersection;; +*];; diff --git a/programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chain.scs b/programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chain.scs new file mode 100644 index 0000000..61b3875 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chain.scs @@ -0,0 +1,446 @@ +scp_program -> proc_of_finding_lengthed_chain +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _vertex;; + -> rrel_2: rrel_in: _edges_set;; + -> rrel_3: rrel_in: _chain;; + -> rrel_4: rrel_in: _chains_set;; + -> rrel_5: rrel_in: _current_length;; + -> rrel_6: rrel_in: _chain_length;; + -> rrel_7: rrel_out: _is_needed_chain;; + -> rrel_8: rrel_in: _preves_vertex;; + -> rrel_9: rrel_in: _first_vertex;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_lengthed_chain_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator1;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _edges_set;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _inc_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator2;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator3;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _edges_set;; + + -> rrel_set_1: rrel_fixed: rrel_scp_var: _inc_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator4;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator4;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _edges_set;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _inc_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator4;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _inc_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator5;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator_erase;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator5 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator6_0;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator6_0 + (* + <- ifCoin;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _preves_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator4;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator6_1;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator6_1 + (* + <- ifCoin;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _first_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator4;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator6;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator7;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator7_1;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator7_1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator7;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator4;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator7 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_assign: rrel_scp_var: _possible_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _set_with_weigth;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator8;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator4;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator8 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set_with_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge_weigth;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator9;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator11_1;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator9 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator10;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator10 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator11_1;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator8;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator11_1 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edge_weigth;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _weigth_value;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator11_2;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator4;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator11_2 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _set_with_weigth;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator12;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator12 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _sum;; + -> rrel_2: rrel_fixed: rrel_scp_var: _weigth_value;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_length;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator13_1;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator13_1 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _sum;; + -> rrel_2: rrel_fixed: rrel_scp_var: _chain_length;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator4;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator13_2;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator13_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator13_3;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator13_3 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain_length;; + -> rrel_2: rrel_fixed: rrel_scp_var: _sum;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator14;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator20;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator14 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator4;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator15;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator15 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_lengthed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_4: rrel_fixed: rrel_scp_var: _chains_set;; + -> rrel_5: rrel_fixed: rrel_scp_var: _sum;; + -> rrel_6: rrel_fixed: rrel_scp_var: _chain_length;; + -> rrel_7: rrel_assign: rrel_scp_var: _is_needed_chain;; + -> rrel_8: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_9: rrel_fixed: rrel_scp_var: _first_vertex;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator16;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator16 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator17;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator17 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_needed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator18_0;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator20;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator18_0 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator18_1;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator18;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator18_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator_erase;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator18 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator19;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator19 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator_erase;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator20 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain_length;; + -> rrel_2: rrel_fixed: rrel_scp_var: _sum;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator21;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator4;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator21 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator22;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator22 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator23;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator23 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator25;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator25 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _con_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _chain;; + + => nrel_then: ..proc_of_finding_lengthed_chain_operator26;; + => nrel_else: ..proc_of_finding_lengthed_chain_operator_erase;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator26 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chains_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chain;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator_erase;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator_erase + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _inc_vertices;; + + => nrel_goto: ..proc_of_finding_lengthed_chain_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_chain_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chains_set.scs b/programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chains_set.scs new file mode 100644 index 0000000..47a9f72 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_lengthed_chains_set/proc_of_finding_lengthed_chains_set.scs @@ -0,0 +1,211 @@ +scp_program -> proc_of_finding_lengthed_chains_set +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _chain_length_node;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_lengthed_chains_set_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _edges_set;; + + => nrel_then: ..proc_of_finding_lengthed_chains_set_operator2;; + => nrel_else: ..proc_of_finding_lengthed_chains_set_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_chains_set_operator3;; + => nrel_else: ..proc_of_finding_lengthed_chains_set_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator3 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _chains_set;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator6;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator6 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain_length_node;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _chain_length;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + + => nrel_then: ..proc_of_finding_lengthed_chains_set_operator7_0;; + => nrel_else: ..proc_of_finding_lengthed_chains_set_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator7_0 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_chains_set_operator7_1;; + => nrel_else: ..proc_of_finding_lengthed_chains_set_operator11;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator7_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7_2;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator7_2 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _chain;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7_3;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator7_3 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _current_length;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7_4;; + *);; + + + -> ..proc_of_finding_lengthed_chains_set_operator7_4 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7_5;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator7_5 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _preves_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edges_set;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator7 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_lengthed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chain;; + -> rrel_4: rrel_fixed: rrel_scp_var: _chains_set;; + -> rrel_5: rrel_fixed: rrel_scp_var: _current_length;; + -> rrel_6: rrel_fixed: rrel_scp_var: _chain_length;; + -> rrel_7: rrel_assign: rrel_scp_var: _is_needed_chain;; + -> rrel_8: rrel_fixed: rrel_scp_var: _preves_vertex;; + -> rrel_9: rrel_fixed: rrel_scp_var: _some_vertex;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator8;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator8 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator9;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator9 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_needed_chain;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_finding_lengthed_chains_set_operator10_2;; + => nrel_else: ..proc_of_finding_lengthed_chains_set_operator10_1;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator10_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _chain;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7_0;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator10_2 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _chains_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chain;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator7_0;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator11 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_const: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chains_set;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_chains_set;; + + => nrel_goto: ..proc_of_finding_lengthed_chains_set_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_chains_set_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_lengthed_chains_set/scp_proc_of_finding_lengthed_chains_set.scs b/programs/graph_programs/proc_of_finding_lengthed_chains_set/scp_proc_of_finding_lengthed_chains_set.scs new file mode 100644 index 0000000..ab8221b --- /dev/null +++ b/programs/graph_programs/proc_of_finding_lengthed_chains_set/scp_proc_of_finding_lengthed_chains_set.scs @@ -0,0 +1,35 @@ +proc_of_finding_lengthed_chains_set +=> nrel_main_idtf: + [Программа нахождения множества цепей заданной длины в взвешенном графе] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_lengthed_chains_set_initiation_condition + => ..scp_proc_of_finding_lengthed_chains_set_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_chains_set; + +-> rrel_solver_key_sc_element: +nrel_chains_set; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_lengthed_chains_set_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит множество цепей заданной длины в графе и генерирует дугу принадлежности от относительного понятия "nrel_chains_set" к графу и множеству его цепей заданной длины. ];; + *);; + *);; + + +..scp_proc_of_finding_lengthed_chains_set_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_lengthed_chains_set_result += [* + _graph _=> nrel_chains_set:: _chains_set;; +*];; diff --git a/programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycle.scs b/programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycle.scs new file mode 100644 index 0000000..34a7958 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycle.scs @@ -0,0 +1,446 @@ +scp_program -> proc_of_finding_lengthed_cycle +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _vertex;; + -> rrel_2: rrel_in: _edges_set;; + -> rrel_3: rrel_in: _cycle;; + -> rrel_4: rrel_in: _cycles_set;; + -> rrel_5: rrel_in: _current_length;; + -> rrel_6: rrel_in: _cycle_length;; + -> rrel_7: rrel_out: _is_needed_cycle;; + -> rrel_8: rrel_in: _first_vertex;; + -> rrel_9: rrel_in: _previous_vertex;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_lengthed_cycle_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _edges_set;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _inc_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator2;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator3;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _edges_set;; + + -> rrel_set_1: rrel_fixed: rrel_scp_var: _inc_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator4;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator3 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _edges_set;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _inc_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator4;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator4 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _inc_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator5;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator_erase1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator5 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator6_0;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator6_0 + (* + <- ifCoin;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _previous_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator4;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator6;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator6 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator7;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator7_1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator7_1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator7;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator7 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_assign: rrel_scp_var: _possible_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _set_with_weigth;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator8;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator8 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set_with_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge_weigth;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator9;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator11_1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator9 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator10;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator10 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_weigth;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edge_weigth;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator11_1;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator8;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator11_1 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _edge_weigth;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _weigth_value;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator11_2;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator11_2 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _set_with_weigth;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator12;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator12 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _sum;; + -> rrel_2: rrel_fixed: rrel_scp_var: _weigth_value;; + -> rrel_3: rrel_fixed: rrel_scp_var: _current_length;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator13_1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator13_1 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _sum;; + -> rrel_2: rrel_fixed: rrel_scp_var: _cycle_length;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator4;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator13_2;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator13_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator13_3;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator13_3 + (* + <- ifGr;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle_length;; + -> rrel_2: rrel_fixed: rrel_scp_var: _sum;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator14;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator20;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator14 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator4;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator15;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator15 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_lengthed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_3: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_4: rrel_fixed: rrel_scp_var: _cycles_set;; + -> rrel_5: rrel_fixed: rrel_scp_var: _sum;; + -> rrel_6: rrel_fixed: rrel_scp_var: _cycle_length;; + -> rrel_7: rrel_assign: rrel_scp_var: _is_needed_cycle;; + -> rrel_8: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_9: rrel_fixed: rrel_scp_var: _vertex;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator16;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator16 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator17;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator17 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_needed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator18_0;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator20;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator18_0 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator18_1;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator18;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator18_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator_erase1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator18 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator19;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator19 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator_erase1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator20 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle_length;; + -> rrel_2: rrel_fixed: rrel_scp_var: _sum;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator21_0;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator21_0 + (* + <- ifCoin;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _first_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator21;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator21 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator22;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator22 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator23;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator23 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _is_needed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator25;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator25 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_assign: rrel_scp_var: _con_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _cycle;; + + => nrel_then: ..proc_of_finding_lengthed_cycle_operator26;; + => nrel_else: ..proc_of_finding_lengthed_cycle_operator_erase1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator26 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycles_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _cycle;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator_erase1;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator_erase1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _inc_vertices;; + + => nrel_goto: ..proc_of_finding_lengthed_cycle_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_cycle_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycles_set.scs b/programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycles_set.scs new file mode 100644 index 0000000..ee08148 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_lengthed_cycles_set/proc_of_finding_lengthed_cycles_set.scs @@ -0,0 +1,196 @@ +scp_program -> proc_of_finding_lengthed_cycles_set +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _cycle_length_node;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_lengthed_cycles_set_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _edges_set;; + + => nrel_then: ..proc_of_finding_lengthed_cycles_set_operator2;; + => nrel_else: ..proc_of_finding_lengthed_cycles_set_operator14;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices;; + + => nrel_then: ..proc_of_finding_lengthed_cycles_set_operator3;; + => nrel_else: ..proc_of_finding_lengthed_cycles_set_operator14;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator3 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _cycles_set;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator4;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator4 + (* + <- searchElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycle_length_node;; + -> rrel_2: rrel_assign: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _cycle_length;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_system_identifier;; + + => nrel_then: ..proc_of_finding_lengthed_cycles_set_operator5;; + => nrel_else: ..proc_of_finding_lengthed_cycles_set_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_lengthed_cycles_set_operator6;; + => nrel_else: ..proc_of_finding_lengthed_cycles_set_operator14;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator7;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator7 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_const: rrel_node: rrel_scp_var: _cycle;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator8;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator8 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _current_length;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator9;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator9 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _previous_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edges_set;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator10;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator10 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_lengthed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edges_set;; + -> rrel_3: rrel_fixed: rrel_scp_var: _cycle;; + -> rrel_4: rrel_fixed: rrel_scp_var: _cycles_set;; + -> rrel_5: rrel_fixed: rrel_scp_var: _current_length;; + -> rrel_6: rrel_fixed: rrel_scp_var: _cycle_length;; + -> rrel_7: rrel_assign: rrel_scp_var: _is_needed_cycle;; + -> rrel_8: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_9: rrel_fixed: rrel_scp_var: _previous_vertex;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator11;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator11 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator12;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator12 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _is_needed_cycle;; + -> rrel_2: rrel_fixed: rrel_scp_const: [1];; + + => nrel_then: ..proc_of_finding_lengthed_cycles_set_operator5;; + => nrel_else: ..proc_of_finding_lengthed_cycles_set_operator13_1;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator13_1 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _cycle;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator5;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator13_2 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _cycles_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _cycle;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator5;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator14 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_common: rrel_const: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _cycles_set;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_cycles_set;; + + => nrel_goto: ..proc_of_finding_lengthed_cycles_set_operator_return;; + *);; + + -> ..proc_of_finding_lengthed_cycles_set_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_lengthed_cycles_set/scp_proc_of_finding_lengthed_cycles_set.scs b/programs/graph_programs/proc_of_finding_lengthed_cycles_set/scp_proc_of_finding_lengthed_cycles_set.scs new file mode 100644 index 0000000..ce926c4 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_lengthed_cycles_set/scp_proc_of_finding_lengthed_cycles_set.scs @@ -0,0 +1,35 @@ +proc_of_finding_lengthed_cycles_set +=> nrel_main_idtf: + [Программа нахождения множества циклов заданной длины в взвешенном графе] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_lengthed_cycles_set_initiation_condition + => ..scp_proc_of_finding_lengthed_cycles_set_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_cycles_set; + +-> rrel_solver_key_sc_element: +nrel_cycles_set; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_lengthed_cycles_set_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит множество циклов заданной длины в графе и генерирует дугу принадлежности от относительного понятия "nrel_cycles_set" к графу и множеству его циклов заданной длины. ];; + *);; + *);; + + +..scp_proc_of_finding_lengthed_cycles_set_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_lengthed_cycles_set_result += [* + _graph _=> nrel_cycles_set:: _cycles_set;; +*];; diff --git a/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs b/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs new file mode 100644 index 0000000..bb81917 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs @@ -0,0 +1,437 @@ +scp_program -> proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree +(* + -> rrel_params: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_params + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _edges_deleting_number;; + *);; + + -> rrel_operators: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operators + (* + -> rrel_init: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _edges_deleting_number;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator1;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator1 + (* + <- genEl;; + + -> rrel_1: rrel_assign: rrel_scp_var: rrel_node: rrel_const: _tree;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator2_0;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator2_0 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_edges_set;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator2;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _graph_vertices_set;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator3;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator3 + (* + <- genElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _vertex;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator4;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator4 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _copy_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator5;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator5 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator6;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_successfull_solving;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator6 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator7;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator7 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _second_copy_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator9;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_graph_struct_error;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator9 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _first_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator11;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator29;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator11 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator12;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator12 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator13;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator9;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator13 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _third_copy_graph_vertices_set;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator14;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_graph_struct_error;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator14 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _third_copy_graph_vertices_set;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _second_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator16;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator9;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator16 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator17;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator17 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator14;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator19;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator19 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _first_inc_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator23_1;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator24;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator23_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_edge;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator23_2;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator23_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_second_inc_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator24;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator24 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _edge;; + -> rrel_3: rrel_fixed: rrel_scp_var: _first_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator28_1;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator14;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator28_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_edge;; + -> rrel_2: rrel_fixed: rrel_scp_var: _edge;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator28_2;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator28_2 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _chosed_second_inc_vertex;; + -> rrel_2: rrel_fixed: rrel_scp_var: _second_inc_vertex;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator14;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator29 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_edge;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator31;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator30;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator30 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator31;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator31 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_second_inc_vertex;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator5;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator32;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator32 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _chosed_second_inc_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator5;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_successfull_solving + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Tree for graph has been found.];; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator33;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator33 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_power;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph_edges_set;; + -> rrel_2: rrel_assign: rrel_scp_var: _graph_edges_set_power;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator34;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator34 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator35;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator35 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _tree;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _edge;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _tree_edges_set;; + + => nrel_then: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator36;; + => nrel_else: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_successfull_solving;; + *);; + + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator36 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_power;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _tree_edges_set;; + -> rrel_2: rrel_assign: rrel_scp_var: _tree_edges_set_power;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator37;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator37 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator38;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator38 + (* + <- contSub;; + + -> rrel_1: rrel_assign: rrel_scp_var: _edges_deleting_number;; + -> rrel_2: rrel_fixed: rrel_scp_var: _graph_edges_set_power;; + -> rrel_3: rrel_fixed: rrel_scp_var: _tree_edges_set_power;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_nrel_arc_generation;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_of_nrel_arc_generation + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_const: rrel_common: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _edges_deleting_number;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: nrel_deleting_edges_number;; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_return;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_graph_struct_error + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Incorrect graph representation!];; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_return;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_error + (* + <- printNl;; + + -> rrel_1: rrel_fixed: rrel_scp_const: [Error was occured...];; + + => nrel_goto: ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_return;; + *);; + + -> ..proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_power.scs b/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_power.scs new file mode 100644 index 0000000..f891d0f --- /dev/null +++ b/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/proc_of_finding_power.scs @@ -0,0 +1,91 @@ +scp_program -> proc_of_finding_power +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _set;; + -> rrel_2: rrel_out: _power;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_power_operator0 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _power;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_power_operator1;; + *);; + + -> ..proc_of_finding_power_operator1 + (* + <- searchSetStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set;; + -> rrel_2: rrel_scp_var: rrel_assign: rrel_pos_const_perm: _arc2;; + -> rrel_3: rrel_scp_var: rrel_assign: _element;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _set_temp;; + + => nrel_then: ..proc_of_finding_power_operator2;; + => nrel_else: ..proc_of_finding_power_operator_return;; + *);; + + -> ..proc_of_finding_power_operator2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _set_temp;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _element;; + + => nrel_then: ..proc_of_finding_power_operator3;; + => nrel_else: ..proc_of_finding_power_operator5;; + *);; + + -> ..proc_of_finding_power_operator3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _arc2;; + + => nrel_goto: ..proc_of_finding_power_operator4;; + *);; + + -> ..proc_of_finding_power_operator4 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _power;; + -> rrel_3: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_power_operator4_1;; + *);; + + -> ..proc_of_finding_power_operator4_1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _power;; + -> rrel_2: rrel_fixed: rrel_scp_var: _temp;; + + => nrel_goto: ..proc_of_finding_power_operator2;; + *);; + + -> ..proc_of_finding_power_operator5 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_erase: rrel_scp_var: _set_temp;; + + => nrel_goto: ..proc_of_finding_power_operator_return;; + *);; + + -> ..proc_of_finding_power_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs b/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs new file mode 100644 index 0000000..574fe51 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree/scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree.scs @@ -0,0 +1,35 @@ +proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree +=> nrel_main_idtf: + [Программа нахождения числа рёбер, удаление которых приводит исходный граф в дерево] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_initiation_condition + => ..scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_result); + +-> rrel_key_sc_element: +concept_graph; +nrel_deleting_edges_number; + +-> rrel_solver_key_sc_element: +nrel_deleting_edges_number; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит число рёбер в графе, удаление которых приводит исходный граф в дерево, и генерирует дугу принадлежности от относительного понятия "nrel_deleting_edges_number" к графу и найденному числу рёбер. ];; + *);; + *);; + + +..scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_initiation_condition = [* + concept_graph _-> _graph;; +*];; + +..scp_proc_of_finding_number_of_edges_deleting_to_transport_graph_into_tree_result += [* + _graph _=> nrel_deleting_edges_number:: _deleting_edges_number;; +*];; diff --git a/programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_neg_vertex_degree.scs b/programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_neg_vertex_degree.scs new file mode 100644 index 0000000..d37a7b8 --- /dev/null +++ b/programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_neg_vertex_degree.scs @@ -0,0 +1,86 @@ +scp_program -> proc_of_finding_neg_vertex_degree +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_in: _some_vertex;; + -> rrel_3: rrel_out: _neg_vertex_degree;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_neg_vertex_degree_operator1 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _neg_vertex_degree;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_goto: ..proc_of_finding_neg_vertex_degree_operator2;; + *);; + + -> ..proc_of_finding_neg_vertex_degree_operator2 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_assign: rrel_scp_var: _inc_vertex;; + -> rrel_2: rrel_assign: rrel_scp_var: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_var: _graph;; + + -> rrel_set_1: rrel_assign: rrel_scp_var: _vertices;; + + => nrel_then: ..proc_of_finding_neg_vertex_degree_operator3;; + => nrel_else: ..proc_of_finding_neg_vertex_degree_operator_return;; + *);; + + -> ..proc_of_finding_neg_vertex_degree_operator3 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _node;; + + => nrel_then: ..proc_of_finding_neg_vertex_degree_operator4;; + => nrel_else: ..proc_of_finding_neg_vertex_degree_operator_return;; + *);; + + -> ..proc_of_finding_neg_vertex_degree_operator4 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_neg_vertex_degree_operator5;; + *);; + + -> ..proc_of_finding_neg_vertex_degree_operator5 + (* + <- contAdd;; + + -> rrel_1: rrel_assign: rrel_scp_var: _temp;; + -> rrel_2: rrel_fixed: rrel_scp_var: _neg_vertex_degree;; + -> rrel_3: rrel_fixed: rrel_scp_const: [1];; + + => nrel_goto: ..proc_of_finding_neg_vertex_degree_operator6;; + *);; + + -> ..proc_of_finding_neg_vertex_degree_operator6 + (* + <- varAssign;; + + -> rrel_1: rrel_assign: rrel_scp_var: _neg_vertex_degree;; + -> rrel_2: rrel_fixed: rrel_scp_var: _temp;; + + => nrel_goto: ..proc_of_finding_neg_vertex_degree_operator3;; + *);; + + -> ..proc_of_finding_neg_vertex_degree_operator_return + (* + <- return;; + *);; + + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_tree_root.scs b/programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_tree_root.scs new file mode 100644 index 0000000..86424bd --- /dev/null +++ b/programs/graph_programs/proc_of_finding_tree_root/proc_of_finding_tree_root.scs @@ -0,0 +1,126 @@ +scp_program -> proc_of_finding_tree_root +(* + -> rrel_params: ... + (* + -> rrel_1: rrel_in: _graph;; + -> rrel_2: rrel_out: _tree_root;; + *);; + + -> rrel_operators: ... + (* + -> rrel_init: ..proc_of_finding_tree_root_operator0_1 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_tree;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_of_finding_tree_root_operator0_2;; + => nrel_else: ..proc_of_finding_tree_root_operator_return;; + *);; + + -> ..proc_of_finding_tree_root_operator0_2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_const: concept_directed_graph;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _graph;; + + => nrel_then: ..proc_of_finding_tree_root_operator1;; + => nrel_else: ..proc_of_finding_tree_root_operator_return;; + *);; + + -> ..proc_of_finding_tree_root_operator1 + (* + <- searchSetStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _node;; + -> rrel_4: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_vertex;; + + -> rrel_set_3: rrel_assign: rrel_scp_var: _checking_vertices;; + + => nrel_then: ..proc_of_finding_tree_root_operator2;; + => nrel_else: ..proc_of_finding_tree_root_operator_return;; + *);; + + -> ..proc_of_finding_tree_root_operator2 + (* + <- searchElStr3;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _checking_vertices;; + -> rrel_2: rrel_assign: rrel_pos_const_perm: rrel_scp_var: _arc2;; + -> rrel_3: rrel_assign: rrel_scp_var: _some_vertex;; + + => nrel_then: ..proc_of_finding_tree_root_operator3;; + => nrel_else: ..proc_of_finding_tree_root_operator_return;; + *);; + + -> ..proc_of_finding_tree_root_operator3 + (* + <- eraseEl;; + + -> rrel_1: rrel_fixed: rrel_scp_var: rrel_pos_const_perm: rrel_erase: _arc2;; + + => nrel_goto: ..proc_of_finding_tree_root_operator4;; + *);; + + -> ..proc_of_finding_tree_root_operator4 + (* + <- call;; + + -> rrel_1: rrel_fixed: rrel_scp_const: proc_of_finding_neg_vertex_degree;; + -> rrel_2: rrel_fixed: rrel_scp_const: ... + (* + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_3: rrel_assign: rrel_scp_var: _neg_degree;; + *);; + -> rrel_3: rrel_assign: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_tree_root_operator5;; + *);; + + -> ..proc_of_finding_tree_root_operator5 + (* + <- waitReturn;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _descriptor;; + + => nrel_goto: ..proc_of_finding_tree_root_operator6;; + *);; + + -> ..proc_of_finding_tree_root_operator6 + (* + <- ifEq;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _neg_degree;; + -> rrel_2: rrel_fixed: rrel_scp_const: [0];; + + => nrel_then: ..proc_of_finding_tree_root_operator7;; + => nrel_else: ..proc_of_finding_tree_root_operator2;; + *);; + + -> ..proc_of_finding_tree_root_operator7 + (* + <- genElStr5;; + + -> rrel_1: rrel_fixed: rrel_scp_var: _graph;; + -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc2;; + -> rrel_3: rrel_fixed: rrel_scp_var: _some_vertex;; + -> rrel_4: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc4;; + -> rrel_5: rrel_fixed: rrel_scp_const: rrel_root;; + + => nrel_goto: ..proc_of_finding_tree_root_operator_return;; + *);; + + -> ..proc_of_finding_tree_root_operator_return + (* + <- return;; + *);; + *);; +*);; diff --git a/programs/graph_programs/proc_of_finding_tree_root/scp_proc_of_finding_tree_root.scs b/programs/graph_programs/proc_of_finding_tree_root/scp_proc_of_finding_tree_root.scs new file mode 100644 index 0000000..cf0f34a --- /dev/null +++ b/programs/graph_programs/proc_of_finding_tree_root/scp_proc_of_finding_tree_root.scs @@ -0,0 +1,39 @@ +proc_of_finding_tree_root +=> nrel_main_idtf: + [Программа нахождения корня в дереве] (* <- lang_ru;; *); + +=> nrel_initiation_condition_and_result: (..scp_proc_of_finding_tree_root_initiation_condition + => ..scp_proc_of_finding_tree_root_result); + +-> rrel_key_sc_element: +concept_graph; +concept_tree; +rrel_root; + +-> rrel_solver_key_sc_element: +concept_tree; +rrel_root; + +<- rrel_key_sc_element: + ..scp_proc_of_finding_tree_root_behavior + (* + <- sc_description_of_scp_program_behavior;; + <= nrel_sc_text_translation: + ... + (* + -> rrel_example: + [ Программа находит корень в дереве и генерирует дугу принадлежности от относительного понятия "rrel_root" к дуги принадлжености от графа к найденному корню. ];; + *);; + *);; + + +..scp_proc_of_finding_tree_root_initiation_condition = [* + concept_graph _-> _graph;; + concept_tree _-> _graph;; +*];; + +..scp_proc_of_finding_tree_root_result += [* + _graph _-> rrel_root:: _tree_root;; +*];; + diff --git a/programs/graph_programs/proc_symmetric_graph/proc_symmetric_graph.scs b/programs/graph_programs/proc_symmetric_graph/proc_symmetric_graph.scs deleted file mode 100755 index 93c2e1d..0000000 --- a/programs/graph_programs/proc_symmetric_graph/proc_symmetric_graph.scs +++ /dev/null @@ -1,129 +0,0 @@ -scp_program -> proc_symmetric_graph -(* - -> rrel_params: ... - (* - -> rrel_1: rrel_in: _curr_graph;; - *);; - - -> rrel_operators: ... - (* - -> rrel_init: .proc_symmetric_graph_operator0 - (* - <- searchElStr3;; - -> rrel_1: rrel_fixed: rrel_scp_const: concept_symmetric_graph;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _ara;; - -> rrel_3: rrel_fixed: rrel_scp_var: _curr_graph;; - - => nrel_then: .proc_symmetric_graph_operator_return;; - => nrel_else: .proc_symmetric_graph_operator0_1;; - *);; - - -> .proc_symmetric_graph_operator0_1 - (* - <- searchElStr3;; - -> rrel_1: rrel_fixed: rrel_scp_const: concept_symmetric_graph;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_neg: _ara;; - -> rrel_3: rrel_fixed: rrel_scp_var: _curr_graph;; - - => nrel_then: .proc_symmetric_graph_operator_return;; - => nrel_else: .proc_symmetric_graph_operator1;; - *);; - - -> .proc_symmetric_graph_operator1 - (* - <- searchSetStr5;; - -> rrel_1: rrel_fixed: rrel_scp_var: _curr_graph;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc_of_vertexs1;; - -> rrel_3: rrel_assign: rrel_scp_var: rrel_common: _ar;; - -> rrel_4: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc_of_vertexs2;; - -> rrel_5: rrel_fixed: rrel_scp_const: rrel_oredge;; - - -> rrel_set_3: rrel_assign: rrel_scp_var: _arcs;; - - => nrel_then: .proc_symmetric_graph_operator2;; - => nrel_else: .proc_symmetric_graph_operator6;; - *);; - - -> .proc_symmetric_graph_operator2 - (* - <- searchElStr3;; - -> rrel_1: rrel_fixed: rrel_scp_var: _arcs;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc_erase;; - -> rrel_3: rrel_assign: rrel_scp_var: _curr_arc;; - - =>nrel_then: .proc_symmetric_graph_operator3_1;; - =>nrel_else: .proc_symmetric_graph_operator5;; - *);; - - -> .proc_symmetric_graph_operator3_1 - (* - <- searchElStr3;; - -> rrel_1: rrel_assign: rrel_scp_var: _levoe;; - -> rrel_2: rrel_fixed: rrel_scp_var: _curr_arc;; - -> rrel_3: rrel_assign: rrel_scp_var: _pravoe;; - - =>nrel_then: .proc_symmetric_graph_operator3_2;; - =>nrel_else: .proc_symmetric_graph_operatorxx;; - *);; - - -> .proc_symmetric_graph_operator3_2 - (* - <- searchElStr5;; - -> rrel_1: rrel_fixed: rrel_scp_var: _pravoe;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_common: _arc_of_vertexs1;; - -> rrel_3: rrel_fixed: rrel_scp_var: _levoe;; - -> rrel_4: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _arc_of_vertexs2;; - -> rrel_5: rrel_fixed: rrel_scp_var: _curr_graph;; - - =>nrel_then: .proc_symmetric_graph_operator4;; - =>nrel_else: .proc_symmetric_graph_operatorxx;; - *);; - - -> .proc_symmetric_graph_operator4 - (* - <- eraseEl;; - -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arc_erase;; - - => nrel_goto: .proc_symmetric_graph_operator2;; - *);; - - -> .proc_symmetric_graph_operator5 - (* - <- eraseEl;; - -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arcs;; - - => nrel_goto: .proc_symmetric_graph_operator6;; - *);; - - -> .proc_symmetric_graph_operator6 - (* - <- genElStr3;; - -> rrel_1: rrel_fixed: rrel_scp_const: concept_symmetric_graph;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_pos_const_perm: _ara;; - -> rrel_3: rrel_fixed: rrel_scp_var: _curr_graph;; - - => nrel_goto: .proc_symmetric_graph_operator_return;; - *);; - - -> .proc_symmetric_graph_operatorxx - (* - <- eraseEl;; - -> rrel_1: rrel_fixed: rrel_scp_var: rrel_erase: _arcs;; - - => nrel_goto: .proc_symmetric_graph_operatorxx_2;; - *);; - - -> .proc_symmetric_graph_operatorxx_2 - (* - <- genElStr3;; - -> rrel_1: rrel_fixed: rrel_scp_const: concept_symmetric_graph;; - -> rrel_2: rrel_assign: rrel_scp_var: rrel_neg: rrel_const: rrel_perm: rrel_access: _ara;; - -> rrel_3: rrel_fixed: rrel_scp_var: _curr_graph;; - - => nrel_goto: .proc_symmetric_graph_operator_return;; - *);; - - -> .proc_symmetric_graph_operator_return(*<-return;;*);; - *);; -*);; - diff --git a/programs/graph_programs/proc_symmetric_graph/scp_program_proc_symmeetric_graph.scs b/programs/graph_programs/proc_symmetric_graph/scp_program_proc_symmeetric_graph.scs deleted file mode 100755 index 7d43cdb..0000000 --- a/programs/graph_programs/proc_symmetric_graph/scp_program_proc_symmeetric_graph.scs +++ /dev/null @@ -1,40 +0,0 @@ -proc_symmetric_graph -=> nrel_main_idtf: - [Программа проверки графа на симметричность] (* <- lang_ru;; *); - -=> nrel_initiation_condition_and_result: (..scp_program_proc_symmeetric_graph_initiation_condition - => ..scp_program_proc_symmeetric_graph_result); - --> rrel_key_sc_element: concept_graph; concept_symmetric_graph; --> rrel_solver_key_sc_element: concept_symmetric_graph; - -<- rrel_key_sc_element: - ..scp_program_proc_symmeetric_graph_behavior - (* - <- sc_description_of_scp_program_behavior;; - <= nrel_sc_text_translation: - ... - (* - -> rrel_example: - [Это программа создает из понятия "симметричный граф" к графу либо дугу приндлежности, если граф симметричный, либо отрицательную дугу, если граф несимметричный];; - *);; - *);; - -..scp_program_proc_symmeetric_graph_initiation_condition = [* - concept_graph _-> _curr_graph;; -*];; - -..scp_program_proc_symmeetric_graph_result - <- nrel_disjunction; - -> ..scp_program_proc_symmeetric_graph_result1; - -> ..scp_program_proc_symmeetric_graph_result2;; - -..scp_program_proc_symmeetric_graph_result1 -= [* - concept_symmetric_graph _-> _curr_graph;; -*];; - -..scp_program_proc_symmeetric_graph_result2 -= [* - concept_symmetric_graph _-|> _curr_graph;; -*];;