Ελάχιστα Γεννητορικά ένδρα



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

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

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

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

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

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

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

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

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

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

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

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

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

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

Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

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

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

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

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

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

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

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

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

Θεωρία Γραφημάτων 5η Διάλεξη

Ασκήσεις στους Γράφους. 1 ο Σετ Ασκήσεων Βαθμός Μονοπάτια Κύκλος Euler Κύκλος Hamilton Συνεκτικότητα

... a b c d. b d a c

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

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

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

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

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

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

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων)

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

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

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

Μη κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Υπογραφήµατα.

Στοιχεία Θεωρίας Γραφηµάτων (3)

Απαρίθµηση Μονοπατιών. Στοιχεία Θεωρίας Γραφηµάτων (3) Μονοπάτια και Κυκλώµατα Euler. Ορέστης Τελέλης

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

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόγχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

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

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

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

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

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

3η Σειρά Γραπτών Ασκήσεων

jτο πλήθος των ταξιδιών που κάνει η αεροσυνοδός µέχρι την j ηµέρα. Σχηµατίζω µία ακολουθία που αποτελείται από τα a.

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

Θεωρία Γραφημάτων 5η Διάλεξη

Γράφοι: κατευθυνόμενοι και μη

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

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

Outline 1 Άσκηση 1 2 Άσκηση 2 3 Άσκηση 3 4 Άσκηση 4 5 Άσκηση 5 6 Προγραμματιστική Άσκηση 1 7 Προγραμματιστική Άσκηση 2 (CoReLab - NTUA) Αλγόριθμοι - 3

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

3η Σειρά Γραπτών Ασκήσεων

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

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

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

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

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

Θεωρία Γραφημάτων: Ορολογία και Βασικές Έννοιες

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Πολυγραφήµατα (Multigraphs)

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

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

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

Γεωµετρικοί Αλγόριθµοι (CLR, κεφάλαιο 35)

Ελάχιστο Συνδετικό Δέντρο

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

Ελάχιστο Συνδετικό Δέντρο

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι έχουµε δει µέχρι τώρα. Υπογράφηµα Γράφοι

Ελάχιστο Συνδετικό έντρο

Στοιχεία Θεωρίας Γραφηµάτων (1)

Ελάχιστο Συνδετικό Δέντρο

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

u v 4 w G 2 G 1 u v w x y z 4

ΠΛΗ 20, 4 η ΟΣΣ: Βασικές Έννοιες Θεωρίας Γραφημάτων

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

(β) Θεωρούµε µια ακολουθία Nθετικών ακεραίων η οποία περιέχει ακριβώς

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

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

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

Θεωρία Γραφημάτων 6η Διάλεξη

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Transcript:

λάχιστα Γεννητορικά ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος του Prim και ο αλγόριθµος του Kruskal για εύρεση λάχιστων Γεννητορικών ένδρων ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-

λάχιστα Γεννητορικά ένδρα (Γ ) Έστω ένας µη κατευθυνόµενος γράφος µε βάρη, G. Γεννητορικό δένδρο (spanning tree, Γ ) του G ονοµάζουµε κάθε δένδρο T που περιέχει όλους τους κόµβους του G και κάθε ακµή του οποίου είναι και ακµή του G. Με άλλα λόγια το Τ ορίζει κάποιο υποσύνολο των ακµών του G το οποίο. εξακολουθεί να κρατά τον γράφο συνεκτικό, και 2. δεν περιέχει κύκλο. Παρατήρηση: αφαίρεση ακµής από ένα Γ έχει σαν αποτέλεσµα τη µετατροπή του γράφου σε µη-συνεκτικό γράφο. Το βάρος ενός Γ είναι το άθροισµα των βαρών όλων των ακµών του. λάχιστο Γ (Γ ) είναι το Γ µε το µικρότερο βάρος. Ένας γράφος δυνατό να έχει περισσότερα από ένα Γ. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-2

Παραδείγµατα Γ Γράφος G Γ A 7 5 B Γ A B Γ 9 6 2 6 9 6 2 Ζ 2 Ζ Γ 2 A 7 5 B Γ Βάρος: 9 2 Ζ Βάρος: 6 ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-3

