ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης



Σχετικά έγγραφα
ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 8 ο. Αναζήτηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

Ενότητα 10 Γράφοι (ή Γραφήµατα)

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Αναζήτηση Κατά Πλάτος

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Αναζήτηση Κατά Πλάτος

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 10η: Γράφοι Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος

Εισαγωγή στην Επιστήμη των Υπολογιστών

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Εισαγωγή στην Επιστήμη των Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

Διάλεξη 18: Γράφοι I Εισαγωγή

Αλγόριθμοι Γραφημάτων

Γράφοι. κόµβοι) και ένα σύνολο από γραµµές (που λέγονται ακµές) οι οποίες

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Διάλεξη 18: Γράφοι I - Εισαγωγή

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

Δυναµικός Προγραµµατισµός (ΔΠ)

Αλγόριθµοι και Πολυπλοκότητα

Αλγόριθµοι Γραφηµάτων

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Διάλεξη 20: Γράφοι I - Εισαγωγή

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Στοιχεία Θεωρίας Γράφων (Graph Theory)

ΠΛΗ111. Ανοιξη Μάθηµα 2 ο. Αλγόριθµοι και Αφηρηµένοι Τύποι εδοµένων. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Αλγόριθµοι και Πολυπλοκότητα

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αλγόριθµοι και Πολυπλοκότητα

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3

Βασικές Έννοιες Δοµών Δεδοµένων

Network Science. Θεωρεία Γραφηµάτων (2)

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Μετασχηματισμοί, Αναπαράσταση και Ισομορφισμός Γραφημάτων

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Στοίβες με Δυναμική Δέσμευση Μνήμης

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Γράφοι. Αλγόριθμοι και πολυπλοκότητα. Στάθης Ζάχος, Δημήτρης Φωτάκης

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Κεφάλαιο 4 Γραφήματα και Δένδρα

1 Διάσχιση κατευθυνόμενων γραφημάτων

ΛΙΣΤΕΣ. Ορισμός ΑΤΔ Λίστα ΑΤΔ Ακολουθιακή Λίστα Διαχείριση Δεικτών και Λιστών στη C ΑΤΔ Συνδεδεμένη Λίστα. Εφαρμογές και Χρήση Λιστών

Αλγόριθμοι Γραφημάτων

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

Προγραμματισμός Ι (ΗΥ120)

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στους Αλγόριθμους

ΘΕΩΡΙΑ ΓΡΑΦΩΝ. 10 η Διάλεξη Κατευθυνόμενοι Γράφοι Βασικά χαρακτηριστικά Αλγόριθμοι διάσχισης κατευθυνόμενων γράφων Λίγα Λόγια για Αλυσίδες Markov

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Δομές Δεδομένων Ενότητα 6

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΓΡΑΦΗΜΑΤΑ

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

(elementary graph algorithms)

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

Κατανεμημένα Συστήματα Ι

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 3: Δένδρα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Γράφοι. Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο. Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά.

Αναζήτηση Κατά Βάθος. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αλγόριθµοι και Πολυπλοκότητα

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων

Αναζήτηση Κατά Βάθος. Επιµέλεια διαφανειών:. Φωτάκης διαφάνειες για SCC: A. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

Αναζήτηση Κατά Βάθος. Επιμέλεια διαφανειών: Δ. Φωτάκης Συμπληρώσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Δομές Δεδομένων και Αλγόριθμοι

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Transcript:

ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 10 ο Γράφοι Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Γράφοι Ορισµός Αφηρηµένος τύπος δεδοµένων Υλοποίηση Αναζήτηση έντρο επικάλυψης Μεταβατική κλειστότητα Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 2

Ορισµός Γράφος G=(V,E) V(G): πεπερασµένο µη κενό σύνολο κορυφών Ε(G): σύνολο ακµών (ζεύγη κορυφών) Μη κατευθυνόµενος γράφος (undirected) Οι κορυφές των ακµών δεν έχουν διάταξη Αν (v 1,v 2 ) ακµή, οι κορυφές v 1 και v 2 γειτονικές (adjacent) Κατευθυνόµενος γράφος (directed) Οι ακµές είναι κατευθυνόµενες, π.χ. στην ακµή <v 1, v 2 >v 1 : ουρά, v 2 : κεφαλή Αν <v 1,v 2 > ακµή, η v 1 γειτονική προς την v 2, και η v 2 γειτονική από την v 1 1 1 2 4 2 4 3 3 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 3

Μονοπάτι Μονοπάτι από την κορυφή vp στην vq Ακολουθία κορυφών µε (v q, v 1 ), (v 1, v 2 ),, (v n, v q ) E(G) Μήκος µονοπατιού το πλήθος των ακµών του Απλό αν οι κορυφές του (εκτός πρώτης και τελευταίας) διαφορετικές Κύκλος απλό µονοπάτι στο οποίο η πρώτη και η τελευταία κορυφή ταυτίζονται Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 4

