Εδώ θα περιγράψουμε ένα αλγόριθμο που βρίσκει όλες τις αποστάσεις ανάμεσα σε όλα τα ζευγάρια κορυφών, σε ένα γράφημα με (μη αρνητικά) βάρη στις ακμές του. Πρέπει να τονίσουμε ότι το πρόβλημα που λύνουμε εδώ αλγοριθμικά είναι το πρόβλημα των αποστάσεων από «οποιαδήποτε σε οποιαδήποτε» κορυφή. Στο τέλος του αλγορίθμου δηλ. θα μπορούμε να απαντήσουμε άμεσα (σε σταθερό χρόνο, όπως λέμε) σε κάθε ερώτημα «ποια είναι η απόσταση ανάμεσα στις κορυφές και του γραφήματος;».
Αν δε μας ενδιέφερε αυτή η γενικότητα αλλά θέλαμε, π.χ., να γνωρίζουμε, μετά το πέρας του αλγορίθμου, όλες τις αποστάσεις από την κορυφή προς όλες τις άλλες, τότε θα χρησιμοποιούσαμε διαφορετικό αλγόριθμο. Ο αλγόριθμος που δίνουμε σε αυτή την παράγραφο θα αποτελούσε «overkill» για ένα τέτοιο ερώτημα: υπολογίζει πολλά αδιάφορα πράγματα.
Θεωρούμε, ως συνήθως, το σύνολο κορυφών του γραφήματος να είναι το και γράφουμε για το βάρος της ακμής (το οποίο συμφωνούμε να θεωρούμε αν η ακμή αυτή δεν υπάρχει).
Ο παρακάτω αλγόριθμος τροποποιεί σε κάθε επανάληψή του τον πίνακα ο οποίος παίρνει αρχικές τιμές στο βήμα 1 και ενημερώνεται φορές στο βήμα 3.
Για το παραπάνω σύνολο είναι κενό και ο ισχυρισμός σημαίνει ότι ισούται με το βάρος της πλευράς μια και το σύνολο των μονοπατιών από το στο που δε χρησιμοποιούν καμία ενδιάμεση κορυφή αποτελείται από την ακμή και μόνο. Άρα ο ισχυρισμός είναι αληθής για .
Υποθέτουμε τώρα ότι ο ισχυρισμός ισχύει μέχρι και για , θεωρούμε ένα ελάχιστο μονοπάτι από το στο που χρησιμοποιεί ενδιάμεσες κορυφές μόνο από το σύνολο , και ξεχωρίζουμε δύο περιπτώσεις.
Στην πρώτη περίπτωση έχουμε φυσικά .
Εστω ότι ισχύει το (β). Μπορούμε εύκολα να δείξουμε ότι όποιο και να είναι το ελάχιστο μονοπάτι από το στο περιέχει το ακριβώς μια φορά (αν το περιέχει δυο ή παραπάνω μπορούμε να το μικρύνουμε το μονοπάτι παραλείποντας ένα κομμάτι ανάμεσα σε δύο εμφανίσεις του ). Επίσης, το κομμάτι του μονοπατιού από το στο είναι ένα ελάχιστο μονοπάτι από το στο που χρησιμοποιεί ενδιάμεσες κορυφές από το σύνολο . Αρα το μήκος του είναι και, ομοίως, το μήκος του μονοπατιού από το στο είναι . Το συνολικό μήκος του μονοπατιού είναι λοιπόν σ'αυτή την περίπτωση
Επίσης, σε κάθε περίπτωση, έχουμε τις ανισότητες
Από τα παραπάνω προκύπτει ότι
Μπορεί κανείς εύκολα να δεί ότι ο αλγόριθμος Floyd-Warshall που περιγράψαμε παίρνει περίπου υπολογιστικά βήματα για να τελειώσει.
Mihalis Kolountzakis 2015-11-28