Αλγόριθμος Kruskal Δέντρα Επικάλυψης Ελάχιστου Κόστους

Σχετικά έγγραφα
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

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

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

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

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

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

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

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

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

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

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

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

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

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

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

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

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

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

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

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

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

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

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

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

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

Μη γράφετε στο πίσω μέρος της σελίδας

Δυναμικός προγραμματισμός για δέντρα

Προσεγγιστικοί Αλγόριθμοι

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

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

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

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

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

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

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

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Προσεγγιστικοί Αλγόριθμοι

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

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

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

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

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

Κινητός και ιάχυτος Υπολογισµός (Mobile & Pervasive Computing) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

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

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

Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

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

Δένδρα επικάλ επικ υψης ελάχιστου στους

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

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

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

Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο. Δίκτυα Ροής Ελάχιστου Κόστους (Minimum Cost Flow Networks)

Θεωρία Γραφημάτων και Εφαρμογές - Διακριτά Μαθηματικά ΙΙ Σεπτέμβριος 2017

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

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

Συνδετικότητα γραφήματος (graph connectivity)

Δυναμικός Προγραμματισμός

Ελαφρύτατες διαδρομές

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

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

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

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

Θεωρία και Αλγόριθμοι Γράφων

υναμικός Προγραμματισμός

Αλγοριθμικές Τεχνικές

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

4. ΔΙΚΤΥΑ

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

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

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

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

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

Συντομότερες Διαδρομές

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

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

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

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

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

Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα

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

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

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

Outline 1 Άσκηση 1: Εφαρμογές BFS DFS 2 Άσκηση 2: Μια Συνάρτηση Κόστους σε Κατευθυνόμενα Γραφήματα 3 Άσκηση 3: Ανάλυση Ασφάλειας 4 Άσκηση 4: Το Σύνολο

Επιχειρησιακή Έρευνα I

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

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

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

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

υναμικός Προγραμματισμός

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

Transcript:

Αλγόριθμος Kruskal Δέντρα Επικάλυψης Ελάχιστου Κόστους Κοκκάλα Γεωργία α.μ. 1311 (εξ. 9ο) Παπαχρήστου Γεώργιος α.μ. 1394 (εξ. 7ο) Παρασκευαΐδης Μάριος α.μ. 625 (εξ.19ο) Σίμου Θεοδώρα α.μ. 1260 (εξ. 9ο)

Σε αυτή την εργασία,σκοπός μας είναι να παρουσιάσουμε έναν από τους λεγόμενους «άπληστους» αλγορίθμους (greedy algorithms),τον αλγόριθμο του Kruskal έτσι ώστε να γίνει κατανοητή η μορφή,η χρήση και η σημασία του.πιο αναλυτικά: Στοιχεία Παρουσίασης: 1. Τι είναι ο Δυναμικός Προγραμματισμός 2. Ποιό είναι το πρόβλημα που θέλουμε να επιλύσουμε 3. Τι είναι ο αλγόριθμος Kruskal 4. Θεωτητικά παραδείγματα 5. Εφαρμογή αλγορίθμου σε παραδείγματα 6. Παράθεση Κώδικα 7. Αποτελέσματα αλγορίθμου 8. Σύγκριση με Dijkstra,Prim,Boruvka,Bellman-Ford 1)Τι είναι ο Δυναμικος Προγραμματισμός; Ο όρος δυναμικός προγραμματισμός θελεμιώθηκε το 1953 από τον Richard Bellman με στόχο να περιγράψει τη διαδικασία επίλυσης προβλημάτων που διασπώνται σε μια αλληλουχία διαδοχικών αποφάσεων. Είναι μια μέθοδος που είναι εφαρμόσιμη όταν τα υποπροβλήματα που υπάρχουν δεν είναι ανεξάρτητα μεταξύ τους.ένας αλγόριθμος που είναι προϊόν του δυναμικού προγραμματισμού,επιλύει μια φορά κάθε υποπρόβλημα και αποθηκεύει αυτή τη λύση σε ένα πίνακα,στον οποίον θα καταφεύγει κάθε φορά που συναντά το συγκεκριμένο πρόβλημα.αποτελεί λοιπόν μια πολύ ισχυρή τεχνική για αλγοριθμική επίλυση προβλημάτων. Ο δυναμικός προγραμματισμός εφαρμόζεται κατά κανόνα σε προβλήματα βελτιστοποίησης.σε τετοιου είδους προβλήματα είναι δυνατόν να υπάρχουν πολλές διαφορετικές λύσεις.

