occam-directed-graphs 3.0.37 → 3.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -49
- package/lib/cycle.js +31 -14
- package/lib/directedGraph.js +215 -201
- package/lib/index.js +9 -1
- package/lib/utilities/index.js +40 -0
- package/lib/utilities/search.js +91 -0
- package/lib/utilities/vertex.js +11 -50
- package/lib/vertex.js +88 -251
- package/package.json +6 -7
- package/src/cycle.js +8 -28
- package/src/directedGraph.js +277 -198
- package/src/index.js +2 -0
- package/src/utilities/index.js +25 -0
- package/src/utilities/search.js +69 -0
- package/src/utilities/vertex.js +6 -61
- package/src/vertex.js +92 -261
- package/test/cirectedGraph.js +589 -0
- package/bin/main.js +0 -15
- package/lib/directedAcyclicGraph.js +0 -364
- package/lib/example.js +0 -21
- package/lib/partialCycle.js +0 -102
- package/lib/utilities/edge.js +0 -65
- package/src/directedAcyclicGraph.js +0 -422
- package/src/example.js +0 -22
- package/src/partialCycle.js +0 -69
- package/src/utilities/edge.js +0 -58
package/lib/index.js
CHANGED
|
@@ -12,11 +12,19 @@ _export(exports, {
|
|
|
12
12
|
Edge: function() {
|
|
13
13
|
return _edge.default;
|
|
14
14
|
},
|
|
15
|
+
Cycle: function() {
|
|
16
|
+
return _cycle.default;
|
|
17
|
+
},
|
|
18
|
+
Vertex: function() {
|
|
19
|
+
return _vertex.default;
|
|
20
|
+
},
|
|
15
21
|
DirectedGraph: function() {
|
|
16
22
|
return _directedGraph.default;
|
|
17
23
|
}
|
|
18
24
|
});
|
|
19
25
|
var _edge = /*#__PURE__*/ _interop_require_default(require("./edge"));
|
|
26
|
+
var _cycle = /*#__PURE__*/ _interop_require_default(require("./cycle"));
|
|
27
|
+
var _vertex = /*#__PURE__*/ _interop_require_default(require("./vertex"));
|
|
20
28
|
var _directedGraph = /*#__PURE__*/ _interop_require_default(require("./directedGraph"));
|
|
21
29
|
function _interop_require_default(obj) {
|
|
22
30
|
return obj && obj.__esModule ? obj : {
|
|
@@ -24,4 +32,4 @@ function _interop_require_default(obj) {
|
|
|
24
32
|
};
|
|
25
33
|
}
|
|
26
34
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBFZGdlIH0gZnJvbSBcIi4vZWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBDeWNsZSB9IGZyb20gXCIuL2N5Y2xlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFZlcnRleCB9IGZyb20gXCIuL3ZlcnRleFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vZGlyZWN0ZWRHcmFwaFwiO1xuIl0sIm5hbWVzIjpbIkVkZ2UiLCJDeWNsZSIsIlZlcnRleCIsIkRpcmVjdGVkR3JhcGgiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVvQkEsSUFBSTtlQUFKQTs7SUFDQUMsS0FBSztlQUFMQTs7SUFDQUMsTUFBTTtlQUFOQTs7SUFDQUMsYUFBYTtlQUFiQTs7OzJEQUhZOzREQUNDOzZEQUNDO29FQUNPIn0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
orderIndexes: function() {
|
|
13
|
+
return orderIndexes;
|
|
14
|
+
},
|
|
15
|
+
indexesFromVertexes: function() {
|
|
16
|
+
return indexesFromVertexes;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function orderIndexes(indexes) {
|
|
20
|
+
indexes.sort(function(firstIndex, secondIndex) {
|
|
21
|
+
if (false) {
|
|
22
|
+
///
|
|
23
|
+
} else if (firstIndex < secondIndex) {
|
|
24
|
+
return -1;
|
|
25
|
+
} else if (firstIndex > secondIndex) {
|
|
26
|
+
return +1;
|
|
27
|
+
} else {
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function indexesFromVertexes(vertexes) {
|
|
33
|
+
var indexes = vertexes.map(function(vertex) {
|
|
34
|
+
var index = vertex.getIndex();
|
|
35
|
+
return index;
|
|
36
|
+
});
|
|
37
|
+
return indexes;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBvcmRlckluZGV4ZXMoaW5kZXhlcykgeyAgLy8vXG4gIGluZGV4ZXMuc29ydCgoZmlyc3RJbmRleCwgc2Vjb25kSW5kZXgpID0+IHtcbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAoZmlyc3RJbmRleCA8IHNlY29uZEluZGV4KSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlICBpZiAoZmlyc3RJbmRleCA+IHNlY29uZEluZGV4KSB7XG4gICAgICByZXR1cm4gKzE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleGVzRnJvbVZlcnRleGVzKHZlcnRleGVzKSB7XG4gIGNvbnN0IGluZGV4ZXMgPSB2ZXJ0ZXhlcy5tYXAoKHZlcnRleCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdmVydGV4LmdldEluZGV4KCk7XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH0pO1xuXG4gIHJldHVybiBpbmRleGVzO1xufVxuIl0sIm5hbWVzIjpbIm9yZGVySW5kZXhlcyIsImluZGV4ZXNGcm9tVmVydGV4ZXMiLCJpbmRleGVzIiwic29ydCIsImZpcnN0SW5kZXgiLCJzZWNvbmRJbmRleCIsInZlcnRleGVzIiwibWFwIiwidmVydGV4IiwiaW5kZXgiLCJnZXRJbmRleCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWdCQSxZQUFZO2VBQVpBOztJQWNBQyxtQkFBbUI7ZUFBbkJBOzs7QUFkVCxTQUFTRCxhQUFhRSxPQUFPO0lBQ2xDQSxRQUFRQyxLQUFLLFNBQUNDLFlBQVlDO1FBQ3hCLElBQUksT0FBTztRQUNULEdBQUc7UUFDTCxPQUFPLElBQUlELGFBQWFDLGFBQWE7WUFDbkMsT0FBTyxDQUFDO1FBQ1YsT0FBUSxJQUFJRCxhQUFhQyxhQUFhO1lBQ3BDLE9BQU8sQ0FBQztRQUNWLE9BQU87WUFDTCxPQUFPO1FBQ1Q7SUFDRjtBQUNGO0FBRU8sU0FBU0osb0JBQW9CSyxRQUFRO0lBQzFDLElBQU1KLFVBQVVJLFNBQVNDLElBQUksU0FBQ0M7UUFDNUIsSUFBTUMsUUFBUUQsT0FBT0U7UUFFckIsT0FBT0Q7SUFDVDtJQUVBLE9BQU9QO0FBQ1QifQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
forwardsDepthFirstSearch: function() {
|
|
13
|
+
return forwardsDepthFirstSearch;
|
|
14
|
+
},
|
|
15
|
+
backwardsDepthFirstSearch: function() {
|
|
16
|
+
return backwardsDepthFirstSearch;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
function _array_like_to_array(arr, len) {
|
|
20
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
21
|
+
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
22
|
+
return arr2;
|
|
23
|
+
}
|
|
24
|
+
function _array_without_holes(arr) {
|
|
25
|
+
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
26
|
+
}
|
|
27
|
+
function _iterable_to_array(iter) {
|
|
28
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
29
|
+
}
|
|
30
|
+
function _non_iterable_spread() {
|
|
31
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
32
|
+
}
|
|
33
|
+
function _to_consumable_array(arr) {
|
|
34
|
+
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
35
|
+
}
|
|
36
|
+
function _unsupported_iterable_to_array(o, minLen) {
|
|
37
|
+
if (!o) return;
|
|
38
|
+
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
39
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
40
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
41
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
42
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
43
|
+
}
|
|
44
|
+
function forwardsDepthFirstSearch(vertex, callback, visitedVertexes) {
|
|
45
|
+
var predecessorVertexes = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : [];
|
|
46
|
+
var terminate = true;
|
|
47
|
+
var visitedVertexesIncludesVertex = visitedVertexes.includes(vertex);
|
|
48
|
+
if (!visitedVertexesIncludesVertex) {
|
|
49
|
+
var visitedVertex = vertex; ///
|
|
50
|
+
visitedVertexes.push(visitedVertex);
|
|
51
|
+
terminate = callback(vertex, predecessorVertexes);
|
|
52
|
+
if (!terminate) {
|
|
53
|
+
var predecessorVertex = vertex; ///
|
|
54
|
+
predecessorVertexes = _to_consumable_array(predecessorVertexes).concat([
|
|
55
|
+
predecessorVertex
|
|
56
|
+
]);
|
|
57
|
+
terminate = vertex.someImmediateSuccessorVertex(function(immediateSuccessorVertex) {
|
|
58
|
+
var _$vertex = immediateSuccessorVertex, terminate = forwardsDepthFirstSearch(_$vertex, callback, visitedVertexes, predecessorVertexes);
|
|
59
|
+
if (terminate) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return terminate;
|
|
66
|
+
}
|
|
67
|
+
function backwardsDepthFirstSearch(vertex, callback, visitedVertexes) {
|
|
68
|
+
var successorVertexes = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : [];
|
|
69
|
+
var terminate = true;
|
|
70
|
+
var visitedVertexesIncludesVertex = visitedVertexes.includes(vertex);
|
|
71
|
+
if (!visitedVertexesIncludesVertex) {
|
|
72
|
+
var visitedVertex = vertex; ///
|
|
73
|
+
visitedVertexes.push(visitedVertex);
|
|
74
|
+
terminate = callback(vertex, successorVertexes);
|
|
75
|
+
if (!terminate) {
|
|
76
|
+
var successorVertex = vertex; ///
|
|
77
|
+
successorVertexes = _to_consumable_array(successorVertexes).concat([
|
|
78
|
+
successorVertex
|
|
79
|
+
]);
|
|
80
|
+
terminate = vertex.someImmediatePredecessorVertex(function(immediatePredecessorVertex) {
|
|
81
|
+
var _$vertex = immediatePredecessorVertex, terminate = backwardsDepthFirstSearch(_$vertex, callback, visitedVertexes, successorVertexes);
|
|
82
|
+
if (terminate) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return terminate;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc2VhcmNoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKHZlcnRleCwgY2FsbGJhY2ssIHZpc2l0ZWRWZXJ0ZXhlcywgcHJlZGVjZXNzb3JWZXJ0ZXhlcyA9IFtdKSB7XG4gIGxldCB0ZXJtaW5hdGUgPSB0cnVlO1xuXG4gIGNvbnN0IHZpc2l0ZWRWZXJ0ZXhlc0luY2x1ZGVzVmVydGV4ID0gdmlzaXRlZFZlcnRleGVzLmluY2x1ZGVzKHZlcnRleCk7XG5cbiAgaWYgKCF2aXNpdGVkVmVydGV4ZXNJbmNsdWRlc1ZlcnRleCkge1xuICAgIGNvbnN0IHZpc2l0ZWRWZXJ0ZXggPSB2ZXJ0ZXg7IC8vL1xuXG4gICAgdmlzaXRlZFZlcnRleGVzLnB1c2godmlzaXRlZFZlcnRleCk7XG5cbiAgICB0ZXJtaW5hdGUgPSBjYWxsYmFjayh2ZXJ0ZXgsIHByZWRlY2Vzc29yVmVydGV4ZXMpO1xuXG4gICAgaWYgKCF0ZXJtaW5hdGUpIHtcbiAgICAgIGNvbnN0IHByZWRlY2Vzc29yVmVydGV4ID0gdmVydGV4OyAgLy8vXG5cbiAgICAgIHByZWRlY2Vzc29yVmVydGV4ZXMgPSBbIC8vL1xuICAgICAgICAuLi5wcmVkZWNlc3NvclZlcnRleGVzLFxuICAgICAgICBwcmVkZWNlc3NvclZlcnRleFxuICAgICAgXTtcblxuICAgICAgdGVybWluYXRlID0gdmVydGV4LnNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgoKGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJ0ZXggPSBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgsICAvLy9cbiAgICAgICAgICAgICAgdGVybWluYXRlID0gZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKHZlcnRleCwgY2FsbGJhY2ssIHZpc2l0ZWRWZXJ0ZXhlcywgcHJlZGVjZXNzb3JWZXJ0ZXhlcyk7XG5cbiAgICAgICAgaWYgKHRlcm1pbmF0ZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybWluYXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRGVwdGhGaXJzdFNlYXJjaCh2ZXJ0ZXgsIGNhbGxiYWNrLCB2aXNpdGVkVmVydGV4ZXMsIHN1Y2Nlc3NvclZlcnRleGVzID0gW10pIHtcbiAgbGV0IHRlcm1pbmF0ZSA9IHRydWU7XG5cbiAgY29uc3QgdmlzaXRlZFZlcnRleGVzSW5jbHVkZXNWZXJ0ZXggPSB2aXNpdGVkVmVydGV4ZXMuaW5jbHVkZXModmVydGV4KTtcblxuICBpZiAoIXZpc2l0ZWRWZXJ0ZXhlc0luY2x1ZGVzVmVydGV4KSB7XG4gICAgY29uc3QgdmlzaXRlZFZlcnRleCA9IHZlcnRleDsgLy8vXG5cbiAgICB2aXNpdGVkVmVydGV4ZXMucHVzaCh2aXNpdGVkVmVydGV4KTtcblxuICAgIHRlcm1pbmF0ZSA9IGNhbGxiYWNrKHZlcnRleCwgc3VjY2Vzc29yVmVydGV4ZXMpO1xuXG4gICAgaWYgKCF0ZXJtaW5hdGUpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3NvclZlcnRleCA9IHZlcnRleDsgIC8vL1xuXG4gICAgICBzdWNjZXNzb3JWZXJ0ZXhlcyA9IFsgLy8vXG4gICAgICAgIC4uLnN1Y2Nlc3NvclZlcnRleGVzLFxuICAgICAgICBzdWNjZXNzb3JWZXJ0ZXhcbiAgICAgIF07XG5cbiAgICAgIHRlcm1pbmF0ZSA9IHZlcnRleC5zb21lSW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXgoKGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHZlcnRleCA9IGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4LCAgLy8vXG4gICAgICAgICAgICAgIHRlcm1pbmF0ZSA9IGJhY2t3YXJkc0RlcHRoRmlyc3RTZWFyY2godmVydGV4LCBjYWxsYmFjaywgdmlzaXRlZFZlcnRleGVzLCBzdWNjZXNzb3JWZXJ0ZXhlcyk7XG5cbiAgICAgICAgaWYgKHRlcm1pbmF0ZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybWluYXRlO1xufVxuIl0sIm5hbWVzIjpbImZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCIsImJhY2t3YXJkc0RlcHRoRmlyc3RTZWFyY2giLCJ2ZXJ0ZXgiLCJjYWxsYmFjayIsInZpc2l0ZWRWZXJ0ZXhlcyIsInByZWRlY2Vzc29yVmVydGV4ZXMiLCJ0ZXJtaW5hdGUiLCJ2aXNpdGVkVmVydGV4ZXNJbmNsdWRlc1ZlcnRleCIsImluY2x1ZGVzIiwidmlzaXRlZFZlcnRleCIsInB1c2giLCJwcmVkZWNlc3NvclZlcnRleCIsInNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJzdWNjZXNzb3JWZXJ0ZXhlcyIsInN1Y2Nlc3NvclZlcnRleCIsInNvbWVJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFZ0JBLHdCQUF3QjtlQUF4QkE7O0lBa0NBQyx5QkFBeUI7ZUFBekJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbENULFNBQVNELHlCQUF5QkUsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLGVBQWU7UUFBRUMsc0JBQUFBLGlFQUFzQixFQUFFO0lBQ2xHLElBQUlDLFlBQVk7SUFFaEIsSUFBTUMsZ0NBQWdDSCxnQkFBZ0JJLFNBQVNOO0lBRS9ELElBQUksQ0FBQ0ssK0JBQStCO1FBQ2xDLElBQU1FLGdCQUFnQlAsUUFBUSxHQUFHO1FBRWpDRSxnQkFBZ0JNLEtBQUtEO1FBRXJCSCxZQUFZSCxTQUFTRCxRQUFRRztRQUU3QixJQUFJLENBQUNDLFdBQVc7WUFDZCxJQUFNSyxvQkFBb0JULFFBQVMsR0FBRztZQUV0Q0csc0JBQXNCLEFBQ3BCLHFCQUFHQSw0QkFEaUI7Z0JBRXBCTTthQUNEO1lBRURMLFlBQVlKLE9BQU9VLDZCQUE2QixTQUFDQztnQkFDL0MsSUFBTVgsV0FBU1csMEJBQ1RQLFlBQVlOLHlCQUF5QkUsVUFBUUMsVUFBVUMsaUJBQWlCQztnQkFFOUUsSUFBSUMsV0FBVztvQkFDYixPQUFPO2dCQUNUO1lBQ0Y7UUFDRjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNMLDBCQUEwQkMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLGVBQWU7UUFBRVUsb0JBQUFBLGlFQUFvQixFQUFFO0lBQ2pHLElBQUlSLFlBQVk7SUFFaEIsSUFBTUMsZ0NBQWdDSCxnQkFBZ0JJLFNBQVNOO0lBRS9ELElBQUksQ0FBQ0ssK0JBQStCO1FBQ2xDLElBQU1FLGdCQUFnQlAsUUFBUSxHQUFHO1FBRWpDRSxnQkFBZ0JNLEtBQUtEO1FBRXJCSCxZQUFZSCxTQUFTRCxRQUFRWTtRQUU3QixJQUFJLENBQUNSLFdBQVc7WUFDZCxJQUFNUyxrQkFBa0JiLFFBQVMsR0FBRztZQUVwQ1ksb0JBQW9CLEFBQ2xCLHFCQUFHQSwwQkFEZTtnQkFFbEJDO2FBQ0Q7WUFFRFQsWUFBWUosT0FBT2MsK0JBQStCLFNBQUNDO2dCQUNqRCxJQUFNZixXQUFTZSw0QkFDVFgsWUFBWUwsMEJBQTBCQyxVQUFRQyxVQUFVQyxpQkFBaUJVO2dCQUUvRSxJQUFJUixXQUFXO29CQUNiLE9BQU87Z0JBQ1Q7WUFDRjtRQUNGO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUIn0=
|
package/lib/utilities/vertex.js
CHANGED
|
@@ -9,18 +9,15 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
return
|
|
12
|
+
orderVertexes: function() {
|
|
13
|
+
return orderVertexes;
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
return
|
|
17
|
-
},
|
|
18
|
-
forwardsDepthFirstSearch: function() {
|
|
19
|
-
return forwardsDepthFirstSearch;
|
|
15
|
+
vertexNamesFromVertexes: function() {
|
|
16
|
+
return vertexNamesFromVertexes;
|
|
20
17
|
}
|
|
21
18
|
});
|
|
22
|
-
function
|
|
23
|
-
|
|
19
|
+
function orderVertexes(vertexes) {
|
|
20
|
+
vertexes.sort(function(firstVertex, secondVertex) {
|
|
24
21
|
var firstVertexIndex = firstVertex.getIndex(), secondVertexIndex = secondVertex.getIndex();
|
|
25
22
|
if (false) {
|
|
26
23
|
///
|
|
@@ -28,53 +25,17 @@ function orderVertices(vertices) {
|
|
|
28
25
|
return -1;
|
|
29
26
|
} else if (firstVertexIndex > secondVertexIndex) {
|
|
30
27
|
return +1;
|
|
28
|
+
} else {
|
|
29
|
+
return 0;
|
|
31
30
|
}
|
|
32
31
|
});
|
|
33
|
-
var orderedVertices = vertices; ///
|
|
34
|
-
return orderedVertices;
|
|
35
32
|
}
|
|
36
|
-
function
|
|
37
|
-
var vertexNames =
|
|
33
|
+
function vertexNamesFromVertexes(vertexes) {
|
|
34
|
+
var vertexNames = vertexes.map(function(vertex) {
|
|
38
35
|
var vertexName = vertex.getName();
|
|
39
36
|
return vertexName;
|
|
40
37
|
});
|
|
41
38
|
return vertexNames;
|
|
42
39
|
}
|
|
43
|
-
function forwardsDepthFirstSearch(vertex, callback) {
|
|
44
|
-
var getPredecessorVertices = function getPredecessorVertices() {
|
|
45
|
-
var predecessorVertices = [];
|
|
46
|
-
return predecessorVertices;
|
|
47
|
-
};
|
|
48
|
-
var visitedVertices = [];
|
|
49
|
-
retrieveForwardsVisitedVertices(vertex, function(visitedVertex, getPredecessorVertices) {
|
|
50
|
-
var terminate = callback(visitedVertex, getPredecessorVertices); ///
|
|
51
|
-
visitedVertices.push(visitedVertex);
|
|
52
|
-
return terminate;
|
|
53
|
-
}, getPredecessorVertices);
|
|
54
|
-
visitedVertices.forEach(function(visitedVertex) {
|
|
55
|
-
return visitedVertex.resetVisited();
|
|
56
|
-
});
|
|
57
|
-
return visitedVertices;
|
|
58
|
-
}
|
|
59
|
-
function retrieveForwardsVisitedVertices(vertex, callback, getPredecessorVertices) {
|
|
60
|
-
var terminate = false;
|
|
61
|
-
if (vertex.visited === false) {
|
|
62
|
-
vertex.visited = true;
|
|
63
|
-
var visitedVertex = vertex; ///
|
|
64
|
-
terminate = callback(visitedVertex, getPredecessorVertices);
|
|
65
|
-
if (terminate !== true) {
|
|
66
|
-
visitedVertex.someImmediateSuccessorVertex(function(immediateSuccessorVertex) {
|
|
67
|
-
terminate = retrieveForwardsVisitedVertices(immediateSuccessorVertex, callback, function() {
|
|
68
|
-
var predecessorVertices = getPredecessorVertices();
|
|
69
|
-
var immediatePredecessorVertex = vertex, predecessorVertex = immediatePredecessorVertex; ///
|
|
70
|
-
predecessorVertices = predecessorVertices.concat(predecessorVertex);
|
|
71
|
-
return predecessorVertices;
|
|
72
|
-
});
|
|
73
|
-
return terminate;
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return terminate;
|
|
78
|
-
}
|
|
79
40
|
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVydGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJWZXJ0ZXhlcyh2ZXJ0ZXhlcykgeyAgLy8vXG4gIHZlcnRleGVzLnNvcnQoKGZpcnN0VmVydGV4LCBzZWNvbmRWZXJ0ZXgpID0+IHtcbiAgICBjb25zdCBmaXJzdFZlcnRleEluZGV4ID0gZmlyc3RWZXJ0ZXguZ2V0SW5kZXgoKSxcbiAgICAgICAgICBzZWNvbmRWZXJ0ZXhJbmRleCA9IHNlY29uZFZlcnRleC5nZXRJbmRleCgpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGZpcnN0VmVydGV4SW5kZXggPCBzZWNvbmRWZXJ0ZXhJbmRleCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSAgaWYgKGZpcnN0VmVydGV4SW5kZXggPiBzZWNvbmRWZXJ0ZXhJbmRleCkge1xuICAgICAgcmV0dXJuICsxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVydGV4TmFtZXNGcm9tVmVydGV4ZXModmVydGV4ZXMpIHtcbiAgY29uc3QgdmVydGV4TmFtZXMgPSB2ZXJ0ZXhlcy5tYXAoKHZlcnRleCkgPT4ge1xuICAgIGNvbnN0IHZlcnRleE5hbWUgPSB2ZXJ0ZXguZ2V0TmFtZSgpO1xuXG4gICAgcmV0dXJuIHZlcnRleE5hbWU7XG4gIH0pO1xuXG4gIHJldHVybiB2ZXJ0ZXhOYW1lcztcbn1cbiJdLCJuYW1lcyI6WyJvcmRlclZlcnRleGVzIiwidmVydGV4TmFtZXNGcm9tVmVydGV4ZXMiLCJ2ZXJ0ZXhlcyIsInNvcnQiLCJmaXJzdFZlcnRleCIsInNlY29uZFZlcnRleCIsImZpcnN0VmVydGV4SW5kZXgiLCJnZXRJbmRleCIsInNlY29uZFZlcnRleEluZGV4IiwidmVydGV4TmFtZXMiLCJtYXAiLCJ2ZXJ0ZXgiLCJ2ZXJ0ZXhOYW1lIiwiZ2V0TmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWdCQSxhQUFhO2VBQWJBOztJQWlCQUMsdUJBQXVCO2VBQXZCQTs7O0FBakJULFNBQVNELGNBQWNFLFFBQVE7SUFDcENBLFNBQVNDLEtBQUssU0FBQ0MsYUFBYUM7UUFDMUIsSUFBTUMsbUJBQW1CRixZQUFZRyxZQUMvQkMsb0JBQW9CSCxhQUFhRTtRQUV2QyxJQUFJLE9BQU87UUFDVCxHQUFHO1FBQ0wsT0FBTyxJQUFJRCxtQkFBbUJFLG1CQUFtQjtZQUMvQyxPQUFPLENBQUM7UUFDVixPQUFRLElBQUlGLG1CQUFtQkUsbUJBQW1CO1lBQ2hELE9BQU8sQ0FBQztRQUNWLE9BQU87WUFDTCxPQUFPO1FBQ1Q7SUFDRjtBQUNGO0FBRU8sU0FBU1Asd0JBQXdCQyxRQUFRO0lBQzlDLElBQU1PLGNBQWNQLFNBQVNRLElBQUksU0FBQ0M7UUFDaEMsSUFBTUMsYUFBYUQsT0FBT0U7UUFFMUIsT0FBT0Q7SUFDVDtJQUVBLE9BQU9IO0FBQ1QifQ==
|