Kürzlich habe ich über Shortest Path Faster Algorithmus gelesen. Ich frage mich, wie man einen Testfall erstellt, für den die Standard-Implementierung von SPFA wolud sehr, sehr langsam ist. Kennst du irgendwelche?Worst Testfall für SPFA
von Standard-Implementierung, meine ich diesen von Wikipedia:
procedure Shortest-Path-Faster-Algorithm(G, s)
1 for each vertex v ≠ s in V(G)
2 d(v) := ∞
3 d(s) := 0
4 offer s into Q
5 while Q is not empty
6 u := poll Q
7 for each edge (u, v) in E(G)
8 if d(u) + w(u, v) < d(v) then
9 d(v) := d(u) + w(u, v)
10 if v is not in Q then
11 offer v into Q
Ist mit dem auf Wikipedia vorgeschlagenen Testfall etwas nicht in Ordnung? https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm#Worst-case_performance –
Ich denke, ich verstehe es nicht. Ich habe einen Graph mit 10^5 Ecken und 5 * 10^5 Kanten erzeugt. Es gibt 10^5 Kanten der Form (i, i + 1) mit kleinen Gewichten (zufällige Gewichte zwischen 1 und 80). Und es gibt 4 * 10^5 zufällige Kanten mit Gewichten von 6000 bis 10000. Aber mein Programm arbeitet sehr schnell für diesen Testfall. –