Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Minimum Spanning Trees1 “Ελάχιστα” συνδετικά δέντρα JFK BOS MIA ORD LAX DFW SFO BWI PVD

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Minimum Spanning Trees1 “Ελάχιστα” συνδετικά δέντρα JFK BOS MIA ORD LAX DFW SFO BWI PVD"— Μεταγράφημα παρουσίασης:

1 Minimum Spanning Trees1 “Ελάχιστα” συνδετικά δέντρα JFK BOS MIA ORD LAX DFW SFO BWI PVD 867 2704 187 1258 849 144 740 1391 184 946 1090 1121 2342 1846 621 802 1464 1235 337

2 Minimum Spanning Trees2 Περίληψη και ανάγνωση “Ελάχιστα” συνδετικά δέντρα Ορισμοί Το κρίσιμο γεγονός Ο αλγόριθμος του Prim-Jarnik Ο αλγόριθμος του Kruskal's Ο Baruvka's Αλγόριθμος

3 Minimum Spanning Trees3 “Ελάχιστα” συνδετικά δέντρα Συνδετικός υπο-γράφος Ο υπο-γράφος ενός γράφου G περιέχει όλες τις κορυφές του G Συνδετικό δέντρο Ο συνδετικός υπο-γράφος είναι από μόνος του ένα δέντρο “Ελάχιστο” συνδετικό δέντρο (MST) Συνδετικό δέντρο ενός γράφου με το ελάχιστο συνολικό μήκος ακμών Εφαρμογές Δίκτυα επικοινωνιών Δίκτυα μεταφοράς ORD PIT ATL STL DEN DFW DCA 10 1 9 8 6 3 2 5 7 4

4 Minimum Spanning Trees4 Κυκλική Ιδιότητα Κυκλική ιδιότητα: Έστω T “ελάχιστο” συνδετικό δέντρο ενός γράφου με βάρη G Έστω e μια ακμή του G όπου δεν ανήκει στο T και C είναι ο κύκλος που διαμορφώνεται από το e με το T Για κάθε ακμή f του C, weight(f)  weight(e) Απόδειξη: Από την αντίφαση If weight(f)  weight(e) μπορούμε να πάρουμε συνδετικό δέντρο μικρότερου βάρους αντικαθιστώντας το e με f 8 4 2 3 6 7 7 9 8 e C f 8 4 2 3 6 7 7 9 8 C e f Η αντικατάσταση του f με το e επιφέρει ένα καλύτερο συνδετικό δέντρο (με μικρότερο συνολικό βάρος)

5 Minimum Spanning Trees5 UV Ιδιότητα διαχωρισμού Ιδιότητα διαχωρισμού: Θεωρούμε ένα partition των κορυφών του G στα υποσύνολα U και V Έστω e η ακμή του ελάχιστου βάρους κατά μήκος του partition Υπάρχει ένα “ελάχιστο” συνδετικό δέντρο του G που περιέχει την ακμή e Απόδειξη: Έστω T ένα MST του G Αν T δεν περιέχει το e, θεωρούμε το κύκλο C formed by e με T και f είναι η ακμή C κατά μήκος του partition Από την κυκλική ιδιότητα, weight(f)  weight(e) Κατά συνέπεια, weight(f)  weight(e) Πέρνουμε ένα άλλο MST αντικαθιστώνας το f με e 7 4 2 8 5 7 3 9 8 e f 7 4 2 8 5 7 3 9 8 e f Η αντικατάσταση του f με το e επιφέρει ένα άλλο MST UV

6 Minimum Spanning Trees6 Ο Αλγόριθμος των Prim-Jarnik Παρόμοιος με τον αλγόριθμο Dijkstra’s (για έναν συνδεδεμένο γράφο) Επλέγουμε κάποια κορυφή s και αυξάνουμε το MST σαν σύννεφο κορυφών, ξεκινώντας από s Αποθηκεύουμε με κάθε κορυφή v μία ετικέτα d(v) = το μικρότερο βάρος μιας ακμής που συνδέει το v με μία κορυφή στο σύννεφο Σε κάθε βήμα: Προσθέτουμε στο σύννεφο την κορυφή u outside the cloud με την μικρότερη τιμή ετικέτας Ανανεώνουμε τις ετικέτες των κορυφών γύρω από το u

7 Minimum Spanning Trees7 Ο Αλγόριθμος των Prim-Jarnik’s Μία ουρά αναμονής με προτεραιότητα αποθηκεύει τις κορυφές έξω από το σύννεφο Κλειδί: απόσταση Στοιχείο: κορυφή Μέθοδοι Locator-based insert(k,e) επιστρέφει ένα locator replaceKey(l,k) αλλάζει το κλειδί ενός αντικειμένου Αποθηκεύουμε τρεις ετικέτες σε κάθε κορυφή: Απόσταση Parent ακμή στο MST Locator σε σειρά αναμονής με προτεραιότητα Algorithm PrimJarnikMST(G) Q  new heap-based priority queue s  a vertex of G for all v  G.vertices() if v  s setDistance(v, 0) else setDistance(v,  ) setParent(v,  ) l  Q.insert(getDistance(v), v) setLocator(v,l) while  Q.isEmpty() u  Q.removeMin() for all e  G.incidentEdges(u) z  G.opposite(u,e) r  weight(e) if r  getDistance(z) setDistance(z,r) setParent(z,e) Q.replaceKey(getLocator(z),r)