Η κάθε λύση έχει μια συγκεκριμένη τιμή και το ζητούμενο είναι να βρεθεί η λύση με τη βέλτιστη (ελάχιστη ή μέγιστη) τιμή.μια λύση που εξασφαλίζει τη βέλτιστη τιμή χαρακτηρίζεται ως μια βέλτιστη λύση,δεδομένου ότι μπορεί να υπάρχουν διάφορες λύσεις που επιτυγχάνουν τη βέλτιστη τιμή. Η ανάπτυξη ενός αλγορίθμου δυναμικού προγραμματισμού μπορεί να αναλυθεί σε μια σειρά από τέσσερα βήματα. 1. Χαρακτηρίζουμε τη δομή μιας βέλτιστης λύσης. 2. Ορίζουμε αναδρομικά την τιμή μιας βέλτιστης λύσης. 3. Υπολογίζουμε την τιμή μιας βέλτιστης λύσης εργαζόμενοι αναβιβαστικά,δηλαδή από κάτω προς τα πάνω ή από τα μερικά στα γενικά. 4. Κατασκευάζουμε μια βέλτιστη λύση από τα δεδομένα που έχουμε υπολογίσει. Τα βήματα 1-3 αποτελούν τα βασικά στάδια της επίλυσης ενός προβλήματος με τη μέθοδο του δυναμικού προγραμματισμού.το βήμα 4 μπορεί να παραλειφθεί αν το ζητούμενο είναι μόνο η τιμή μιας βέλτιστης λύσης. 2)Ποιό έιναι το πρόβλημα που θέλουμε να επιλύσουμε Οι «άπληστοι» αλγόριθμοι είναι χρήσιμα εργαλεία για την επίλυση προβλημάτων βελτιστοποίησης.για παράδειγμα εύρεση του συντομότερου μονοπατιού μεταξύ δύο κορυφών ενός γράφου ή την εύρεση της βέλτιστης σειράς για την εκτέλεση ενός συνόλου έργων από ένα υπολογιστικό σύστημα. Πρόβλημα: Έστω G=<N,A> ένας συνεκτικός μη κατευθυνόμενος γράφος,όπου Ν το σύνολο των κορυφών και Α το σύνολο των ακμών,σε κάθε μια από τις οποίες αντιστοιχεί ένας αριθμός,το βάρος της.πρέπει να βρεθεί ένα υποσύνολο Τ των ακμών του G,που να συνδέει όλες τις κορυφές του γράφου G και το άθροισμα των βαρών του T να είναι το ελάχιστο δυνατό.

Το Τ λέγεται ελάχιστο επικαλύπτον δέντρο (minimum spanning tree/mst). Επικαλύπτον είναι το δέντρο το οποίο περιέχει όλους τους κόμβους του γράφου,ενώ ελάχιστο λέγεται αυτό που περιέχει τις ελάχιστες ακμές προς όλους τους κόμβους. 3)Τι είναι ο αλγόριθμος Kruskal. Ένας άπληστος αλγόριθμος διαθέτει μια απλή δομή που αποτελείται από τα εξής στοιχεία: ένα σύνολο υποψήφιων επιλογών.(πχ οι κορύφες ενός γράφου) ένα σύνολο επιλογών που έχουν ήδη χρησιμοποιηθεί στη διαδικασία της επίλυσης. μια συνάρτηση ελέγχου,που ελέγχει αν ένα συγκεκριμένο σύνολο υποψηφίων επιλογών αποδίδει μια λύση.(όχι απαραίτητα τη βέλτιστη για τη στιγμή που εξετάζεται) μια συνάρτηση που ελέγχει αν ένα σύνολο υποψηφίων επιλογών είναι εφικτό,ώστε να μας δώσει μια λύση στο πρόβλημα. Μια συνάρτηση επιλογής,που ανά πάσα στιγμή δείχνει ποιά επιλογή έχει την καλύτερη προοπτική για να είναι μέρος της λύσης του προβλήματος. Μια αντικειμενική συνάρτηση,που δίνει την τιμή της λύσης.την αντικειμενική συνάρτηση είναι που επιθυμούμε να βελτιστοποιήσουμε.(η συνάρτηση επιλογής βασίζεται συνήθως στην αντικειμενική συνάρτηση και μάλιστα μπορεί να είναι και ίδιες) Ένας τέτοιος αλγόριθμος προχωράει στο επόμενο βήμα με την απόφαση που εκείνη τη στιγμή φαίνεται να είναι η καλύτερη για την επίλυση του προβλήματος.αυτό βέβαια δεν συνεπάγεται ότι αποδίδει πάντα τη βέλτιστη λύση.