Συνδετικότητα Μη κατευθυνόµενος γράφος Ακυκλικός αν δεν περιέχει κύκλους Συνδεδεµένος αν για κάθε ζεύγος κορυφών v i, v j υπάρχει µονοπάτι από τη v i στη v j Βαθµός κορυφής το πλήθος των ακµών που έχουν άκρο την κορυφή Κατευθυνόµενος γράφος Ισχυρά συνδεδεµένος αν για κάθε ζεύγος κορυφών v i, v j υπάρχει κατευθυνόµενο µονοπάτι από την v i στη v j και από τη v j στη v i Ασθενώς συνδεδεµένος αν ο αντίστοιχος µη κατευθυνόµενος γράφος είναι συνδεδεµένος Έσω-βαθµός κορυφής είναι το πλήθος των ακµών που έχουν την κορυφή κεφαλή Έξω-βαθµός κορυφής είναι το πλήθος των ακµών που έχουν την κορυφή ουρά Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 5

Αφηρηµένος Τύπος εδοµένων Γράφος Create ηµιουργία γράφου Insert edge Εισαγωγή ακµής Delete edge ιαγραφή ακµής Insert vertex Εισαγωγή κορυφής Delete vertex ιαγραφή κορυφής Adjacent Υπαρξη ακµής µεταξύ κορυφών... Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 6

Πίνακας Γειτνίασης Έστω γράφος G=(V,E) µε n 1 Ο πίνακας γειτνίασης είναι δισδιάστατος nxn πίνακας Α µε a ij = 1, αν (v i, v j ) E(G) και a ij = 0, αν (v i, v j ) E(G) 1 3 0 1 1 0 1 3 0 1 0 0 2 A = 1 0 1 1 1 1 0 0 2 A = 0 0 0 0 0 1 0 0 4 0 1 0 0 4 0 1 0 0 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 7

Υλοποίηση µε Πίνακα #define N 10 int adj[n][n]; /* θεωρούµε κατευθυνόµενο γράφο µε N κορυφές */ void addedge(int a[], int v1, int v2) { if (v1 >= 0 && v1 < N && v2 >= 0 && v2 < N) a[v1][v2] = 1; } void deledge(int a[], int v1, int v2) { if (v1 >= 0 && v1 < N && v2 >= 0 && v2 < N) a[v1][v2] = 0; } intadjacent(inta[], intv1, intv2) { if (v1 >= 0 && v1 < N && v2 >= 0 && v2 < N) return (a[v1][v2]); else return -1; /* λάθος κορυφής */ } Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 8

Λίστα Ακµών Σε κάθε κορυφή αντιστοιχεί ένας κόµβος Οι κόµβοι κορυφών σχηµατίζουν συνδεδεµένη λίστα Σε κάθε κορυφή αντιστοιχούν κάποιοι κόµβοι ακµών Οι κόµβοι ακµών κάθε κορυφής σχηµατίζουν ξεχωριστή λίστα 1 2 4 3 1 2 3 λίστα κορυφών 4 λίστα ακµών Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 9

Υλοποίηση µε Λίστα Ακµών typedef struct node *nodeptr_t; typedef struct node { int data; nodeptr_t vertex, edge; } node_t; /* κορυφήήακµή */ typedef nodeptr_t graph_t; graph_t g; /* γράφος */ int adjacent{ nodeptr_t p, nodeptr_q) { nodeptr_t c = p->edge; /* διατρέχουµε τηλίσταάκµών */ while (c) if (c->vertex == q) return 1; else c = c->edge; return 0; } Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 10

Εισαγωγή Κορυφής και Ακµής void insertvertex(int data, graph_t *g) { nodeptr_t c = (nodeptr_t) malloc(sizeof(node_t)); c->data = data; void insertedge( nodeptr_t p, if (!adjacent(p, q)) { nodeptr_t q) { nodeptr_t c = (nodeptr_t) malloc(node_t); } /* λίστα κορυφών */ c->vertex = *g; /* λίστα ακµών */ c->edge = NULL; *g = c; } } /* λίστα ακµών */ c->vertex = q; /* λίστα κορυφών */ c->edge = p->edge; p->edge = c; Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 11

Αναζήτηση πρώτα κατά βάθος Έστω ότι κατά τη διαδροµή επισκεπτόµαστε την κορυφή vµε γειτονικές w 1, w 2,, w n Στη συνέχεια επισκεπτόµαστε την κορυφή w 1 και τις γειτονικές της πριν προχωρήσουµε στιςw 2,,w n Α Β C D E DFS: ABEFHCDG F G /* DFS: depth first search */ for (i = 0; i < n; i++) visited[v i ] = 0 for (i = 0; i < n; i++) if (!visited[v i ]) dfstraverse(v i ) dfstraverse(v) visited[v] = 1, visit(v) γειτονική κορυφή w της v if (!visited[w]) /* ακµή (v,w) */ dfstraverse(w) H Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 12