8 Minimum Spanning Trees8 Παράδειγμα B D C A F E 7 4 2 8 5 7 3 9 8 0 7 2 8   B D C A F E 7 4 2 8 5 7 3 9 8 0 7 2 5  7 B D C A F E 7 4 2 8 5 7 3 9 8 0 7 2 5  7 B D C A F E 7 4 2 8 5 7 3 9 8 0 7 2 5 4 7

9 Minimum Spanning Trees9 Παράδειγμα (συν.) B D C A F E 7 4 2 8 5 7 3 9 8 0 3 2 5 4 7 B D C A F E 7 4 2 8 5 7 3 9 8 0 3 2 5 4 7

10 Minimum Spanning Trees10 Ανάλυση Λειτουργίες γράφων Η μέθοδος incidentEdges καλείται μια φορά για κάθε κορυφή Λειτουργίες ετικέτων We set/get την απόσταση, ο πατέρας και οι ετικέτες του locator μιας κορυφής z O(deg(z)) φορές Setting/getting μια ετικέτα κάνει O(1) χρόνο Λειτουργίες σειράς αναμονής με προτεραιότητα Κάθε κορυφή εισάγεται μία φορά και διαγράφεται μία φορά από τη σειτά αναμονής, όπου κάθε εισαγωγή ή διαγραφή κάνει O(log n) χρόνο Το κλειδί μιας κορυφής w στη σειρά αναμονής αλλάζει το πολύ deg(w) φορές, όπου η αλλαγή κάθε κλειδιού κάνει O(log n) χρόνο Ο αλγόριθμος Prim-Jarnik’s τρέχει σε O((n  m) log n) χρόνο υπό τον όρο ότι ο γράφος αναπαριστάται από τη γειτονική list structure Recall that  v deg(v)  2m Ο χρόνος εκτέλεσης είναι O(m log n) από τότε που ο γράφος συνδέθηκε

11 Minimum Spanning Trees11 Ο Αλγόριθμος Kruskal Μία ουρά αναμονής με προτεραιότητα αποθηκεύει τις ακμές έξω από το σύννεφο Κλειδί: βάρος Στοιχείο: ακμή Στο τέλος του αλγορίθμου Αφήνουμε ένα σύννεφο που καλύπτει το MST Ένα δέντρο T όπου είναι το δικό μας MST Algorithm KruskalMST(G) for κάθε κορυφή V στο G do define a Cloud(v) of  {v} Έστω Q μια σειρά αναμονής. Εισάγουμε όλες τις κορυφές στο Q χρησιμοποιώντας τα βάρη τους ως κλειδί T   while T has fewer than n-1 ακμές doedge e = Q.removeMin() Έστω u, v τα endpoints του e if Cloud(v)  Cloud(u) then Add edge e to T Merge Cloud(v) and Cloud(u) return T

12 Minimum Spanning Trees12 Δομές δεδομένων για τον Αλγόριθμο Kruskal Ο αλγόριθμος διατηρεί ένα δάσος από δέντρα Μία ακμή γίνεται δεκτή αν συνδέει ευδιάκριτα δέντρα Χρειαζόμαστε μία δομή δεδομένων που να διατηρεί partition, πχ, μία συλλογή από disjoint sets, με τις λειτουργίες: -find(u): επέστρεψε το set αποθηκεύοντας u -union(u,v): αντικατέστησε τα sets αποθηκεύοντας u και v με την ένωσή τους aaaa

13 Minimum Spanning Trees13 Αναπαράσταση ενός Partition Κάθε set αποθηκεύεται σε μία ακολουθία Κάθε στοιχείο έχει μια αναφορά πίσω στο set Η λειτουργία find(u) κάνει O(1) χρόνο, και επιστρέφει το set που το u είναι μέλος. Στη λειτουργία union(u,v), μετακινούμε τα στοιχεία του μικρότερου set στην ακολουθία με το μεγαλύτερο set και κάνουμε update τις αναφορές τους Ο χρόνος για την λειτουργία union(u,v) είναι min(n u,n v ), όπου n u και n v είναι τα μεγέθη των sets που έχουν αποθηκευμένα τα u και v Όποτε ένα στοιχείο προσπελάσεται, πηγαίνει σε ένα set τουλάχιστον διπλασίου μεγέθους, ως εκ τούτου κάθε στοιχείο προσπελάσεται το πολύ log n φορές

