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

Σχετικά έγγραφα
Αλγόριθµοι και Πολυπλοκότητα

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

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

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

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

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

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

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

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

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

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

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

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

Αριθµητική Ανάλυση. Ενότητα 6 Αριθµητική Παραγώγιση και Ολοκλήρωση. Ν. Μ. Μισυρλής. Τµήµα Πληροφορικής και Τηλεπικοινωνιών,

Τµήµα Πληροφορικής και Τηλεπικοινωνιών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ψηφιακή Επεξεργασία Εικόνων

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

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

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

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Βέλτιστος Έλεγχος Συστημάτων

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

Διοικητική Λογιστική

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

Βάσεις Περιβαλλοντικών Δεδομένων

Γενική Φυσική Ενότητα: Εισαγωγή στην Ειδική Θεωρία της Σχετικότητας

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 3

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

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

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

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

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

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Θεατρικές Εφαρμογές και Διδακτική της Φυσικής Ι

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

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 8: Αναζήτηση και ταξινόμηση

Εισαγωγή στους Υπολογιστές

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 1

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 7: Αλγόριθμοι γραμμικής άλγεβρας

Ορισμός κανονικής τ.μ.

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Βάσεις Περιβαλλοντικών Δεδομένων

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

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

Υπολογιστική άλγεβρα Ενότητα 10: Βάσεις Groebner ενός ιδεώδους ΙΙΙ

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

Βέλτιστος Έλεγχος Συστημάτων

Χωρικές σχέσεις και Γεωμετρικές Έννοιες στην Προσχολική Εκπαίδευση

Λειτουργία και εφαρμογές της πολιτιστικής διαχείρισης

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Φιλοσοφία της Ιστορίας και του Πολιτισμού

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στη Δικτύωση Υπολογιστών

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

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

Λογικός Προγραμματισμός Ασκήσεις

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Διοικητική Λογιστική

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

Transcript:

Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Prim-Kruskal Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 1 / 52

Απληστοι (Greedy) Αλγόριθµοι και Γραφήµατα έντρα Επικάλυψης (spanning trees) Βέλτιστη Υπακολουθία Απληστη Επιλογή Αλγόριθµος του Prim Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 2 / 52

Γραφήµατα Κατευθυνόµενο Γράφηµα: Ενας κατευθυνόµενο γράφηµα G = (V, E) είναι ένα διατεταγµένο Ϲεύγος που αποτελείται από: ένα σύνολο V κορυφών ένα σύνολο E V V ακµών µη Κατευθυνόµενο Γράφηµα: Σε έναν µην κατευθυνόµενο γράφηµα G = (V, E), το σύνολο των ακµών E αποτελείται από µη διατεταγµένα Ϲεύγη από κορυφές. Και στις δυο περιπτώσεις ισχύει: E = O(V 2 ) Αν το γράφηµα είναι συνδεδεµένο ισχύει: E V 1 log E = Θ(log V) Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 3 / 52

