ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Γραφήματα & Επίπεδα Γραφήματα
Advertisements

Επίπεδα Γραφήματα (planar graphs)
1 Στοιχεία Θεωρίας Συνόλων Πολυσύνολα. 2 Εισαγωγή •Σύνολο είναι μία συλλογή διακεκριμένων αντικειμένων •Ωστόσο, υπάρχουν περιπτώσεις στις οποίες συναντάμε.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Διακριτά Μαθηματικά ΙI Δέντρα
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
Αλγόριθμοι Ταξινόμησης
Αλγόριθμοι και Πολυπλοκότητα
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
Παραγωγή τυχαίων γεωμετρικών δομών Παναγιώτης Τίγκας Ενδιάμεση εξέταση πτυχιακής εργασίας.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Γραφήματα & Επίπεδα Γραφήματα
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Επικαλύπτοντα Δέντρα και Σύνολα Τομής
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
Προσεγγιστικοί Αλγόριθμοι
Τυχαιοκρατικοί Αλγόριθμοι TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA Πιθανότητες και Αλγόριθμοι Ανάλυση μέσης.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Γράφοι: Προβλήματα και Αλγόριθμοι
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Σχεδιαση Αλγοριθμων - Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο1 Άπληστοι αλγόριθμοι βελτιστοποίησης Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών.
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Graphs (Εισαγωγή)
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Αλγόριθμοι Ταξινόμησης
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Εξόρυξη Δεδομένων και Αλγόριθμοι Μάθησης. K-means k-windows k-means: 2 φάσεις 1. Μια διαμέριση των στοιχείων σε k clusters 2. Η ποιότητα της διαμέρισης.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
Ελάχιστο Συνδετικό Δέντρο
Επίπεδα Γραφήματα: Έλεγχος Επιπεδότητας TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A αβ ζ η ε γ θ Το γράφημα.
ΣΥΝΟΛΑ.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
1 Κατανεμημένοι αλγόριθμοι για την εύρεση γεννητικών δέντρων (spanning trees) 1.Ένας σταθερός κόμβος στέλνει ένα ‘start’ μήνυμα σε κάθε γειτονική του ακμή.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Ενότητα 4 Δ ΕΝΔΡΑ Σταύρος Δ. Νικολόπουλος 1.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Θεωρία Υπολογισμού Κλάσεις P και NP.
Δένδρα ΘΕΩΡΙΑ ΓΡΑΦΩΝ Εργαστήριο Τεχνολογίας & Επεξεργασίας Δεδομένων Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 3: Δένδρα.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Συνδεσμικότητα ΘΕΩΡΙΑ ΓΡΑΦΩΝ Εργαστήριο Τεχνολογίας & Επεξεργασίας Δεδομένων Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΤΕΙ Αθήνας: Σχολή ΤΕΦ: Τμήμα Ναυπηγικής Εφαρμογές Η/Υ στην Ναυπηγική ΙΙ ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ NA0703C39 Εξάμηνο Ζ’ Διδάσκων Κωνσταντίνος Β. Κώστας Παρουσίαση.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ Άπληστη Αναζήτηση και Αναζήτηση Α* ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ.
1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ. 2 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα –Αναζήτηση κατά βάθος (Depth-first search – DFS) –Αναζήτηση κατά πλάτος (Breadth-first.
Γράφημα είναι μία διμελής σχέση επί ενός συνόλου την οποία παριστάνουμε με γραφικό τρόπο.
Σήματα και Συστήματα 11 10η διάλεξη. Σήματα και Συστήματα 12 Εισαγωγικά (1) Έστω γραμμικό σύστημα που περιγράφεται από τη σχέση: Αν η είσοδος είναι γραμμικός.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
ΧΡΩΜΑΤΙΣΜΟΣ ΓΡΑΦΩΝ Δημοκρίτειο Πανεπιστήμιο Θράκης, Μαθηματικό Σπουδαστήριο Πολυτεχνικής Σχολής.
Συναρτήσεις Πληθάριθμοι Συνόλων
Διερεύνηση γραφήματος
Δένδρα Δένδρο είναι ένα συνεκτικό άκυκλο γράφημα. Δένδρο Δένδρο Δένδρο
ΓΡΑΦΟΙ (GRAPHS).
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Στοιχεία Θεωρίας Γραφημάτων
Επικαλύπτοντα Δέντρα και Σύνολα Τομής
Συντομότερα Μονοπάτια
ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΓΡΑΦΗΜΑΤΩΝ II
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Μεταγράφημα παρουσίασης:

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal για εύρεση Ελάχιστων Γεννητορικών Δένδρων Ελάχιστα Γεννητορικά Δένδρα

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

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-3 Παραδείγματα ΓΔ Γράφος G ΓΔ2 7 5 AB Δ Ε Γ Ζ AB Δ Ε Γ Ζ AB Δ Ε Γ Ζ Βάρος: 16 Βάρος: 19 ΓΔ1

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-4 Ιδιότητες ΕΓΔ Όλες οι κορυφές ‘καλύπτονται’, γι’αυτό το δένδρο ονομάζεται και δένδρο σκελετός/επικάλυψης (spanning tree). Ένα γεννητορικό δένδρο γράφου με n κορυφές έχει n-1 ακμές. Ορισμός: Έστω γράφος G=(V,E), και U υποσύνολο του V. Τότε ονομάζουμε γέφυρα του U, το σύνολο των ακμών που συνδέουν κορυφές του U με κορυφές του V-U. Γ U V-U

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-5 Ιδιότητες ΕΓΔ Αν Γ είναι μια γέφυρα οποιουδήποτε υποσυνόλου των κορυφών ενός γράφου, τότε κάθε ΓΔ θα περιέχει τουλάχιστον μια ακμή από τη Γ. Γνωστό και βαθιά μελετημένο πρόβλημα στην επεξεργασία γράφων είναι η εύρεση ΕΓΔ. Έχει ποικίλες εφαρμογές. Κύρια ιδέα: αφαιρούμε όσες ακμές μπορούμε, ελαχιστοποιώντας το συνολικό βάρος και διατηρώντας τη συνεκτικότητα.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-6 Ο αλγόριθμός του Prim Αρχικά το δένδρο περιέχει ακριβώς μία κορυφή, η οποία επιλέγεται τυχαία. Για να κτίσουμε το δένδρο, σε κάθε βήμα συνδέουμε ακόμα μια κορυφή στο παρόν δένδρο με την επιλογή και εισαγωγή μιας καινούριας ακμής (από τις ακμές του γράφου). Πως μπορούμε να επιλέξουμε την κατάλληλη ακμή; Στην περίπτωση αυτού του αλγόριθμου, αν S είναι το σύνολο των κορυφών του παρόντος δένδρου, επιλέγουμε την ακμή με το μικρότερο βάρος από τις ακμές που ανήκουν στη γέφυρα του S.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-7 Παράδειγμα Εκτέλεσης 7 5 AB Δ Ε Γ Ζ : A Α B 7 2: Β : 7, Δ : 9 Β Γ : 5,Ε : 1, Ζ : 2 Ε 1 3:3: Ε Δ : 1, Δ 1 4:4: Ζ 2 5:5: Ζ Γ : 6 Γ 5 6:6:

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-8 Η Υλοποίηση Διατηρούμε τον πίνακα S όπου για κάθε κορυφή u, S[u]=0 σημαίνει ότι η u δεν ανήκει μέχρι στιγμής στο δένδρο και S[u]=1 ότι ανήκει, και... Δύο πίνακες, P και C τέτοιους ώστε για κάθε κορυφή u που δεν βρίσκεται ήδη στο δένδρο –στη θέση P[u] φυλάγουμε την κορυφή του δένδρου που βρίσκεται πιο κοντά στην u, και –στη θέση C[u] φυλάγουμε το βάρος της ακμής (u, P[u]), το οποίο συμβολίζουμε ως d(u, P[u]). Διαλέγουμε την επόμενη ακμή του δένδρου βρίσκοντας το μικρότερο C[u] από τις κορυφές u που δεν βρίσκονται στο δένδρο ως εξής: minVertex(int S[], int C[]){ επίστρεψε την κορυφή j για την οποία (1) S[j] = 0, και (2) για κάθε κορυφή k, if S[k]=0 then C[j] <= C[k] }

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-9 Η Υλοποίηση Με την επιλογή της ακμής (u,v), προσθέτουμε την ακμή και την κορυφή u στο δένδρο. Με κάθε εισαγωγή κόμβου u στο δένδρο οι πίνακες C και P πιθανό να χρειαστούν αλλαγές: για κάθε w γείτονα του u if (d(u,w) < C[w]) P[w] = u; C[w] = d(u,w);

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-10 Η Yλοποίηση Prim(graph G){ int C[n]= , P[n]; int S[n]=0; διάλεξε τυχαία κορυφή v; S[v] = 1; Tree = {}; for (i=1; 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]=1; Tree = Tree  {(P[v],v)}; } }

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-11 Παράδειγμα Εκτέλεσης 7 5 AB Δ Ε Γ Ζ A B 7 Ε 1 Δ 1 Ζ 2 Γ 5 ABΓΔΕΖ P C S     A 9 A 1 5 B 1 B 2 B 1 1 E 1 1 1

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-12 Ανάλυση Χρόνου Εκτέλεσης Η διαδικασία minVertex μπορεί να υλοποιηθεί χρησιμοποιώντας ακριβώς ένα while -loop: απαιτεί χρόνο Ο(|V|), όπου |V| είναι ο αριθμός των κορυφών του γράφου. Ο χρόνος εκτέλεσης του βρόχου της εντολής for της διαδικασίας είναι Ο(|V|). (Και για υλοποίηση με πίνακα γειτνίασης και για υλοποίηση με λίστα γειτνίασης.) Άρα ο ολικός χρόνος εκτέλεσης είναι Θ(|V|²). Μπορούμε να βελτιώσουμε τον αλγόριθμο;

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-13 Υλοποίηση με Σωρούς Θεωρούμε υλοποίηση γράφου με λίστα γειτνίασης. Οι πίνακες C και P μπορεί να αντικατασταθούν από ένα σωρό που περιέχει στοιχεία της μορφής (d, u, v), όπου d είναι το βάρος της ακμής (u,v). Κάθε φορά που προστίθεται μια καινούρια κορυφή στο δένδρο, προσθέτουμε στον σωρό πληροφορία για κάθε γειτονική της ακμή, η οποία συγκρατεί το βάρος της ακμής. Άρα ο σωρός θα κρατά περισσότερες από μια πληροφορία για κάθε κορυφή. Ο σωρός θα πρέπει να έχει μήκος. Η επιλογή καινούριας ακμής θα γίνεται με τη διαδικασία σωρών DeleteMin. Αφού όμως υπάρχουν περισσότερες από μια πληροφορίες για κάθε ακμή, και αφού η DeleteMin αφαιρεί μόνο την πληροφορία που αντιστοιχεί στην ακμή με το μικρότερο βάρος, θα πρέπει να είμαστε προσεκτικοί ούτως ώστε να μην προσθέτουμε ακμές μεταξύ κορυφών που ήδη γνωρίζουμε.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-14 Υλοποίηση με Σωρούς Prim2(graph G){ int S[n]=0; ΜakeEmptyHeap(H); διάλεξε τυχαία κορυφή v; S[v] = 1; Tree = {}; for (i=1; i<|V|; i++) για κάθε w γείτονα του v Insert((d(w,v),w,v), H); (d,v,u) = DeleteMin(H); while (S[v] == 1) (d,v,u) = DeleteMin(H); S[v]=1; Tree = Tree  {(u,v)}; } Αν |E| = αριθμός των ακμών του G, ο χρόνος εκτέλεσης των Ιnsert και DeleteMin είναι log |E|. O ολικός χρόνος εκτέλεσης είναι Ο(|Ε|  log |E|)= Ο(|Ε|  log |V|).

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-15 Ορθότητα του Αλγόριθμου Είναι εύκολο να δούμε ότι ο αλγόριθμος επιστρέφει ένα ΓΔ. Είναι λιγότερο εύκολο να αποφασίσουμε κατά πόσο το δένδρο που επιστρέφεται είναι ΕΓΔ. Απόδειξη με αντίφαση: Έστω ότι το δένδρο δεν είναι ΕΓΔ. Έστω ότι ο αλγόριθμος προσθέτει τις ακμές στο δένδρο με τη σειρά e 1, e 2, …, e n. Διαλέγουμε την πρώτη ακμή στην ακολουθία, f = e j, για την οποία η ακολουθία e 1,…, e j δεν είναι μέρος κανενός ΕΓΔ του γράφου. Έστω S το σύνολο των κορυφών που βρίσκονται στις j-1 πρώτες ακμές. Τότε η f είναι η ακμή με το μικρότερο βάρος από τις ακμές στη γέφυρα του S. Έστω ότι Τ είναι ΕΓΔ που περιέχει τις j-1 πρώτες ακμές. To T πρέπει να περιέχει τουλάχιστον μια ακμή e από τη γέφυρα του S.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-16 Ορθότητα του Αλγόριθμου Το Τ έχει τη μορφή: Έστω Τ΄ ο γράφος (δένδρο;) που λαμβάνεται από το Τ με αντικατάσταση της ακμής e με την ακμή f: Το Τ΄ είναι ΓΔ και αφού το Τ είναι ΕΓΔ τότε και το Τ΄ είναι ΕΓΔ. Αυτό δίνει αντίφαση στην υπόθεση μας ότι οι πρώτες j ακμές δεν περιέχονται σε κανένα ΕΓΔ. Επομένως ο αλγόριθμος είναι ορθός. e S V-S S f

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-17 Ο αλγόριθμος του Kruskal Ακόμα ένας αλγόριθμος που υπολογίζει ΕΓΔ. Ενώ ο αλγόριθμος του Prim επεξεργάζεται μια-μια τις κορυφές, ο αλγόριθμος του Kruskal επεξεργάζεται μια-μια τις ακμές του γράφου. Επίσης, ενώ σε κάθε βήμα του αλγόριθμου του Prim οι επιλεγμένες ακμές σχηματίζουν ένα δένδρο, στην περίπτωση του αλγόριθμου Kruskal, σχηματίζουν ένα δάσος (ένα σύνολο από δένδρα). Κεντρική ιδέα. –Αρχικά το Τ είναι άδειο. –επεξεργαζόμαστε μια-μια τις ακμές, σε αύξουσα σειρά βάρους: –αν η ακμή e έχει το ελάχιστο βάρος από αυτές που δεν έχουμε μέχρι στιγμής επεξεργασθεί, ελέγχουμε αν η εισαγωγή της e στο Τ δεν προκαλεί κύκλο. Αν η απάντηση είναι θετική, προσθέτουμε την e στο Τ, δηλ. Τ := Τ  {e}.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-18 Παράδειγμα Εκτέλεσης 7 5 AB Δ Ε Γ Ζ AΒΓΖΕΔ 1 Αρχική ΚατάστασηΜετά από επιλογή της πρώτης ακμής (Β,Ε) Μετά από επιλογή της δεύτερης ακμής (Δ,Ε) 1 Μετά από επιλογή της τρίτης ακμής (Β,Ζ) 2 Μετά από επιλογή της τέταρτης ακμής (Β,Γ) 5 Μετά από επιλογή της πέμπτης ακμής (Α,Β) 7

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-19 Μερικά Σχόλια Η ορθότητα του αλγόριθμου μπορεί να αποδειχθεί όπως και στην περίπτωση του αλγόριθμου του Prim. To σύνολο των ακμών μπορεί να διατηρηθεί ως μία σωρός. Για να ελέγξουμε αν μια ακμή μπορεί να προστεθεί, διατηρούμε ένα partition Π όλων των κορυφών: –Δυο κορυφές βρίσκονται στο ίδιο υποσύνολο του Π αν υπάρχει μονοπάτι μεταξύ τους. –Αρχικά κάθε υποσύνολο του Π περιέχει ακριβώς μια κορυφή. –Στη συνέχεια, μια ακμή (u,v) μπορεί να προστεθεί αν οι κορυφές u και v βρίσκονται σε διαφορετικά υποσύνολα του Π. Με την προσθήκη μιας ακμής (u,v), υποσύνολα του Π που περιέχουν τις κορυφές u και v, ενώνονται.

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-20 O αλγόριθμος Kruskal – ψευδοκώδικας kruskal (graph G){ buildHeap(Η); (που περιέχει όλες τις ακμές του G) partition A = {{v1},{v2},…,{vn}}; i = 1; 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++; } H διαδικασία find(A,u) βρίσκει και επιστρέφει το υποσύνολο του Α που περιέχει το στοιχείο u και η διαδικασία union(A,U,V) επιστρέφει το σύνολο Α΄ = Α – {U,V}  { U  V}.