14 Minimum Spanning Trees14 Partition-Based Εφαρμογή Μία partition-based έκδοση του αλγόριθμου Kruskal εκτελεί τις συγχωνεύσεις σύννεφων ως ενώσεις και τις τεστάρει όπως τις βρίσκει Algorithm Kruskal(G): Input: A weighted graph G. Output: An MST T for G. Έστω P ένα partition των κορυφών του G, όπου κάθε κορυφή διαμορφώνει ένα χωριστό set. Έστω Q μία σειρά αναμονής που έχει αποθηκευμένες τις κορυφές του G, ταξινομημένες κατά το βάρος τους Έστω T ένα αρχικά-κενό δέντρο while Q δεν είναι άδειο do (u,v)  Q.removeMinElement() if P.find(u) != P.find(v) then Add (u,v) to T P.union(u,v) return T Χρόνος εκτέλεσης O((n+m)log n)

15 Minimum Spanning Trees15 Kruskal Παράδειγμα JFK BOS MIA ORD LAX DFW SFO BWI PVD 867 2704 187 1258 849 144 740 1391 184 946 1090 1121 2342 1846 621 802 1464 1235 337

16 Minimum Spanning Trees16

17 Minimum Spanning Trees17

18 Minimum Spanning Trees18

19 Minimum Spanning Trees19

20 Minimum Spanning Trees20

21 Minimum Spanning Trees21

22 Minimum Spanning Trees22

23 Minimum Spanning Trees23

24 Minimum Spanning Trees24

25 Minimum Spanning Trees25

26 Minimum Spanning Trees26

27 Minimum Spanning Trees27

28 Minimum Spanning Trees28 144 740 1391 184 946 1090 1121 2342 1846 621 802 1464 1235 337

29 Minimum Spanning Trees29 Ο Αλγόριθμος Baruvka’s Όπως ο αλγόριθμος Kruskal’s, ο Baruvka’s αλγόριθμος αναπτύσει πολλά “σύννεφα” με τη μία. Κάθε επανάληψη του while-loop halves τον αριθμό των συνδεδεμένων στοιχείων στο T. Ο χρόνος εκτέλεσης είναι O(m log n). Algorithm BaruvkaMST(G) T  V {μόνο τις κορυφές του G} while T έχει λιγότερες από n-1 ακμές do for each συνδεμένο στοιχείο C στο T do Έστω η ακμή e ότι είναι η μικρότερου βάρους ακμή από το C σε ένα άλλο στοιχείο του T. if e δεν είναι στο T then Πρόσθεσε την ακμή e στο T return T

30 Minimum Spanning Trees30 Baruvka Παράδειγμα

31 Minimum Spanning Trees31

32 Minimum Spanning Trees32 849 144 740 1391 184 946 1090 1121 2342 1846 621 802 1464 1235 337

33 Minimum Spanning Trees33 Διακινούμενο πρόβλημα πωλητών Ένα tour του γράφου είναι ένα εκτεινόμενο cycle (πχ, ένα cycle που περνά από όλες τις κορυφές) A traveling salesperson tour ενός γράφου βαρύτητας είναι ένα tour που είναι απλό (πχ, χωρίς επαναλαμβανόμενες κορυφές ή ακμές) και έχει το ελάχιστο βάρος Κανένας πολυωνυμικός-χρονικός αλγόριθμος δεν είναι γνωστός για τον υπολογισμό των διακινούμενων γύρων πωλητών Το διακινούμενο πρόβλημα πωλητών (TSP) είναι ένα σημαντικό ανοικτό πρόβλημα στην πληροφορική Βρείτε έναν πολυωνυμικό-χρονικό αλγόριθμο που να υπολογίζει a traveling salesperson tour ή να αποδεικνύει ότι δεν υπάρχει B D C A F E 7 4 2 8 5 3 2 6 1 Παράδειγμα των διακινούμενων πωλητών tour(με βάρος 17)

34 Minimum Spanning Trees34 Προσέγγιση TSP Μπορούμε να προσεγγίσουμε ένα TSP tour με ένα tour που έχει το πολύ δύο φορές το βάρος για την περίπτωση των Euclidean γράφων Οι κορυφές είναι σημεία στο επίπεδο Κάθε ζευγάρι κορυφών είναι συνδεμένο με μία ακμή Το βάρος μιας ακμής είναι το μήκος από το τμήμα που ενώνει τα σημεία Αλγόριθμος προσέγγισης Υπολογίζει ένα “ελάχιστο” εκτεινόμενο δέντρο Διαμορφώνει έναν Eulerian circuit γύρω από MST Μετατρέπει τον circuit σε tour


Κατέβασμα ppt "Minimum Spanning Trees1 “Ελάχιστα” συνδετικά δέντρα JFK BOS MIA ORD LAX DFW SFO BWI PVD"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google