Πίνακας Γειτνίασης Πίνακας Γειτνίασης: Πίνακας γειτνίασης ενός γραφήµατος G = (V, E), όπου V = {1, 2,..., n}, είναι ο πίνακας A[1... n, 1...n] µε { 1 αν (i, j) E, A[i, j] = 0 αν (i, j) / E Για πυκνή απεικόνιση απαιτείταιθ(v 2 ) χώρος αποθήκευσης Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Λίστα Γειτνίασης Λίστα Γειτνίασης: Λίστα γειτνίασης µιας κορυφής v V είναι η λίστα Adj[v] από κορυφές γειτονικές της v. Παράδειγµα Για µη κατευθυνόµενα γραφήµατα, Adj[v] = degree(v). Ενώ για κατευθυνόµενα γραφήµατα, Adj[v] = out degree(v). Θεώρηµα της Χειραψίας: Για µη κατευθυνόµενα γραφήµατα, v V = 2 E οι λίστες γειτνίασης χρησιµοποιούν Θ(V + E) αποθηκευτικό χώρο - αραιή απεικόνιση (και για τους δύο τύπους γραφηµάτων) Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 5 / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα εδοµένου ενός συνόλου στοιχείων ϑέλουµε να χωρίσουµε τα στοιχεία αυτά σε διαφορετικές µη επικαλυπτόµενες οµάδες. Κάθε µία από τις οµάδες αναγνωρίζεται από ένα στοιχείο της (αντιπρόσωπος-representative). Μία από τις πολλές εφαρµογές των ασύνδετων συνόλων είναι η εύρεση των συνεκτικών συνιστωσών ενός γραφήµατος. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 6 / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα Οι ϐασικές πράξεις είναι οι εξής: Find(x): εδοµένου ενός στοιχείου x επιστρέφει τον αντιπρόσωπο της οµάδας στην οποία ανήκει το x. Union(x, y): Ενώνει τις δύο οµάδες / σύνολα που έχουν αντιπροσώπους τα x και y αντίστοιχα, σε µία νέα οµάδα. Αντιπρόσωπος της νέας οµάδας µπορεί να είναι οποιοδήποτε στοιχείο των δύο οµάδων αν και συνήθως επιλέγεται ένας εκ των x και y. Make-Set(x): ηµιουργεί µια νέα οµάδα η οποία περιέχει το στοιχείο x (το οποίο γίνεται και αντιπρόσωπος της οµάδας). Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα Ενα παράδειγµα χρήσης τωνunion καιfind 1 5 2 6 3 Find(5) = 6 Find() = 9 Union(6, 9) = 9 9 null Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα Ενα γράφηµα µε τέσσερις συνεκτικές συνιστώσες: {a, b, c, d},{e, f, g},{h, i},{j}. a b e f h j c d g i Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 9 / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα Αλγόριθµος Εύρεσης Συνεκτικών Συνιστωσών µε χρήση της δοµής ασύνδετων συνόλων Connected-Components (G) 1. for each v V 2. Make-Set(v) 3. for each (u, v) E. a = Find(u) 5. b = Find(v) 6. if a b then Union(a, b). end for Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 10 / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα Κατασκευή των συνόλων για το γράφηµα του σχήµατος Πλευρά Συλλογή από ασύνδετα σύνολα αρχικά σύνολα {a} {b} {c} {d} {e} {f} {g} {h} {i} {j} (b, d) {a} {b, d} {c} {e} {f} {g} {h} {i} {j} (e, g) {a} {b, d} {c} {e, g} {f} {h} {i} {j} (a, c) {a, c} {b, d} {e, g} {f} {h} {i} {j} (h, i) {a, c} {b, d} {e, g} {f} {h, i} {j} (a, b) {a, b, c, d} {e, g} {f} {h, i} {j} (e, f) {a, b, c, d} {e, f, g} {h, i} {j} (b, c) {a, b, c, d} {e, f, g} {h, i} {j} Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 11 / 52

Αλγόριθµοι Γραφηµάτων Πράξεις σε ασύνδετα σύνολα Εχοντας λοιπόν κατασκευάσει τα σύνολα, µπορούµε να ϐρούµε εύκολα αν δύο κόµβοι ανήκουν στην ίδια συνεκτική συνιστώσα, ελέγχοντας απλά εάν οι αντιπρόσωποι των οµάδων τους (το αποτέλεσµα τηςfind σε κάθε έναν) ταυτίζονται. Ο χρόνος εκτέλεσης της πράξηςunion είναι σταθερός. Η πράξηfind, µπορεί να εκτελεσθεί σε γραµµικό χρόνο στην περίπτωση που η αναπαράσταση των στοιχείων ενός συνόλου έχει εκφυλιστεί σε γραµµική λίστα. Εάν όµως κατά την ένωση δύο συνόλων επιλέγουµε να ενώνουµε το σύνολο µε τα λιγότερα στοιχεία σε αυτό µε τα περισσότερα στοιχεία τότε ο χρόνος εκτέλεσης της Find γίνεται O(log n) (άσκηση). Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 12 / 52

Ελαφρύτατο Συνδετικό έντρο (Minimum Spanning Tree) Είσοδος: ένα συνδεδεµένο ακατεύθυντο γράφηµα G = (V, E) µε συνάρτηση ϐάρους w : E R. Εξοδος: ένα ελαφρύτατο συνδετικό δέντρο T είναι ένα δέντρο, το οποίο συνδέει όλες τις κορυφές, ελάχιστου ϐάρους: w(t) = w(u, v). (u,v) T Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 13 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 1 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 15 / 52

Βέλτιστη Υπακολουθία Τ: Ελαφρύτατο Συνδετικό έντρο Οι άλλες ακµές του γραφήµατος δεν ϕαίνονται Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 16 / 52

Βέλτιστη Υπακολουθία Τ: Ελαφρύτατο Συνδετικό έντρο Οι άλλες ακµές του γραφήµατος δεν ϕαίνονται Αφαίρεση κάποιας ακµής (u, v) T. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 1 / 52

Βέλτιστη Υπακολουθία Τ: Ελαφρύτατο Συνδετικό έντρο Οι άλλες ακµές του γραφήµατος δεν ϕαίνονται Αφαίρεση κάποιας ακµής (u, v) T. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 1 / 52

Βέλτιστη Υπακολουθία Τ: Ελαφρύτατο Συνδετικό έντρο Οι άλλες ακµές του γραφήµατος δεν ϕαίνονται Αφαίρεση κάποιας ακµής (u, v) T. Το T χωρίζεται σε δυο υποδέντρα T 1 και T 2. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 19 / 52

Theorem Το υποδέντρο T 1 είναι ένα ελαφρύτατο συνδετικό δέντρο του G 1 = (V 1, E 1 ) του υπογραφήµατος του G παραγόµενου από τις κορυφές του T 1 όπου V 1 = κορυφές του T 1, E 1 = {(x, y) E : x, y V 1 } Οµοια και για το T 2 Απόδειξη: w(t) = w(u, v) + w(t 1 )+w(t 2 ) Αν υπήρχε ελαφρύτατο συνδετικό δέντρο T 1 µε µικρότερο ϐάρος από το T 1 για το G 1, τότε τοt = {(u, v) T 1 T 2} ϑα ήταν ένα ελαφρύτατο συνδετικό δέντρο µε µικρότερο ϐάρος από το T για το G. Ατοπο Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 20 / 52

Απληστοι (greedy) Αλγόριθµοι Ιδιότητα Απληστης Επιλογής: Μια τοπικά ϐέλτιστη επιλογή είναι και καθολικά ϐέλτιστη. Θεώρηµα: Εστω T το ελαφρύτατο συνδετικό δέντρο του G = (V, E), και A V. Εστω (u, v) E είναι η ακµή µε το ελάχιστο ϐάρος που συνδέει το A µε το V A. Τότε, (u, v) T. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 21 / 52

Απόδειξη Θεωρήµατος Εστω(u, v) / T. Η ακµή (u,v) είναι η ακµή µε το ελάχιστο ϐάρος συνδέουσα το Α µε το V-A. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 22 / 52

Απόδειξη Θεωρήµατος Εστω(u, v) / T. Η ακµή (u,v) είναι η ακµή µε το ελάχιστο ϐάρος συνδέουσα το Α µε το V-A. Θεωρήστε το µοναδικό απλό µονοπάτι από το u στο v στο T. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 23 / 52

Απόδειξη Θεωρήµατος Εστω(u, v) / T. Η ακµή (u,v) είναι η ακµή µε το ελάχιστο ϐάρος συνδέουσα το Α µε το V-A. Θεωρήστε το µοναδικό απλό µονοπάτι από το u στο v στο T. Αντικαταστήστε την πρώτη ακµή στο µονοπάτι που συνδέει µια κορυφή του A µε µια κορυφή του V A, µε την (u, v). Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 2 / 52

Απόδειξη Θεωρήµατος Εστω(u, v) / T. Η ακµή (u,v) είναι η ακµή µε το ελάχιστο ϐάρος συνδέουσα το Α µε το V-A. Θεωρήστε το µοναδικό απλό µονοπάτι από το u στο v στο T. Αντικαταστήστε την (u, v) µε την πρώτη ακµή στο µονοπάτι που συνδέει µια κορυφή του A µε µια κορυφή του V A. Προκύπτει ένα ελαφρύτατο συνδετικό δέντρο µε µικρότερο ϐάρος από το T. Ατοπο Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 25 / 52

Αλγόριθµος του Prim Ιδέα: ιατηρούµε τους κόµβους V A σε µια ουρά προτεραιότητας ελαχίστου Q µε ϐάση ένα πεδίο κλειδί. Για κάθε κόµβο v το key[v] = µε το ελάχιστο από τα ϐάρη των ακµών που συνδέουν τον v µε ένα κόµβο στο A. ΕΣ -PRIM(G, w, s) Q V key[v] for all v V key[s] 0 for some arbitrary s V while Q do u Extract Min(Q) for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) / Decrease-Key / π[v] u Το{(u, π[v])} σχηµατίζει το Ελαφρύτατο Συνδετικό έντρο Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 26 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 2 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 2 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 29 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 30 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 31 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 32 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 33 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 3 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 35 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 36 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 3 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 3 / 52

