Εισαγωγή στους Αλγόριθμους Ενότητα 14: Εύρεση ελάχιστων μονοπατιών σε γραφήματα Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών
Σκοποί ενότητας Παρουσίαση και μελέτη αλγορίθμων για εύρεση ελάχιστων μονοπατιών σε γραφήματα Τίτλος Ενότητας 2
Περιεχόμενα ενότητας Παρουσίαση και μελέτη αλγορίθμων για εύρεση ελάχιστων μονοπατιών σε γραφήματα Τίτλος Ενότητας 3
Εισαγωγή στους Αλγόριθμους Εύρεση ελάχιστων μονοπατιών σε γραφήματα 4
Θέματα μελέτης Πρόβλημα εύρεσης ελάχιστων μονοπατιών σε γραφήματα (shortest path problem) Αλγόριθμος του Dijkstra 5
Αλγόριθμος του Dijkstra Απόσταση μιας κορυφής v από μία κορυφή s = μήκος Edsger Wybe Dijkstra 1930 2002 συντομότερου μονοπατιού μεταξύ των s και v Ο αλγόριθμος του Dijkstra υπολογίζει τις ελάχιστες αποστάσεις όλων των κορυφών από δοσμένη αρχική κορυφή s μετιςεξήςυποθέσεις: Το γράφημα είναι συνεκτικό (μπορώ από οποιαδήποτε κορυφή να φτάσω σε οποιαδήποτε άλλη) Οι ακμές είναι μη κατευθυνόμενες Τα βάρη στις ακμές είναι μη αρνητικά Αν τα βάρη σε όλες τις ακμές είναι ίδια είναι ο αλγόριθμος BFS 6
Αλγόριθμος του Dijkstra Φτιάχνουμε σταδιακά σύννεφο από κορυφές, ξεκινώντας από την s και τελικά καλύπτοντας όλες τις κορυφές Αποθηκεύουμε με κάθε κορυφή v μια ετικέτα d(v) που δείχνει την απόσταση της v από την s στο υπογράφημα που αποτελείται από το σύννεφο και τις γειτονικές του κορυφές Σε κάθε βήμα Προσθέτουμε στο σύννεφο την εκτός του σύννεφου κορυφή u με τη μικρότερη απόσταση d(u) Ενημερώνουμε τις ετικέτες των κορυφών που είναι γειτονικές στη u 7
Απλούστευση για τις ακμές Έστω μια ακμή e = (u,z) τέτοια ώστε u είναι η κορυφή που προστέθηκε τελευταία στο σύννεφο s d(u) = 50 u e 10 d(z) = 75 z z είναι κορυφή έξω από το σύννεφο Η απλούστευση για την ακμή e ενημερώνει την απόσταση d(z) ως εξής: d(z) min{d(z),d(u) + weight(e)} s d(u) = 50 u e 10 d(z) = 60 z 8
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra 8 A 4 2 7 1 B C D 3 9 2 5 E F 0 8 A 4 2 8 7 2 1 B C D 3 9 2 5 E F 4 Αρχικά δίνεται το γράφημα και τα βάρη των ακμών δηλ., οι αποστάσεις των κορυφών Δίνεται η αρχική κορυφή (Α) και η ετικέτα της (με τιμή 0) και υπολογίζουμε τις ετικέτες των άλλων κορυφών του γραφήματος Κορυφή v με τιμή ετικέτας : δεν υπάρχει ακμή από την αρχική κορυφή (Α) προς τη v 9
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra B 8 8 0 A 2 7 2 1 C 4 D 4 B 8 8 0 A 2 7 2 1 C 4 D 3 3 9 2 5 E F 5 3 9 8 2 5 E F B 8 8 0 A 2 7 2 1 C 4 D 3 B 8 7 0 A 2 7 2 1 C 4 D 3 5 3 9 11 2 5 E F 5 3 9 8 2 5 E F 10
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra B 8 7 0 A 2 7 2 1 C 4 D 3 5 3 9 8 2 5 E F B 8 7 0 A 2 7 2 1 C 4 D 3 5 3 9 8 2 5 E F 11
Αλγόριθμος του Dijkstra Ο αλγόριθμος του Dijkstra είναι παράδειγμα άπληστου (greedy) αλγόριθμου: προσθέτει κορυφές με αυξανόμενη απόσταση (ή διαφορετικά σε κάθε βήμα προσθέτει την κορυφήπουαυξάνειόσοτοδυνατόλιγότεροτησυνολικό μήκος μονοπατιού) Άπληστοι αλγόριθμοι για ένα πρόβλημα βασίζονται στην ιδέα: σεκάθεβήμακάνωό,τι καλύτερο μπορώ με βάση τα ζητούμενα του προβλήματος Αν θέλω να πάω από το Αγρίνιο στη Θεσσαλονίκη όσο πιο γρήγορα γίνεται, θα μεταφερθώ προς τους συντομότερους ενδιάμεσους προορισμούς Αν θέλω να πάω από το Αγρίνιο στη Θεσσαλονίκη όσο πιο φθηνά γίνεται, θα μεταφερθώ προς ενδιάμεσους προορισμούς που διασφαλίζουν κάθε φορά το φθηνότερο εισιτήριο 12
Αλγόριθμος του Dijkstra: ορθότητα Ισχυριζόμαστε ότι ο αλγόριθμος προσθέτει κάθε φορά στο σύννεφο (άπληστα) την κορυφή με τη μικρότερη απόσταση από αυτό Υποθέτουμε ότι ΔΕ βρήκε όλες τις μικρότερες αποστάσεις και έστω F η πρώτη λάθος κορυφή που επέλεξε ο αλγόριθμος Όταν ο αλγόριθμος ασχολήθηκε με την προηγούμενη κορυφή D στο πραγματικά συντομότερο μονοπάτι η απόσταση της D ήταν σωστή Αλλά έγινε απλούστευση για την ακμή (D,F) τότε! Επομένως, αφού ισχύει ότι d(f) d(d), η απόσταση της F δε μπορεί να είναι λάθος 13
Αλγόριθμος του Dijkstra: χρόνος εκτέλεσης Για κάθε κορυφή, διαλέγω τη γειτονική της με τη μικρότερη ετικέτα Αν οι κορυφές είναι αποθηκευμένες σε μη ταξινομημένη λίστα βρίσκω τη γειτονικήκορυφήμετημικρότερηετικέτασεο( V ) βήματα Αν οι κορυφές είναι αποθηκευμένες σε ταξινομημένη λίστα βρίσκω τη γειτονικήκορυφήμετημικρότερηετικέτασεο(log V ) βήματα Πόσες φορές μπορεί να χρειαστεί να κάνω το παραπάνω; Το πολύ τόσες φορές όσες είναι οι ακμές στο γράφημα, δηλ., Ο( Ε ) φορές Συνολικά: απαιτείται χρόνος Ο( V * E ) ή Ο( E *log V ) αν χρησιμοποιηθούν ειδικές δομές αποθήκευσης (που καλούνται σωροίheaps) ήσεο( E + V *log V ) με χρήση ειδικών σωρών (Fibonacci heaps) (Fredman & Tarjan, 1984) 14
Κλάσεις αλγορίθμων 15
Online vs offline Φανταστείτε ότι καλείστε σε συνέντευξη και γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν Έχετε τη δυνατότητα να μελετήσετε από πριν το σύνολο των ερωτήσεων και να δώσετε τις καλύτερες δυνατές απαντήσεις χωρίς να γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν Πρέπει να απαντάτε αμέσως σε κάθε ερώτηση Χωρίς να γνωρίζετε τις επόμενες ερωτήσεις (Συνήθως) δε μπορείτε να αναιρέσετε ό,τι ήδη είπατε 16
Online vs offline Φανταστείτε ότι καλείστε σε συνέντευξη [OFFLINE] και γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν Έχετε τη δυνατότητα να μελετήσετε από πριν το σύνολο των ερωτήσεων και να δώσετε τις καλύτερες δυνατές απαντήσεις χωρίς να γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν [ONLINE] Πρέπει να απαντάτε αμέσως σε κάθε ερώτηση Χωρίς να γνωρίζετε τις επόμενες ερωτήσεις (Συνήθως) δε μπορείτε να αναιρέσετε ό,τι ήδη είπατε 17
Online vs offline αλγόριθμοι OFFLINE: Γνωρίζουν το σύνολο της εισόδου μπορούν να κάνουν βέλτιστες επιλογές Π.χ., δρομολόγηση σε παράλληλο υπολογιστή ONLINE: Η είσοδος τους αποκαλύπτεται σταδιακά πρέπει σε κάθε βήμα να λαμβάνουν απόφαση (συνήθως μη αναστρέψιμη) χωρίς να γνωρίζουν το μέλλον, έχοντας μόνο πλήρη ή μερική γνώση του παρελθόντος Ανάθεση συχνοτήτων σε χρήστες κυψελικού δικτύου 18
Ντετερμινιστική vs πιθανοτική προσέγγιση Υπάρχουν 7 ντουλαπάκια καιένα ζάριμε 7 όψεις Διαλέγετε πάντα το κόκκινο ντουλαπάκι με ετικέτα 1 Διαθέτετε πολλές επιλογές και εσείς προτιμάτε πάντα (δηλ., με πιθανότητα= 1) μία συγκεκριμένη επιλογή (ΝΤΕΤΕΡΜΙΝΙΣΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ) Ρίχνετε το ζάρι και ανάλογα με το τι θα φέρει διαλέγετε ντουλαπάκι με την αντίστοιχη ετικέτα Διαθέτετεπολλέςεπιλογέςκαιπροτιμάτεόποιασαςυποδεικνύειμιαπηγή τυχαιότητας, π.χ., έναζάρι (ΠΙΘΑΝΟΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ) Αν το ζάρι «φέρνει» υποδεικνύει πάντα την ίδια επιλογή ΝΤΕΤΕΡΜΙΝΙΣΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ 19
Ντετερμινιστικοί vs πιθανοτικοί αλγόριθμοι Ντετερμινιστικοί αλγόριθμοι: όποτε καλούνται να αποφασίσουν μεταξύ διαφορετικών επιλογών, προτιμούν σίγουρα μια συγκεκριμένη επιλογή Επιλέγω πάντα το μικρότερο από τα k στοιχεία ενός συνόλου αριθμών Πιθανοτικοί αλγόριθμοι: όποτε καλούνται να αποφασίσουν μεταξύ διαφορετικών επιλογών, προτιμούν ό,τι τους υποδεικνύει κάποια πηγή τυχαιότητας Επιλέγω ισοπίθανα κάποιο από τα k στοιχεία ενός συνόλου αριθμών 20
Άπληστοι (greedy) αλγόριθμοι Κάνουν τη βέλτιστη επιλογή σε κάθε βήμα ελπίζοντας ότι αυτό θα οδηγήσει σε βέλτιστη λύση στο μέλλον Παράδειγμα: Έχουμε Μ EUR για να αγοράσουμε γλυκά Υπάρχουν Ν τεμάχια γλυκών και το καθένα έχει κάποιο κόστος Ταξινομούμε τα γλυκά από το φθηνότερο στο ακριβότερο και αγοράζουμε από την αρχή προς το τέλος της λίστας μέχρι να τελειώσουν χρήματα Αν κάθε φορά αγοράζουμε το φθηνότερο, ελπίζουμε πως συνολικά θα αγοράσουμε τα περισσότερα δυνατά γλυκά με βάση τον προϋπολογισμό μας 21
Online αλγόριθμοι Αλγόριθμοι που πρέπει να λάβουν αποφάσεις χωρίς πλήρη γνώση της εισόδου Διαθέτουν πλήρη (ή μερική) γνώση του παρελθόντος αλλά καμία (ή μερική) γνώση του μέλλοντος Για τέτοιου είδους προβλήματα σχεδιάζονται αλγόριθμοι που είναι ανταγωνιστικοί σε σχέση με κάποιον βέλτιστο offline αλγόριθμο, δηλ., τον αλγόριθμο που έχει πλήρη γνώση του μέλλοντος 22
Το πρόβλημα του σακιδίου (the knapsack problem) Ποια κουτιά θα διαλέγατε για να συγκεντρώσετε το μέγιστο χρηματικό ποσό και να μην ξεπεράσετε τη χωρητικότητα της τσάντας σας; Το πρόβλημα αυτό συχνά ανακύπτει σε προβλήματα ανάθεσης (κατανομής) πόρων Είναι ένα δύσκολο πρόβλημα, δηλ., δεν έχει βρεθεί αλγόριθμος καλύτερος απότοναψάξουμεόλεςτιςπιθανέςλύσεις 23
Το πρόβλημα του σακιδίου (the knapsack problem) Άπληστος (προσεγγιστικός) αλγόριθμος Διάταξε τα αντικείμενα σε φθίνουσα σειρά χρηματικής αξίας: κίτρινο (10), πράσινο (4), μπλε/γκρι (2), πορτοκαλί (1) Χρηματική αξία ίδια; Διάταξε τα αντικείμενα σε αύξουσα σειρά βάρους: κίτρινο (10), πράσινο (4), γκρι (2,1), μπλε (2,2), πορτοκαλί (1) Πάρε όσα περισσότερα αντικείμενα μπορείς με βάση την παραπάνω λίστα ώστε να μην ξεπεράσεις τη χωρητικότητα του σακιδίου: Υπάρχουν πολλά τεμάχια από κάθε αντικείμενο; Υπάρχει ένα τεμάχιο ανά αντικείμενο; 24
Το πρόβλημα του σακιδίου (the knapsack problem) Υπάρχουν πολλά τεμάχια από κάθε αντικείμενο Κίτρινο (10,4), Κίτρινο (10,4), Κίτρινο (10,4), Γκρι (2,1), Γκρι (2,1), Γκρι (2,1): 36$,15kg Πετυχαίνουμε πάντα τουλάχιστον 50% από το καλύτερο που θα μπορούσε να γίνει Υπάρχει ένα τεμάχιο από κάθε αντικείμενο Κίτρινο (10,4), Γκρι (2,1), Μπλε (2,2), Πορτοκαλί (1,1): 15$,8kg 15kg, 36$ 25
Το πρόβλημα του σακιδίου (the knapsack problem) Υπάρχουν πολλά τεμάχια από κάθε αντικείμενο Κίτρινο (10,4), Κίτρινο (10,4), Κίτρινο (10,4), Γκρι (2,1), Γκρι (2,1), Γκρι (2,1): 36$,15kg Πετυχαίνουμε πάντα τουλάχιστον 50% από το καλύτερο που θα μπορούσε να γίνει Υπάρχει ένα τεμάχιο από κάθε αντικείμενο Κίτρινο (10,4), Γκρι (2,1), Μπλε (2,2), Πορτοκαλί (1,1): 15$,8kg 8kg, 36$ 26
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Τίτλος Ενότητας 28
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.00. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Τίτλος Ενότητας 30
Σημείωμα Αναφοράς Copyright Πανεπιτήμιο Πατρών, Εύη Παπαϊωάννου. «Εισαγωγή στους Αλγόριθμους. Εύρεση ελάχιστων μονοπατιών σε γραφήματα.». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/culture158/index.php Τίτλος Ενότητας 31
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by nc sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος(π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Τίτλος Ενότητας 32
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. Τίτλος Ενότητας 33
Σημείωμα Χρήσης Έργων Τρίτων Το Έργο αυτό κάνει χρήση των ακόλουθων έργων: Εικόνες/Σχήματα/Διαγράμματα/Φωτογραφίες Σχεδιασμός Αλγορίθμων. Jon Kleinberg, Eva Tardos. Επιστημονική επιμέλεια Ελληνικής έκδοσης: Χρήστος Ζαρολιάγκης. Εκδόσεις Κλειδάριθμος, 2009. ISBN: 978 960 461 207 9. Κωδικός Βιβλίου στον Εύδοξο: 13898. Αλγόριθμοι. Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani. Εκδόσεις Κλειδάριθμος, 2009. ISBN 978 960 524 444 6. Κωδικός Βιβλίου στον Εύδοξο: 13583. http://www.wikipedia.org Τίτλος Ενότητας 34