ΑΛΓΟΡΙΘΜΟΣ KRUSKAL Το σύνολο Τ των ακμών είναι αρχικά άδειο.με την πρόοδο του αλγορίθμου προστίθενται στο Τ μία προς μία,νέες ακμές. Ανά πάσα στιγμή οι γράφοι που σχηματίζονται από τις κορυφές του G και τις ακμές του Τ αποτελούν ενδεχομένως περισσότερα από ένα διαφορετικά συνδεδεμένα δέντρα.οι ακμές του Τ που περιλαμβάνονται σε κάθε ένα απο αυτά αποτελούν ελάχιστα συνδεδεμένα δέντρα για το σύνολο των κορυφών του εκάστοτε τμήματος.στο τέλος του αλγορίθμου λαμβάνουμε ένα μόνο συνδεδεμένο τμήμα και έτσι το Τ αποτελεί ελάχιστο επικαλύπτον δέντρο του G. Για τη δημιουργία όλο και μεγαλύτερων ανεξάρτητων συνδεδεμένων τμημάτων,εξετάζουμε τις ακμές του γράφου G κατά αυξουσα σειρά βάρους.αν μια ακμή ενώνει δύο κορυφές από διαφορετικά τμήματα,τότε αυτή εισάγεται στο T και τα δύο τμήματα γίνονται πλέον ένα ενιαίο συνδεδεμένο τμήμα.αλλιώς η ακμή απορρίπτεται διότι η συμπερίληψη της στο T θα δημιουργούσε κύκλο. 4)Θεωρητικό Παράδειγμα.

Έστω το παραπάνω μη κατευθυνόμενο βεβαρημένο συνεκτικό γράφημα G=(N,A).Να δείξετε το ελάχιστο επικαλυπτικό δένδρο (Minimum Spanning Tree-MST) που προκύπτει μετά την εφαρμογή του αλγορίθμου Kruskal.Σε περιπτώσεις που υπάρχουν παραπάνω από μια επιλογές,επιλέγεται εκείνη η ακμή που ενώνει κορυφές με το μικρότερο άθροισμα των βαρών. 1 ο βήμα: Προσθήκη της ακμής (5,6) που έχει βάρος 1 2 ο βήμα: Προσθήκη της ακμής (0,2) που έχει βάρος 2 3 ο βήμα: Προσθήκη της ακμής (1,3) που έχει βάρος 3 4 ο βήμα: Προσθήκη της ακμής (1,4) που έχει βάρος 3 5 ο βήμα: Προσθήκη της ακμής (2,3) που έχει βάρος 4 6 ο βήμα: Η ακμή (0,1) δεν μπορεί να προστεθεί γιατί δημιουργεί κύκλο 7 ο βήμα: Προσθήκη της ακμής (5,7) που έχει βάρος 5 8 ο βήμα: Η ακμή (6,7) δεν μπορεί να προστεθεί γιατί δημιουργεί κύκλο 9 ο βήμα: Προσθήκη της ακμής (2,5) που έχει βάρος 6 Οπότε έχω το τελικό Minimum Spanning Tree-MST,μετά την εφαρμογή του αλγορίθμου Kruskal:

6) Κώδικας #include<stdio.h> #include<stdlib.h> int i,j,k,a,b,u,v,n,ne=0; int min,mincost=0,c[9][9],parent[9]; int find(int); int uni(int,int); int main() printf("kruskal Algorithm\n"); printf("\ndwste ton arithmo twn komvwn\n"); scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) c[i][j]=0;

//eisagwgh varwn c[0][1]=0; c[0][2]=2; c[1][0]=0;..... c[7][6]=5; for(i=0;i<n;i++) for(j=0;j<n;j++) if(c[i][j]==0) c[i][j]=999; printf("\n\noi koryfes tou MST einai :\n"); while(ne<=n) for(i=0,min=999;i<n;i++) for(j=0;j<n;j++) if(c[i][j]<min) min=c[i][j]; a=u=i; b=v=j; u=find(u); v=find(v); if(uni(u,v)) printf("\n%d edge (%d,%d) =%d\n",ne,a,b,min); mincost +=min; c[a][b]=c[b][a]=999; ne++; printf("\n Elaxisto kostos = %d\n",mincost); system("pause");

int find(int i) while(parent[i]) i=parent[i]; return i; int uni(int i,int j) if(i!=j) if(i<j) parent[i]=j; else if (i>j) parent[j]=i; return 1; return 0; 7)Παράθεση αποτελεσμάτων 1.Για τον γράφο του θεωρητικού παραδείγματος Αριθμός κορυφών: 8 Οι κορυφές του MST είναι : 0 edge (5,6) =1 1 edge (0,2) =2 2 edge (1,3) =3 3 edge (1,4) =3 4 edge (2,3) =4 5 edge (5,7) =5 7 edge (2,5) =6 Ελάχιστο Κόστος = 24