Παράδειγµα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 39 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Prim b c d 2 9 15 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 0 / 52

Ανάλυση Αλγορίθµου Prim V times Θ(V) total Συνολικός Χρόνος: Q V key[v] for all v V key[s] 0 for some arbitrary s V while Q do u Extract Min(Q) degree(u) times for each v Adj[u] do if v Q and w(u, v) < key[v] then key[v] w(u, v) Θ(E) π[v] u T = Θ(V) T Extract Min +Θ(E) T Decrease Key Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 1 / 52

Ανάλυση Αλγορίθµου Prim (συνέχεια) T = Θ(V) T Extract Min +Θ(E) T Decrease Key Q T Extract Min T Decrease Key Συνολικό array O(V) O(1) O(V 2 ) binary Heap O(log V) O(log V) O(E log V) fibonacci Heap O(log V) O(1) O(E + V log V) Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 2 / 52

Αλγόριθµοι MST Αλγόριθµος του Kruskal χρησιµοποιεί τις συνεκτικές συνιστώσες έχει πολυπλοκότητα O(E log V) Karger, Klein, Tarjan [1993] πιθανοτικός αλγόριθµος αναµενόµενος χρόνος O(V + E) Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 3 / 52

Ο αλγόριθµος του Kruskal Στον αλγόριθµο του Kruskal Το σύνολο A είναι ένα δάσος. Η ασφαλής ακµή που προστίθεται στο A είναι πάντοτε µια ακµή ελαχίστου ϐάρους στο γράφηµα, η οποία συνδέει δυο διαφορετικές συνιστώσες. Στον αλγόριθµο του Prim Το σύνολο A συνιστά ένα µοναδικό δένδρο. Η ασφαλής ακµή που προστίθεται στο A είναι πάντοτε µια ακµή ελαχίστου ϐάρους η οποία συνδέει το δένδρο µε έναν κόµβο εκτός του δένδρου. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal Ο αλγόριθµος του Kruskal Προσδιορίζει την ασφαλή ακµή που ϑα προστεθεί στο επεκτεινόµενο δάσος εντοπίζοντας από όλες τις ακµές που συνδέουν δυο οποιαδήποτε δένδρα του δάσους, µια ακµή (u, v) ελαχίστου ϐάρους. Ανήκει στην κατηγορία των άπληστων αλγορίθµων, διότι σε κάθε ϐήµα προσθέτει στο δάσος µια ακµή µε το ελάχιστο δυνατό ϐάρος. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 5 / 52