Ιδιότητες Γ Όλες οι κορυφές καλύπτονται, γι αυτό το δένδρο ονοµάζεται και δένδρο σκελετός (spanning tree). Ένα γεννητορικό δένδρο γράφου µε n κορυφές έχει n- ακµές. Ορισµός: Έστω γράφος G=(V,E), και U υποσύνολο του V. Τότε ονοµάζουµε γέφυρα του U, το σύνολο των ακµών που συνδέουν κορυφές του Uµε κορυφές του V-U. Γ U V-U ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-4

Ιδιότητες Γ Αν Γ είναι µια γέφυρα οποιουδήποτε υποσυνόλου των κορυφών ενός γράφου, τότε κάθε Γ θα περιέχει τουλάχιστον µια ακµή από τη Γ. Γνωστό και βαθιά µελετηµένο πρόβληµα στην επεξεργασία γράφων είναι η εύρεση Γ. Έχει ποικίλες εφαρµογές. Κύρια ιδέα: αφαιρούµε όσες ακµές µπορούµε, ελαχιστοποιώντας το συνολικό βάρος και διατηρώντας τη συνεκτικότητα. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-5

Οαλγόριθµός του Prim Αρχικά το δένδρο περιέχει ακριβώς µία κορυφή, η οποία επιλέγεται τυχαία. Για να κτίσουµε το δένδρο, σε κάθε βήµα συνδέουµε ακόµα µια κορυφή στο παρόν δένδρο µε την επιλογή και εισαγωγή µιας καινούριας ακµής (από τις ακµές του γράφου). Πως µπορούµε να επιλέξουµε την κατάλληλη ακµή; Στην περίπτωση αυτού του αλγόριθµου, αν S είναι το σύνολο των κορυφών του παρόντος δένδρου, επιλέγουµε την ακµή µε το µικρότερο βάρος από τις ακµές που ανήκουν στη γέφυρα του S. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-6

Παράδειγµα κτέλεσης Γράφος G A 7 5 B Γ 9 2 6 2 Ζ : A Α Β : 7, : 9 2: 7 Α : 9 A B Β Γ : 5, :, Ζ : 2 3: A 7 B Α : 9 Β Γ : 5, Ζ : 2 :, Ζ : 2 ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-7

Παράδειγµα κτέλεσης (συν.) 7 4: A B Β Γ : 5, Ζ : 2 Ζ : 2 7 5: A B Β Γ : 5 Ζ Γ : 6 2 Ζ 6: A 7 5 B Γ 2 Ζ ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-8

Η Υλοποίηση ιατηρούµετον πίνακα S όπου για κάθε κορυφή u, S[u]=0 σηµαίνει ότι η u δεν ανήκει µέχρι στιγµής στο δένδρο και S[u]= ότι ανήκει, και... ύο πίνακες, P και C για κάθε κορυφή u που δεν βρίσκεται ήδη στο δένδρο όπου στη θέση P[u] φυλάγουµε την κορυφή του δένδρου που βρίσκεται πιο κοντά στην u, και στη θέση C[u] φυλάγουµε το βάρος της ακµής (u, P[u]), το οποίο συµβολίζουµε ως d(u, P[u]). ιαλέγουµε την επόµενη ακµή του δένδρου βρίσκοντας το µικρότερο C[u] από τις κορυφές u που δεν βρίσκονται στο δένδρο ως εξής: minvertex(int S[], int C[]){ } επίστρεψε την κορυφή j για την οποία S[j] = 0 και για κάθε κορυφή k, if S[k]=0 then C[j] <= C[k] ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-9

Η Υλοποίηση Με την επιλογή της ακµής (u,v), προσθέτουµε την ακµή και την κορυφή u στο δένδρο. Με κάθε εισαγωγή κόµβου u στο δένδρο οι πίνακες C και P πιθανό να χρειαστούν αλλαγές: για κάθε w γείτονα του u if (d(u,w) < C[w]) P[w] = u; C[w] = d(u,w); ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-0