2.Για το γράφο : Αριθμός κορυφών: 8 Οι κορυφές του MST είναι : 0 edge (0,1) =12 1 edge (2,3) =12 2 edge (0,7) =13 3 edge (3,4) =13 4 edge (1,6) =14 5 edge (2,5) =14 6 edge (4,7) =15 Ελάχιστο Κόστος = 93 3.Για τον παρακάτω γράφο :

Αριθμός κορυφών: 7 Οι κορυφές του MST είναι : 0 edge (0,3) =5 1 edge (2,4) =5 2 edge (3,5) =6 3 edge (0,1) =7 4 edge (1,4) =7 5 edge (4,6) =9 Ελάχιστο Κόστος = 39

8)Σύγκριση με άλλους αλγορίθμους. (Prim,Dijkstra,Boruvka,Bellman-Ford) Ο αλγόριθμος του Kruskal επιλέγει ακμές,απλά προσπαθώντας να αποφύγει τη δημιουργία κύκλων.αυτός ο τρόπος λειτουργίας έχει ως συνέπεια τη δημιουργία ενός δάσους από δέντρα,τα οποία στη συνέχεια αναπτύσσονται με ακανόνιστο τρόπο,ανάλογα με την εξέλιξη του αλγορίθμου. Αντίθετα ο αλγόριθμος του Prim αναπτύσσει σταδιακά το ίδιο το ελάχιστο συνδεδεμένο δέντρο ξεκινώντας από μια τυχαία επιλεγείσα ρίζα.σε κάθε βήμα προστίθεται ένα νέο κλαδί του δέντρου και ο αλγόριθμος ολοκληρώνεται όταν έχουν επιλεγεί όλες οι κορυφές του γράφου. Ο αλγόριθμος του Dijkstra,βρίσκει την ελάχιστη διαδρομή μεταξύ δύο κορυφών ενώ ο Κruskal επιστρέφει το minimum spanning tree που ενώνει όλες τις κορυφές ενός γράφου. Ο αλγόριθμος των Bellman-Ford,επιλύει το πρόβλημα των ομοαφετηριακών ελαφρύτατων διαδρομών στη γενική περίπτωση όπου οι ακμές ενδέχεται να έχουν αρνητικά βάρη.εάν υπάρχουν αρνητικά βάρη,ο αλγόριθμος υποδεικνύει ότι το πρόβλημα δεν έχει λύση.εάν δεν υπάρχουν,υπολογίζει τις ελαφρύτατες διαδρομές και τα βάρη τους. Ο αλγόριθμος του Boruvka,είναι ένας πολύ απαιτητικός αλγόριθμος διότι βρίσκει το minimum spanning tree σε ένα γράφημα του οποίου όλες οι ακμές έχουν διαφορετικά βάρη.

Πολυπλοκότητα (Prim,Kruskal,Bellman- Ford,Boruvka) Ο βασικός βρόγχος του αλγορίθμου Prim εκτελείται n-1 φορές και σε κάθε εκτέλεση ο βρόγχος for που περικλείει έχει πολυπλοκότητα O( V ).Άρα ο αλγόριθμος έχει συνολική πολυπλοκότητα O( V 2 ). Σε σχέση με τον αλγόριθμο του Kruskal με πολυπλοκότητα O( Ε log V ),(όπου Ε:αριθμός ακμών και V:αριθμός κορυφών): Για πυκνους γράφους όπου ο αριθμός των ακμών τείνει στο V ( V -1)/2 ο αλγόριθμος του Kruskal έχει πολυπλοκότητα O( V 2 log V ) και επομένως ο αλγόριθμος του Prim είναι καλύτερος. Για αραιούς γράφους όπου ο αριθμός των ακμών τείνει στο V, ο αλγόριθμος του Kruskal [O( V log V )] είναι ο πιο αποδοτικός. Η πολυπλοκότητα του αλγορίθμου Dijkstra,είναι O(( V + E )log V ) ενώ για αραιούς γράφους,η πολυπλοκότητα ανάγεται σε O( E log V ). Η πολυπλοκότητα του αλγορίθμου Βoruvka είναι O( E log V ). Πηγές: -Εισαγωγή στο αλγορίθμους (Cormen-Leiserson-Rivest-Stein.ΠΕΚ) -Wikipedia -stackoverflow.com (Ροντογιάννης Αριστοφάνης-πολυτιμη πληφορία σχετικά με τον κώδικα) -Πληροφορίες από Διπλωματική Εργασία από το Τ.Πληροφορικής του Οικονομικού Παν.Αθηνών. (Βαγγέλης Δούρος)