diff --git a/lang/el/home.php b/lang/el/home.php index 8ee1750..69c1f6f 100644 --- a/lang/el/home.php +++ b/lang/el/home.php @@ -200,4 +200,8 @@ $g_lang["radius_and_diameter_name"] = "Search graph radius and diameter"; $g_lang["find_short_path_name"] = "Find shortest path using Dijkstra's algorithm"; $g_lang["vertices_degree_name"] = "Calculate vertexes degree"; + + $g_lang["min_spanning_tree_res_is"] = "Weight of minimum spanning tree is "; + $g_lang["min_spanning_tree_ignore_direction"] = "We ignored edges direction for calculation."; + $g_lang["min_spanning_tree_graph_not_connected"] = "Graph is disconnected"; ?> diff --git a/lang/en/home.php b/lang/en/home.php index 6cb317e..d53b80e 100755 --- a/lang/en/home.php +++ b/lang/en/home.php @@ -199,4 +199,8 @@ We have added Dutch translation 🇳🇱. Thank you Willie de Wit"; $g_lang["radius_and_diameter_name"] = "Search graph radius and diameter"; $g_lang["find_short_path_name"] = "Find shortest path using Dijkstra's algorithm"; $g_lang["vertices_degree_name"] = "Calculate vertices degree"; + + $g_lang["min_spanning_tree_res_is"] = "Weight of minimum spanning tree is "; + $g_lang["min_spanning_tree_ignore_direction"] = "We ignored edges direction for calculation."; + $g_lang["min_spanning_tree_graph_not_connected"] = "Graph is disconnected"; ?> diff --git a/lang/es/home.php b/lang/es/home.php index 2c06d14..3a199ba 100755 --- a/lang/es/home.php +++ b/lang/es/home.php @@ -199,4 +199,8 @@ Tenemos traducciones en griego 🇬🇷. diff --git a/lang/fr/home.php b/lang/fr/home.php index 592b7a8..198a3a3 100644 --- a/lang/fr/home.php +++ b/lang/fr/home.php @@ -167,4 +167,8 @@ $g_lang["radius_and_diameter_name"] = "Calcul du rayon et du diamètre du graphe"; $g_lang["find_short_path_name"] = "Plus court chemin avec l'algorithme de Dijkstra"; $g_lang["vertices_degree_name"] = "Calculer le degré des sommets"; + + $g_lang["min_spanning_tree_res_is"] = "Weight of minimum spanning tree is "; + $g_lang["min_spanning_tree_ignore_direction"] = "We ignored edges direction for calculation."; + $g_lang["min_spanning_tree_graph_not_connected"] = "Graph is disconnected"; ?> \ No newline at end of file diff --git a/lang/nl/home.php b/lang/nl/home.php index f95de27..761b7a8 100644 --- a/lang/nl/home.php +++ b/lang/nl/home.php @@ -164,4 +164,8 @@ $g_lang["radius_and_diameter_name"] = "Zoek grafiek straal en diameter"; $g_lang["find_short_path_name"] = "Kortstepad-algoritme (Dijkstra's algoritme)"; $g_lang["vertices_degree_name"] = "Bereken hoekpunten graden"; + + $g_lang["min_spanning_tree_res_is"] = "Weight of minimum spanning tree is "; + $g_lang["min_spanning_tree_ignore_direction"] = "We ignored edges direction for calculation."; + $g_lang["min_spanning_tree_graph_not_connected"] = "Graph is disconnected"; ?> diff --git a/lang/ru/home.php b/lang/ru/home.php index 6835752..4f01a3e 100755 --- a/lang/ru/home.php +++ b/lang/ru/home.php @@ -200,4 +200,8 @@ $g_lang["radius_and_diameter_name"] = "Поиск радиуса и диаметра графа"; $g_lang["find_short_path_name"] = "Поиск кратчайший путь алгоритмом Дейкстры"; $g_lang["vertices_degree_name"] = "Рассчитать степень вершин"; + + $g_lang["min_spanning_tree_res_is"] = "Вес минимального оставного дерева равен "; + $g_lang["min_spanning_tree_ignore_direction"] = "Мы игнорировали ориентацию дуг при рассчете."; + $g_lang["min_spanning_tree_graph_not_connected"] = "Граф не является связным"; ?> diff --git a/lang/sv/home.php b/lang/sv/home.php index f0a2b1b..94ee2d3 100644 --- a/lang/sv/home.php +++ b/lang/sv/home.php @@ -162,4 +162,7 @@ $g_lang["find_short_path_name"] = "Hitta den kortaste vägen med Dijkstras algoritm"; $g_lang["vertices_degree_name"] = "Кäkna graden av vertikaler"; + $g_lang["min_spanning_tree_res_is"] = "Weight of minimum spanning tree is "; + $g_lang["min_spanning_tree_ignore_direction"] = "We ignored edges direction for calculation."; + $g_lang["min_spanning_tree_graph_not_connected"] = "Graph is disconnected"; ?> diff --git a/script/Graph.js b/script/Graph.js index 8efb8fa..8a0f5d6 100644 --- a/script/Graph.js +++ b/script/Graph.js @@ -172,6 +172,27 @@ Graph.prototype.FindEdgeMin = function(id1, id2) return res; } +Graph.prototype.FindEdgeMinIgnoreDirection = function(id1, id2) +{ + var res = null; + var minWeight = this.infinity; + for (var i = 0; i < this.edges.length; i++) + { + var edge = this.edges[i]; + if ((edge.vertex1.id == id1 && edge.vertex2.id == id2) + || (edge.vertex1.id == id2 && edge.vertex2.id == id1)) + { + if (edge.weight < minWeight) + { + res = edge; + minWeight = edge.weight; + } + } + } + + return res; +} + Graph.prototype.FindAllEdges = function(id1, id2) { var res = []; diff --git a/script/plugins/MinimumSpanningTree.js b/script/plugins/MinimumSpanningTree.js index 1d53a58..01bdfb6 100755 --- a/script/plugins/MinimumSpanningTree.js +++ b/script/plugins/MinimumSpanningTree.js @@ -27,11 +27,12 @@ MinimumSpanningTree.prototype.getMessage = function(local) { if (!this.isNotConneted ) { - return local == "ru" ? "Вес минимального оставного дерева равен " + this.MST : "Weight of minimum spanning tree is " + this.MST; + return g_SpanningTreeResult + this.MST + ". " + + (this.graph.hasDirectEdge() ? g_SpanningTreeIgnoreDir : ""); } else { - return local == "ru" ? "Граф не является связным" : "Graph is disconnected"; + return g_SpanningTreeNotConnected; } } @@ -41,9 +42,10 @@ MinimumSpanningTree.prototype.result = function(resultCallback) this.edges = []; this.isNotConneted = true; var tempVertexes = this.graph.vertices.slice(); - connectedVertex = getVertexToVertexArray(this.graph, false); + connectedVertex = getVertexToVertexArray(this.graph, true); - if (!this.graph.hasDirectEdge()) + // We ignore orientation for this algorithm. + //if (!this.graph.hasDirectEdge()) { res = this.resultStartedFrom(tempVertexes[0], connectedVertex); this.isNotConneted = res.isNotConneted; @@ -53,7 +55,7 @@ MinimumSpanningTree.prototype.result = function(resultCallback) this.edges = res.edges; } } - else + /*else { for (var i = 0; i < tempVertexes.length; i++) { @@ -69,7 +71,7 @@ MinimumSpanningTree.prototype.result = function(resultCallback) } } } - } + }*/ var result = {}; result["version"] = 1; @@ -105,7 +107,8 @@ MinimumSpanningTree.prototype.resultStartedFrom = function(vertex, connectedVert for (j = 0; j < connectedVertex[element.id].length; j++) { var connectedElement = connectedVertex[element.id][j]; - var connectedEdge = this.graph.FindEdgeMin(element.id, connectedElement.id); + var connectedEdge = this.graph.FindEdgeMinIgnoreDirection(element.id, connectedElement.id); + if (inTree.indexOf(connectedElement) < 0) { if (minEdge == null || minEdge.weight > connectedEdge.weight) diff --git a/script/texts.js b/script/texts.js index b710b8d..b9d3923 100644 --- a/script/texts.js +++ b/script/texts.js @@ -128,6 +128,9 @@ var g_modernGraphStyleName = "Visualisation based on weight"; var g_RadiusAndDiameter = "Search graph radius and diameter"; var g_findShortPathName = "Find shortest path using Dijkstra's algorithm"; var g_VerticesDegreeName = "Calculate vertexes degree"; +var g_SpanningTreeResult = "Min Spanning Tree is"; +var g_SpanningTreeIgnoreDir = "We ignored edges direction for calculation"; +var g_SpanningTreeNotConnected = "Graph is not connected"; function loadTexts() { @@ -264,4 +267,8 @@ function loadTexts() g_RadiusAndDiameter = document.getElementById("RadiusAndDiameter").innerHTML; g_findShortPathName = document.getElementById("findShortPathName").innerHTML; g_VerticesDegreeName = document.getElementById("VerticesDegreeName").innerHTML; + + g_SpanningTreeResult = document.getElementById("MinSpanningTreeResult").innerHTML; + g_SpanningTreeIgnoreDir = document.getElementById("MinSpanningIgnoreDir").innerHTML; + g_SpanningTreeNotConnected = document.getElementById("MinSpanningNotConnected").innerHTML; } diff --git a/tpl/home.php b/tpl/home.php index 2465dae..ec0e117 100755 --- a/tpl/home.php +++ b/tpl/home.php @@ -10,7 +10,7 @@ - +