Ο αλγόριθµος του Kruskal ΕΣ -Kruskal Η υλοποίησή µας είναι παρόµοια µε τον αλγόριθµο για τον υπολογισµό των συνδεδεµένων συνιστωσών. Βασίζεται στην τήρηση κάποιων ξένων συνόλων από στοιχεία µέσω µιας δοµής δεδοµένων ξένων συνόλων. Κάθε τηρούµενο σύνολο περιέχει τους κόµβους ενός δένδρου του τρέχοντος δάσους. Η πράξη Εύρεση Συνόλου(u) επιστρέφει ένα στοιχείο-αντιπρόσωπο του συνόλου στο οποίο ανήκει ο u. Εποµένως, µπορούµε να προσδιορίσουµε, εάν δυο κόµβοι u και v ανήκουν στο ίδιο δένδρο ελέγχοντας εάν το στοιχείοεύρεση Συνόλου(u) συµπίπτει µε τοεύρεση Συνόλου(v). Η σύζευξη των δένδρων πραγµατοποιείται µέσω της πράξηςσυνένωση. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 6 / 52

log E log V. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52 Ο αλγόριθµος του Kruskal ΕΣ -Kruskal ΕΣ -Kruskal(G, w) 1 A 2 για κάθε κόµβο v V[G] 3 Κατασκευή Συνόλου(v) O(v) ταξινοµούµε τις ακµές E κατά µη ϕθίνουσα σειρά ως προς το ϐάρος w O(ElogE) 5 για κάθε ακµή(u, v) E, κατά µη ϕθίνουσα σειρά ως προς το ϐάρος 6 αν Εύρεση Συνόλου(u) Εύρεση Συνόλου(v) O(logV) Εφορές τότε A A {(u, v)} O(1) Συνένωση(u, v) 9 επιστροφή A Πολυπλοκότητα O(V + E log E + E log V) = O(E log V)

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Ο αλγόριθµος του Kruskal b c d 2 9 a i 6 1 2 h g f 10 e Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal / 52