Prim(graph G){ Η Yλοποίηση int C[n]=, P[n]; int S[n]=0; διάλεξε τυχαία κορυφή v; S[v] = ; Tree = {}; } for (i=; i< V ; i++){ για κάθε w γείτονα του v if (d(v,w) < C[w]) P[w] = v; C[w] = d(v,w); v = minvertex (S, C); S[v]=; Tree = Tree {(P[v],v)}; } ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-

Ανάλυση Χρόνου κτέλεσης Ηδιαδικασία minvertex µπορεί να υλοποιηθεί χρησιµοποιώντας ακριβώς ένα while-loop: απαιτεί χρόνο Ο( V ), όπου V είναι ο αριθµός των κορυφών του γράφου. Ο χρόνος εκτέλεσης του βρόχου της εντολής for της διαδικασίας είναι Ο( V ). (Και για υλοποίηση µε πίνακα γειτνίασης και για υλοποίηση µε λίστα γειτνίασης.) Άρα ο ολικός χρόνος εκτέλεσης είναι Θ( V ²). Μπορούµε να βελτιώσουµε τον αλγόριθµο; ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-2

Υλοποίηση µε Σωρούς Θεωρούµευλοποίηση γράφου µε λίστα γειτνίασης. Οι πίνακες C και Pµπορεί να αντικατασταθούν από ένα σωρό που περιέχει στοιχεία της µορφής (d, u, v), όπου d είναι το βάρος της ακµής (u,v). Κάθε φορά που προστίθεται µια καινούρια κορυφή στο δένδρο, προσθέτουµε στον σωρό πληροφορία για κάθε γειτονική της ακµή, η οποία συγκρατεί το βάρος της ακµής. Άρα ο σωρός θα κρατά περισσότερες από µια πληροφορία για κάθε κορυφή. Ο σωρός θα πρέπει να έχει µήκος. Η επιλογή καινούριας ακµής θα γίνεται µε τη διαδικασία σωρών DeleteMin. Αφού όµως υπάρχουν περισσότερες από µια πληροφορίες για κάθε ακµή, και αφού η DeleteMin αφαιρεί µόνο την πληροφορία που αντιστοιχεί στην ακµή µετοµικρότερο βάρος, θα πρέπει να είµαστε προσεκτικοί ούτως ώστε να µην προσθέτουµεακµές µεταξύ κορυφών που ήδη γνωρίζουµε. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-3

Prim2(graph G){ int S[n]=0; Υλοποίηση µε Σωρούς } ΜakeEmptyHeap(H); διάλεξε τυχαία κορυφή v; S[v] = ; Tree = {}; for (i=; i< V ; i++) για κάθε w γείτονα του v Insert((d(w,v),w,v), H); (d,v,u) = DeleteMin(H); while (S[v] == ) (d,v,u) = DeleteMin(H); S[v]=; Tree = Tree {(u,v)}; Αν E = αριθµός των ακµών του G, ο χρόνος εκτέλεσης των Ιnsert και minvertex είναι log E. O ολικός χρόνος εκτέλεσης είναι Ο( log E ). ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-4

Ορθότητα του Αλγόριθµου ίναι εύκολο να δούµε ότι ο αλγόριθµος επιστρέφει ένα Γ. ίναι λιγότερο εύκολο να αποφασίσουµε κατά πόσο το δένδρο που επιστρέφεται είναι Γ. Απόδειξη µε αντίφαση: Έστω ότι το δένδρο δεν είναι Γ. Έστω ότι ο αλγόριθµος προσθέτει τις ακµές στο δένδρο µε τη σειρά e, e 2,, e n. ιαλέγουµε την πρώτη ακµή στην ακολουθία, f = e j, για την οποία η ακολουθία e,, e j δεν είναι µέρος κανενός Γ του γράφου. Έστω S το σύνολο των κορυφών που βρίσκονται στις j- πρώτες ακµές. Τότε η f είναι η ακµή µε το µικρότερο βάρος από τις ακµές στη γέφυρα του S. Έστω ότι Τ είναι Γ που περιέχει τις j- πρώτες ακµές. To T πρέπει να περιέχει τουλάχιστον µια ακµή e από τη γέφυρα του S. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-5

