|
1 | | -"use strict"; |
2 | 1 | /** |
3 | 2 | * File created by Philip Hoang 21.03.18 |
4 | 3 | */ |
5 | 4 | ///<reference path="graphUI.ts"/> |
6 | | -///<reference path="graphController.ts"/> |
| 5 | +///<reference path="Controller.ts"/> |
7 | 6 | ///<reference path="EventManager.ts"/> |
8 | 7 | ///<reference path="View.ts"/> |
9 | | -var visited; |
10 | 8 | var arr = []; |
11 | 9 | var queue = []; |
12 | 10 | var currentEdge = 0; |
13 | | -/* |
14 | | -let triplets: any[] = []; |
15 | | -
|
16 | | -triplets[0] = [1, "s", true]; |
17 | | -triplets[1] = ["t", 2, false]; |
18 | | -let [a, b, c] = triplets[0]; |
19 | | -
|
20 | | -console.log(a + " " + b + " " + c); |
21 | | -*/ |
22 | 11 | function startKruskal() { |
23 | | - exampleGraph1(); |
| 12 | + controller.disableStartButton(); |
24 | 13 | var edgeList = sortEdges(); |
25 | 14 | for (var i = 0; i < edgeList.length; i++) { |
26 | 15 | arr[i] = i; |
27 | 16 | } |
28 | 17 | while (edgeList.length > 0) { |
29 | 18 | var _a = edgeList.pop(), node1 = _a[0], node2 = _a[1], weight = _a[2]; |
30 | 19 | currentEdge = getEdgeId(node1, node2); |
31 | | - controller.highlightMyEdge(currentEdge, true); |
| 20 | + controller.selectTwoNodes(node1, node2); |
| 21 | + controller.highlightMyEdge(currentEdge); |
32 | 22 | if (connected(node1, node2) == false) { |
33 | 23 | union(node1, node2); |
34 | | - controller.highlightMyEdge(currentEdge, true); |
35 | 24 | } |
36 | 25 | else { |
37 | | - controller.removeMyEdge(currentEdge); |
| 26 | + controller.dehighlightMyEdge(currentEdge); |
| 27 | + controller.transparentMyEdge(currentEdge); |
38 | 28 | } |
| 29 | + controller.deselectTwoNodes(node1, node2); |
39 | 30 | } |
| 31 | + arr = []; |
| 32 | + queue = []; |
| 33 | + currentEdge = 0; |
| 34 | + controller.enableStartButtion(); |
40 | 35 | } |
41 | | -function simpleFind(index) { |
| 36 | +function find(index) { |
42 | 37 | var root = index; |
43 | 38 | while (root != arr[root]) { |
44 | 39 | root = arr[root]; |
45 | 40 | } |
46 | 41 | return root; |
47 | 42 | } |
48 | 43 | function connected(aIndex, bIndex) { |
49 | | - var aRoot = simpleFind(aIndex); |
50 | | - var bRoot = simpleFind(bIndex); |
51 | | - console.log("a " + aRoot); |
52 | | - console.log("b " + bRoot); |
| 44 | + var aRoot = find(aIndex); |
| 45 | + var bRoot = find(bIndex); |
53 | 46 | var connected = (aRoot == bRoot); |
54 | | - console.log(connected); |
55 | 47 | return connected; |
56 | 48 | } |
57 | 49 | function union(aIndex, bIndex) { |
58 | | - var aRoot = simpleFind(aIndex); |
59 | | - var bRoot = simpleFind(bIndex); |
| 50 | + var aRoot = find(aIndex); |
| 51 | + var bRoot = find(bIndex); |
60 | 52 | if (aRoot != bRoot) { |
61 | 53 | arr[aRoot] = bRoot; |
62 | 54 | } |
63 | 55 | } |
64 | 56 | function sortEdges() { |
65 | 57 | var temp = 0; |
66 | 58 | var sorted = triplets; |
67 | | - for (var i = 0; i < sorted.length; i++) { |
68 | | - for (var j = 0; j < sorted.length; j++) { |
69 | | - var _a = sorted[i], a = _a[0], b = _a[1], c = _a[2]; |
70 | | - var _b = sorted[j], d = _b[0], e = _b[1], f = _b[2]; |
71 | | - if (c > f) { |
72 | | - temp = sorted[i]; |
73 | | - sorted[i] = sorted[j]; |
74 | | - sorted[j] = temp; |
| 59 | + console.log(triplets); |
| 60 | + console.log(sorted); |
| 61 | + if (sorted.length > 0) { |
| 62 | + for (var i = 0; i < sorted.length; i++) { |
| 63 | + for (var j = 0; j < sorted.length; j++) { |
| 64 | + var _a = sorted[i], a = _a[0], b = _a[1], c = _a[2]; |
| 65 | + var _b = sorted[j], d = _b[0], e = _b[1], f = _b[2]; |
| 66 | + if (c > f) { |
| 67 | + temp = sorted[i]; |
| 68 | + sorted[i] = sorted[j]; |
| 69 | + sorted[j] = temp; |
| 70 | + } |
75 | 71 | } |
76 | 72 | } |
77 | 73 | } |
|
0 commit comments