-
Notifications
You must be signed in to change notification settings - Fork 0
/
helpers.js
71 lines (61 loc) · 1.73 KB
/
helpers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function only_edges_with_label() {
for (var i = 0; i < ggraph.edges.length; i++) {
if (ggraph.edges[i].label == "") {
return false;
}
}
return true;
}
function isempty() {
return ggraph.nodes.length == 0;
}
function isdirected() {
for (let i = 0; i < ggraph.edges.length; i++) {
if (!ggraph.edges[i].directed) {
return false;
}
}
return true;
}
function isundirected() {
for (let i = 0; i < ggraph.edges.length; i++) {
if (ggraph.edges[i].directed) {
return false;
}
}
return true;
}
function is_graph_connected() { // returns true if graph is connected
if (ggraph.nodes.length == 0) return true;
adj = ggraph.get_adjacency_list();
vis = {};
function dfs(u) {
vis[u] = true;
let ans = 1;
for (var i = 0; i < adj[u].length; i++) {
var v = adj[u][i];
if (!vis[v]) {
ans += dfs(v);
}
}
return ans;
};
return dfs(0) == ggraph.nodes.length;
}
function random_shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}