Skip to content

Commit e291bb2

Browse files
Skip deleted edges
1 parent a255495 commit e291bb2

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

algo/src/main/java/org/neo4j/gds/pricesteiner/GrowthPhase.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,13 @@ GrowthResult grow() {
7171
long uPart = edgeEventsQueue.topEdgePart();
7272
long vPart = otherEdgePart(uPart);
7373
long u = edgeParts.get(uPart);
74-
long v = edgeParts.get(vPart); //TODO: If we have already processed other edge part (tight or delete), find shortcut to skip
74+
long v = edgeParts.get(vPart);
75+
76+
edgeEventsQueue.pop();
77+
78+
if (u<0 || v<0) {
79+
continue;
80+
}
7581

7682
ClusterMoatPair cmu = clusterStructure.sumOnEdgePart(u,moat);
7783
ClusterMoatPair cmv = clusterStructure.sumOnEdgePart(v,moat);
@@ -82,9 +88,10 @@ GrowthResult grow() {
8288
var vCluster = cmv.cluster();
8389
var vClusterSum = cmv.totalMoat();
8490

85-
edgeEventsQueue.pop();
8691

8792
if (vCluster == uCluster) {
93+
edgeParts.set(uPart,-u);
94+
edgeParts.set(vPart,-v);
8895
continue;
8996
}
9097

@@ -103,6 +110,7 @@ GrowthResult grow() {
103110
clusterStructure.active(vCluster)
104111
);
105112
}
113+
106114
}
107115

108116
}
@@ -173,6 +181,8 @@ private void mergeClusters(
173181
clusterEventsPriorityQueue.add(newCluster, clusterStructure.tightnessTime(newCluster, moat));
174182

175183
addToTree(edgeId);
184+
edgeParts.set(2*edgeId,-edgeParts.get(2*edgeId));
185+
edgeParts.set(2*edgeId+1,-edgeParts.get(2*edgeId+1));
176186
}
177187

178188
private void generateNewEdgeEvents(

algo/src/main/java/org/neo4j/gds/pricesteiner/TreeProducer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ static TreeStructure createTree(GrowthResult growthResult,long nodeCount, IdMap
5656

5757
for (long i =0; i<numberOfTreeEdges;++i){
5858
var edgeId = treeEdges.get(i);
59-
var u = edgeParts.get(2*edgeId);
60-
var v = edgeParts.get(2*edgeId+1);
59+
var u = Math.abs(edgeParts.get(2*edgeId));
60+
var v = Math.abs(edgeParts.get(2*edgeId+1));
6161
if (activePredicate.test(u) && activePredicate.test(v)){
6262
degree.addTo(u,1);
6363
degree.addTo(v,1);

0 commit comments

Comments
 (0)