Αναζήτηση πρώτα κατά πλάτος Έστω ότι κατά τη διαδροµή επισκεπτόµαστε την κορυφή vµε γειτονικές w 1, w 2,, w n Στη συνέχεια επισκεπτόµαστε τις κορυφές w 1, w 2,,w n πριν επισκεπτούµε τις γειτονικές της w 1 κοκ. Α Β C D E BFS: ABCDEFGH F G /* BFS: breadth first search */ for (i = 0; i < n; i++) visited[v i ] = 0 for (i = 0; i < n; i++) if (!visited[v i ]) bfstraverse(v i ) bfstraverse(v) visited[v] = 1, enqueue(q, v) while (!empty(q)) u = dequeue(q), visit(u) γειτονική κορυφή w της u if (!visited[w]) /* ακµή (u,w)*/ visited[w] = 1 enqueue(q, w) H Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 13

Πολυπλοκότητα DFS & BFS Με πίνακα γειτνίασης Ο( V ) για την επίσκεψη κάθε κόµβου Ο( V 2 ) για την επίσκεψη όλων των γειτονικών κάθε κόµβου Σύνολο: Ο( V + V 2 ) = O( V 2 ) Με λίστα ακµών Ο( V ) για την επίσκεψη κάθε κόµβου Ο( E ) για την επίσκεψη όλων των γειτονικών κάθε κόµβου Σύνολο: Ο( V + E ) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 14

έντρο Επικάλυψης (Spanning Tree) Από γράφο G παίρνουµε υπογράφοτµε ιδιότητες Συνδεδεµένος ακυκλικός γράφος (δέντρο) Περιέχει όλες τις κορυφές του G Περιέχει ελάχιστο πλήθος ακµών του G Γενικά για κάθε δέντρο ισχύει E = V - 1 Κάθε κόµβοςεκτόςτηςρίζαςέχειµοναδικό γονέα Κάθε ακµή συνδέει έναν κόµβο µε τον γονέα του Μπορούµε ναδηµιουργήσουµε δέντρο επικάλυψης Με αναζήτηση πρώτα κατά βάθος ή πλάτος (DFS ή BFS) Αρκεί να σηµειώνουµε κάθε ακµή πουχρησιµοποιούµε DFS Spanning Tree 3 1 2 4 BFS Spanning Tree 3 1 2 4 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 15

Μεταβατική Κλειστότητα Υπάρχει µονοπάτι από µία κορυφή σε άλλη κορυφή του γράφου; Αν υπάρχει µονοπάτι µήκους 1, τότε A[i][j] = 1 Αν υπάρχει µονοπάτι µήκους 2, τότε A[i][1] Λ A[1][j] V V A[i][n] Λ A[n][j] = 1, και γενικά αρκεί να υπολογίσουµε τηντιµή του πίνακα A ( 2 ) n = A[i][k] A[k][j] k =1 Για να εξετάσουµεανυπάρχει µονοπάτι µήκους m n, αρκεί να υπολογίσουµε τηντιµή του πίνακα A (m) = A A (m 1 ) µ ε Α ( 1 ) = Α, m = 2,...,n Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 16

Μείωση Κόστους Υπολογισµού Εφόσον το κόστος πολλαπλασιασµού δύο πινάκων nxn είναι Ο(n 3 ) το συνολικό κόστος για τον υπολογισµό τουα (n) είναι Ο(n 4 ) Εναλλακτικά έστω P k πίνακας τέτοιος ώστε P k [i][j] = 1, αν και µόνο αν υπάρχει µονοπάτι από την v i στην v j που περνά µόνον από τις κορυφές v 1,,v k Αν P k [i][j] = 1, τότε υπάρχει µονοπάτι από τη v i στη v j που περνά µόνο από τις v 1,...,v k (άρα και τις v 1,,v k+1 ), οπότε P k+1 [i][j] = 1 Αν P k [i][j]=0 και P k+1 [i][j]=1, τότε P k [i][k+1] = 1 και P k [k+1][j] = 1 Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 17

Αλγόριθµος Warshall (1962) Pnew = A for k: 0..n-1 Pold = Pnew for i: 0..n-1 if (Pold[i][k]) for j: 0..n-1 if (Pold[k][j]) Pnew[i][j] = 1 /* υπολογισµός Pk */ Συνολικό κόστος: O(n 3 ) Ανοιξη 2005 Στέργιος Β. Αναστασιάδης 18