Skip to content

Commit 670ec09

Browse files
committedMay 11, 2018
Add Tarjan's algorithm.
1 parent 1dd480b commit 670ec09

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed
 

‎src/algorithms/graph/articulation-points/articulationPoints.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,19 @@ export default function articulationPoints(graph) {
6565
// Update the low time with the smallest time of adjacent vertices.
6666
// Get minimum low discovery time from all neighbors.
6767
/** @param {GraphVertex} neighbor */
68-
visitedSet[currentVertex.getKey()].lowDiscoveryTime = currentVertex.getNeighbors().reduce(
69-
(lowestDiscoveryTime, neighbor) => {
70-
const neighborLowTime = visitedSet[neighbor.getKey()].lowDiscoveryTime;
71-
return neighborLowTime < lowestDiscoveryTime ? neighborLowTime : lowestDiscoveryTime;
72-
},
73-
visitedSet[currentVertex.getKey()].lowDiscoveryTime,
74-
);
68+
visitedSet[currentVertex.getKey()].lowDiscoveryTime = currentVertex.getNeighbors()
69+
.filter(earlyNeighbor => earlyNeighbor.getKey() !== previousVertex.getKey())
70+
/**
71+
* @param {number} lowestDiscoveryTime
72+
* @param {GraphVertex} neighbor
73+
*/
74+
.reduce(
75+
(lowestDiscoveryTime, neighbor) => {
76+
const neighborLowTime = visitedSet[neighbor.getKey()].lowDiscoveryTime;
77+
return neighborLowTime < lowestDiscoveryTime ? neighborLowTime : lowestDiscoveryTime;
78+
},
79+
visitedSet[currentVertex.getKey()].lowDiscoveryTime,
80+
);
7581

7682
// Detect whether previous vertex is articulation point or not.
7783
// To do so we need to check two [OR] conditions:

0 commit comments

Comments
 (0)
Please sign in to comment.