Skip to content

Commit 902e261

Browse files
Fix issue where cost is missing
1 parent 346d7a5 commit 902e261

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void addBothWays(long s, long t, long edgePart1, long edgePart2, double w){
7676
void addWithCheck(long s, long edgePart, double w){
7777
var pairingHeapOfs = pairingHeaps.get(s);
7878
pairingHeapOfs.add(edgePart,w);
79-
if (w < edgeEventsPriorityQueue.cost(s)){
79+
if (!edgeEventsPriorityQueue.containsElement(s) || w < edgeEventsPriorityQueue.cost(s)){
8080
edgeEventsPriorityQueue.set(s, w);
8181
}
8282
}

algo/src/test/java/org/neo4j/gds/pricesteiner/EdgeEventsQueueTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,22 @@ void mergeShouldNotKeepOldCopiesAround(){
121121
assertThat(edgeEventsQueue.top()).isEqualTo(11L);
122122
assertThat(edgeEventsQueue.nextEventTime()).isEqualTo(20);
123123

124+
}
125+
126+
@Test
127+
void shouldReAddCorrectly(){
128+
129+
var edgeEventsQueue = new EdgeEventsQueue(2);
130+
edgeEventsQueue.addBothWays(0,1,0,1,10);
131+
edgeEventsQueue.performInitialAssignment(2);
132+
edgeEventsQueue.deactivateCluster(1);
133+
assertThat(edgeEventsQueue.top()).isEqualTo(0);
134+
edgeEventsQueue.pop();
135+
assertThat(edgeEventsQueue.nextEventTime()).isEqualTo(Double.MAX_VALUE);
136+
edgeEventsQueue.addWithCheck(0,0,10);
137+
assertThat(edgeEventsQueue.top()).isEqualTo(0);
138+
assertThat(edgeEventsQueue.nextEventTime()).isEqualTo(10);
139+
124140

125141
}
126142

0 commit comments

Comments
 (0)