Σηµειώµατα Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 9 / 52

Σηµείωµα Αναφοράς Copyright Εθνικόν και Καποδιστριακόν Πανεπιστήµιον Αθηνών 2015, Νικόλαος Μισυρλής, Αλγόριθµοι και Πολύπλοκότητα. Ενότητα 3 - Αλγόριθµοι Γραφηµάτων Εκδοση:1.01. Αθήνα 2015. ιαθέσιµο από τη δικτυακή διεύθυνση:http://opencourses.uoa.gr/courses/di13/. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 50 / 52

Σηµείωµα Αδειοδότησης Το παρόν υλικό διατίθεται µε τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εµπορική Χρήση Παρόµοια ιανοµή.0 [1] ή µεταγενέστερη, ιεθνής Εκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. ϕωτογραφίες, διαγράµµατα κ.λ.π., τα οποία εµπεριέχονται σε αυτό και τα οποία αναφέρονται µαζί µε τους όρους χρήσης τους στο «Σηµείωµα Χρήσης Εργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/.0/ Ως Μη Εµπορική ορίζεται η χρήση: που δεν περιλαµβάνει άµεσο ή έµµεσο οικονοµικό όφελος από την χρήση του έργου, για το διανοµέα του έργου και αδειοδόχο που δεν περιλαµβάνει οικονοµική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προορίζει στο διανοµέα του έργου και αδειοδόχο έµµεσο οικονοµικό όφελος (π.χ. διαφηµίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος µπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιµοποιεί το έργο για εµπορική χρήση, εφόσον αυτό του Ϲητηθεί. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 51 / 52

ιατήρηση Σηµειωµάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού ϑα πρέπει να συµπεριλαµβάνει: το Σηµείωµα Αναφοράς το Σηµείωµα Αδειοδότησης τη δήλωση ιατήρησης Σηµειωµάτων το Σηµείωµα Χρήσης Εργων Τρίτων (εφόσον υπάρχει) µαζί µε τους συνοδευόµενους υπερσυνδέσµους. Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Prim-Kruskal 52 / 52