1
+ <!DOCTYPE html> < html lang ="en "> < head > < title > 001 undirected/offline/algo/eulerian/eventour</ title > </ head > < meta http-equiv ="Content-Type " content ="text/html; charset=utf-8 "> < meta name ="viewport " content ="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0 "> < meta name ="groc-relative-root " content ="../../../../ "> < meta name ="groc-document-path " content ="001 undirected/offline/algo/eulerian/eventour "> < meta name ="groc-project-path " content ="js/src/001 undirected/offline/algo/eulerian/eventour.js "> < meta name ="groc-github-url " content ="https://github.com/aureooms/js-gn "> < link rel ="stylesheet " type ="text/css " media ="all " href ="../../../../assets/style.css "> < script type ="text/javascript " src ="../../../../assets/behavior.js "> </ script > < body > < div id ="meta "> < div class ="file-path "> < a href ="https://github.com/aureooms/js-gn/blob/master/js/src/001 undirected/offline/algo/eulerian/eventour.js "> js/src/001 undirected/offline/algo/eulerian/eventour.js</ a > </ div > </ div > < div id ="document "> < div class ="segment "> < div class ="code "> < div class ="wrapper "> < span class ="hljs-keyword "> var</ span > eventour_t = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > < span class ="hljs-params "> ()</ span > {</ span > </ div > </ div > </ div > < div class ="segment "> < div class ="comments doc-section "> < div class ="wrapper "> < p > Parameters:</ p >
2
+ < ul >
3
+ < li > < p > < strong > fjfj must be an int.</ strong > < br /> (dkdj)</ p >
4
+ </ li >
5
+ < li > < p > < strong > g must be a graph.</ strong > </ p >
6
+ </ li >
7
+ < li > < p > < strong > V must be a vertices.</ strong > </ p >
8
+ </ li >
9
+ < li > < p > < strong > i must be an index.</ strong > < br /> (node from where to start the search)</ p >
10
+ </ li >
11
+ < li > < p > < strong > done must be a flag list.</ strong > < br /> (to label saturated edges)</ p >
12
+ </ li >
13
+ < li > < p > < strong > it must be an iterator list.</ strong > < br /> (that stores info on already processed edges)</ p >
14
+ </ li >
15
+ < li > < p > < strong > tour must be a list.</ strong > < br /> (the output tour vertex sequence)</ p >
16
+ </ li >
17
+ < li > < p > < strong > edges must be a list.</ strong > < br /> (the output tour edges)</ p >
18
+ </ li >
19
+ </ ul > </ div > </ div > < div class ="code "> < div class ="wrapper "> < span class ="hljs-keyword "> var</ span > eventour = < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > < span class ="hljs-params "> ( g, V, i, done, it, tour, edges )</ span > {</ span >
20
+
21
+ < span class ="hljs-keyword "> var</ span > u, j, z, r, end;
22
+
23
+ z = [i, < span class ="hljs-number "> 0</ span > ];
24
+
25
+ r = [];
26
+
27
+ < span class ="hljs-keyword "> while</ span > ( < span class ="hljs-literal "> true</ span > ) {
28
+
29
+ < span class ="hljs-keyword "> while</ span > ( done[z[< span class ="hljs-number "> 0</ span > ]] ) {
30
+
31
+ < span class ="hljs-keyword "> if</ span > ( r.length === < span class ="hljs-number "> 0</ span > ) {
32
+ < span class ="hljs-keyword "> return</ span > ;
33
+ }
34
+
35
+ z = r.pop();
36
+ }
37
+
38
+ i = z[< span class ="hljs-number "> 0</ span > ];
39
+ j = z[< span class ="hljs-number "> 1</ span > ];
40
+ u = V[i];
41
+ done[i] = < span class ="hljs-literal "> true</ span > ;
42
+
43
+ < span class ="hljs-keyword "> while</ span > ( < span class ="hljs-literal "> true</ span > ) {
44
+
45
+ end = < span class ="hljs-literal "> true</ span > ;
46
+
47
+ it[i] = g.eitr( u, < span class ="hljs-function "> < span class ="hljs-keyword "> function</ span > < span class ="hljs-params "> ( e, v )</ span > {</ span >
48
+
49
+ < span class ="hljs-keyword "> if</ span > ( e.free ) {
50
+
51
+ tour.splice(j, < span class ="hljs-number "> 0</ span > , i);
52
+ edges.splice(j, < span class ="hljs-number "> 0</ span > , e);
53
+
54
+ u = v;
55
+
56
+ ++j;
57
+
58
+ < span class ="hljs-keyword "> if</ span > ( ! done[u[< span class ="hljs-number "> 0</ span > ]] ) {
59
+ r.push( [u[< span class ="hljs-number "> 0</ span > ], j] );
60
+ }
61
+
62
+ e.free = < span class ="hljs-literal "> false</ span > ;
63
+ end = < span class ="hljs-literal "> false</ span > ;
64
+ i = u[< span class ="hljs-number "> 0</ span > ];
65
+
66
+ < span class ="hljs-keyword "> return</ span > < span class ="hljs-literal "> true</ span > ;
67
+
68
+ }
69
+
70
+ }, it[i] );
71
+
72
+ < span class ="hljs-keyword "> if</ span > ( end ) {
73
+ < span class ="hljs-keyword "> break</ span > ;
74
+ }
75
+
76
+ }
77
+ }
78
+ };
79
+
80
+ < span class ="hljs-keyword "> return</ span > eventour;
81
+
82
+ };
83
+
84
+ exports.eventour_t = eventour_t;</ div > </ div > </ div > </ div > </ body > </ html >
0 commit comments