Ορθότητα του Αλγόριθµου Το Τ έχει τη µορφή: S e V-S Έστω Τ ο γράφος (δένδρο;) που λαµβάνεται από το Τ µε αντικατάσταση της ακµής eµε την ακµή f: S V-S f Το Τ είναι Γ και αφού το Τ είναι Γ τότε και το Τ είναι Γ. Αυτό δίνει αντίφαση στην υπόθεση µας ότι οι πρώτες j ακµές δεν περιέχονται σε κανένα Γ. ποµένως ο αλγόριθµος είναι ορθός. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-6

Οαλγόριθµος του Kruskal Ακόµα ένας αλγόριθµος που υπολογίζει Γ. νώ ο αλγόριθµος του Prim επεξεργάζεται µια-µια τις κορυφές, ο αλγόριθµος του Kruskal επεξεργάζεται µια-µια τις ακµές του γράφου. πίσης, ενώ σε κάθε βήµα του αλγόριθµου του Prim οι επιλεγµένες ακµές σχηµατίζουν ένα δένδρο, στην περίπτωση του αλγόριθµου Kruskal, σχηµατίζουν ένα δάσος (ένα σύνολο από δένδρα). Κεντρική ιδέα. Αρχικά το Τ είναι άδειο. επεξεργαζόµαστε µια-µια τις ακµές, σε αύξουσα σειρά βάρους: αν η ακµή e έχει το ελάχιστο βάρος από αυτές που δεν έχουµε µέχρι στιγµής επεξεργασθεί, ελέγχουµε αν η εισαγωγή της e στο Τ δεν προκαλεί κύκλο. Αν η απάντηση είναι θετική, προσθέτουµε την e στο Τ, δηλ. Τ := Τ {e}. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-7

Παράδειγµα κτέλεσης Γράφος G 7 5 A B Γ 9 2 6 2 Ζ Αρχική Κατάσταση A Β Γ Ζ Μετά από επιλογή της πρώτης ακµής (Β,) A Β Γ Ζ ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-8

Παράδειγµα κτέλεσης Μετά από επιλογή της δεύτερης ακµής (,) A B Γ Ζ Μετά από επιλογή της τρίτης ακµής (Β,Ζ) A B Γ 2 Ζ ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-9

Παράδειγµα κτέλεσης Μετά από επιλογή της τέταρτης ακµής (Β,Γ) A B 5 Γ 2 Ζ Μετά από επιλογή της πέµπτης ακµής (Α,Β) A 7 B 5 Γ 2 Ζ ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-20

Μερικά Σχόλια Η ορθότητα του αλγόριθµου µπορεί να αποδειχθεί όπως και στην περίπτωση του αλγόριθµου του Prim. To σύνολο των ακµών µπορεί να διατηρηθεί ως µία σωρός. Για να ελέγξουµε αν µια ακµή µπορεί να προστεθεί, διατηρούµε ένα partition Π όλων των κορυφών: υο κορυφές βρίσκονται στο ίδιο υποσύνολο του Π αν υπάρχει µονοπάτι µεταξύ τους. Αρχικά κάθε υποσύνολο του Π περιέχει ακριβώς µια κορυφή. Στη συνέχεια, µια ακµή (u,v) µπορεί να προστεθεί αν οι κορυφές u και v βρίσκονται σε διαφορετικά υποσύνολα του Π. Με την προσθήκη µιας ακµής (u,v), υποσύνολα του Π που περιέχουν τις κορυφές u και v, ενώνονται. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-2

O αλγόριθµος Kruskal ψευδοκώδικας kruskal (graph G){ buildheap(η); (που περιέχει όλες τις ακµές του G) partition A = {{v},{v2},,{vn}}; i = ; while (i < n){ (u,v) = DeleteMin(H); U = find(a,u); V = find(a,v); if (U!=V) T = T {(u,v)}; union(a, U, V); i++; } Χρόνος κτέλεσης: Η διαδικασία find(a,u) βρίσκει και επιστρέφει το υποσύνολο του Α που περιέχει το στοιχείο u και η διαδικασία union(a,u,v) επιστρέφει το σύνολο Α = Α {U,V} { U V}. ΠΛ 23 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 2-22