Floyd-Warshall-Algorithmus Logik - Stuck

Ich versuche, diese Logik zu verstehen, was ist Los mit den Nachbarschaft-matrix, aber ich bin massivley verwirrt, wo er sagt über interspacing für a b c d........

Könnte jemand erklären, was hier Los ist?

Danke
(tagged as java als die Sprache, dies zeigte uns, also wenn jemand gepostet alle code-Beispiele, die Sie sehen konnte, war es in dieser Sprache)

http://compprog.wordpress.com/2007/11/15/all-sources-shortest-path-the-floyd-warshall-algorithm/

Hier ist der code:

for (k = 0; k < n; ++k) {
    for (i = 0; i < n; ++i)
        for (j = 0; j < n; ++j)
            /* If i and j are different nodes and if
               the paths between i and k and between
               k and j exist, do */
            if ((dist[i][k] * dist[k][j] != 0) && (i != j))
                /* See if you can't get a shorter path
                   between i and j by interspacing
                   k somewhere along the current
                   path */
                if ((dist[i][k] + dist[k][j] < dist[i][j]) ||
                        (dist[i][j] == 0))
                    dist[i][j] = dist[i][k] + dist[k][j];
  • Floyd-Warshall ist eine der typischen "DP-algo", zusammen mit Levenhstein die Edit-Distanz und die "0-1 Knapsack". Um es zu verstehen muss man verstehen, was "Dynamische Programmierung" ist über (die meisten Programmierer, die noch keine CS Grad nicht wissen, etwas über die DP). Der Wikipedia-Eintrag zum Thema ist gut: en.wikipedia.org/wiki/Dynamic_programming und ansonsten kann man versuchen zu beteiligen, die in ein paar online-Wettbewerb, der (wie TopCoder), wo in der Regel eine ganze Menge der Probleme brauchen eine DP-Lösung.
InformationsquelleAutor stan | 2010-04-22
Schreibe einen Kommentar