Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΒενέδικτος Ελευθερίου Τροποποιήθηκε πριν 7 χρόνια
1
ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
2
Εύρεση ελάχιστων μονοπατιών
Αλγόριθμος του Dijkstra
3
Θέματα μελέτης Πρόβλημα εύρεσης ελάχιστων μονοπατιών σε γραφήματα (shortest path problem) Αλγόριθμος του Dijkstra
4
Αλγόριθμος του Dijkstra
Απόσταση μιας κορυφής v από μία κορυφή s = μήκος συντομότερου μονοπατιού μεταξύ των s και v Ο αλγόριθμος του Dijkstra υπολογίζει τις ελάχιστες αποστάσεις όλων των κορυφών από δοσμένη αρχική κορυφή s με τις εξής υποθέσεις: Το γράφημα είναι συνεκτικό (μπορώ από οποιαδήποτε κορυφή να φτάσω σε οποιαδήποτε άλλη) Οι ακμές είναι μη κατευθυνόμενες Τα βάρη στις ακμές είναι μη αρνητικά Αν τα βάρη σε όλες τις ακμές είναι ίδια είναι ο αλγόριθμος BFS Edsger Wybe Dijkstra
5
Αλγόριθμος του Dijkstra
Αποθηκεύουμε με κάθε κορυφή v μια ετικέτα d(v) που δείχνει την απόσταση της v από την s στο υπογράφημα που αποτελείται από το σύννεφο και τις γειτονικές του κορυφές Σε κάθε βήμα Προσθέτουμε στο σύννεφο την εκτός του σύννεφου κορυφή u με τη μικρότερη απόσταση d(u) Ενημερώνουμε τις ετικέτες των κορυφών που είναι γειτονικές στη u
6
Απλούστευση για τις ακμές
Έστω μια ακμή e = (u,z) τέτοια ώστε u είναι η κορυφή που προστέθηκε τελευταία στο σύννεφο z είναι κορυφή έξω από το σύννεφο Η απλούστευση για την ακμή e ενημερώνει την απόσταση d(z) ως εξής: d(z) min{d(z),d(u) + weight(e)} d(u) = 50 10 d(z) = 75 e u s z d(u) = 50 10 d(z) = 60 u e s z
7
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra
A 4 A 4 8 8 2 2 ? ? 7 1 7 1 B C D B C D ? 3 9 3 9 5 2 5 2 E F E F ? ? Δίνεται η αρχική κορυφή (Α) και η ετικέτα της (με τιμή 0) και υπολογίζουμε τις ετικέτες των άλλων κορυφών του γραφήματος Αρχικά δίνεται το γράφημα και τα βάρη των ακμών δηλ., οι αποστάσεις των κορυφών
8
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra
C B A E D F 4 2 8 7 1 3 9 5 C B A E D F 4 2 8 7 1 3 9 5 Αρχικά, αναθέτουμε ετικέτες στις κορυφές που δείχνουν την άμεση απόστασή τους από την αρχική κορυφή. Κορυφή v με τιμή ετικέτας : δεν υπάρχει ακμή από την αρχική κορυφή (Α) προς τη v. Μετά, αρχίζουμε να δημιουργούμε το «σύννεφο» ξεκινώντας από την αρχική κορυφή.
9
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra
C B A E D F 4 2 8 7 1 3 9 5 Προσθέτουμε στο «σύννεφο» την κορυφή που μπορούμε να φτάσουμε από την αρχική (Α) με το μικρότερο κόστος Από την Α, μπορούμε να φτάσουμε -- την Β με κόστος 8 -- την C με κόστος 2 -- την D με κόστος 4 Επιλέγουμε την κορυφή C Μετά, ενημερώνουμε τις ετικέτες των κορυφών έξω από το «σύννεφο» ώστε να δείχνουν την ελάχιστη απόστασή τους από αυτό C B A E D F 3 2 8 5 4 7 1 11 9
10
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra
C B A E D F 3 2 8 5 4 7 1 9 C B A E D F 4 2 8 7 1 3 9 5 Από τις κορυφές έξω από το «σύννεφο» -- η Β έχει απόσταση 8 -- η Ε έχει απόσταση 5 -- η F έχει απόσταση 11 -- η D έχει απόσταση 3 Επιλέγουμε να προσθέσουμε στο «σύννεφο» την κορυφή D Μετά, ενημερώνουμε τις ετικέτες των κορυφών έξω από το «σύννεφο» ώστε να δείχνουν την ελάχιστη απόστασή τους από αυτό Συνεχίζουμε όμοια μέχρι να μην υπάρχουν κορυφές έξω από το «σύννεφο» C B A E D F 3 2 8 5 4 7 1 11 9
11
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra
C B A E D F 4 2 8 7 1 3 9 5 C B A E D F 3 2 7 5 4 8 1 9
12
Παράδειγμα εκτέλεσης του αλγορίθμου του Dijkstra
C B A E D F 3 2 7 5 4 8 1 9 C B A E D F 3 2 7 5 4 8 1 9
13
Αλγόριθμος του Dijkstra
Ο αλγόριθμος του Dijkstra είναι παράδειγμα άπληστου (greedy) αλγόριθμου: προσθέτει κορυφές με αυξανόμενη απόσταση (ή διαφορετικά σε κάθε βήμα προσθέτει την κορυφή που αυξάνει όσο το δυνατό λιγότερο τη συνολικό μήκος μονοπατιού) Άπληστοι αλγόριθμοι για ένα πρόβλημα βασίζονται στην ιδέα: σε κάθε βήμα κάνω ό,τι καλύτερο μπορώ με βάση τα ζητούμενα του προβλήματος Αν θέλω να πάω από το Αγρίνιο στη Θεσσαλονίκη όσο πιο γρήγορα γίνεται, θα μεταφερθώ προς τους συντομότερους ενδιάμεσους προορισμούς… Αν θέλω να πάω από το Αγρίνιο στη Θεσσαλονίκη όσο πιο φθηνά γίνεται, θα μεταφερθώ προς ενδιάμεσους προορισμούς που διασφαλίζουν κάθε φορά το φθηνότερο εισιτήριο…
14
Αλγόριθμος του Dijkstra: ορθότητα
Ισχυριζόμαστε ότι ο αλγόριθμος προσθέτει κάθε φορά στο σύννεφο (άπληστα) την κορυφή με τη μικρότερη απόσταση από αυτό Υποθέτουμε ότι ΔΕΝ βρήκε όλες τις μικρότερες αποστάσεις και έστω F η πρώτη λάθος κορυφή που επέλεξε ο αλγόριθμος Όταν ο αλγόριθμος ασχολήθηκε με την προηγούμενη κορυφή D στο πραγματικά συντομότερο μονοπάτι η απόσταση της D ήταν σωστή Αλλά έγινε απλούστευση για την ακμή (D,F) τότε! Επομένως, αφού ισχύει ότι d(F)d(D), η απόσταση της F δεν μπορεί να είναι λάθος…
15
Αλγόριθμος του Dijkstra: χρόνος εκτέλεσης
Για κάθε κορυφή, διαλέγω τη γειτονική της με τη μικρότερη ετικέτα Αν οι κορυφές είναι αποθηκευμένες σε μη ταξινομημένη λίστα βρίσκω τη γειτονική κορυφή με τη μικρότερη ετικέτα σε Ο(|V|) βήματα Αν οι κορυφές είναι αποθηκευμένες σε ταξινομημένη λίστα βρίσκω τη γειτονική κορυφή με τη μικρότερη ετικέτα σε Ο(log|V|) βήματα Πόσες φορές μπορεί να χρειαστεί να κάνω το παραπάνω; Το πολύ τόσες φορές όσες είναι οι ακμές στο γράφημα, δηλ., Ο(|Ε|) φορές Συνολικά: απαιτείται χρόνος Ο(|V|*|E|) ή Ο(|E|*log|V|) αν χρησιμοποιηθούν ειδικές δομές αποθήκευσης (που καλούνται σωροί-heaps) ή Ο(|E|+|V|*log|V|) με χρήση ειδικών σωρών (Fibonacci heaps) (Fredman & Tarjan, 1984)
16
Κατηγορίες αλγορίθμων
17
Online vs offline Φανταστείτε ότι καλείστε σε συνέντευξη
…και γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν Έχετε τη δυνατότητα να μελετήσετε από πριν το σύνολο των ερωτήσεων και να δώσετε τις καλύτερες δυνατές απαντήσεις …χωρίς να γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν Πρέπει να απαντάτε αμέσως σε κάθε ερώτηση Χωρίς να γνωρίζετε τις επόμενες ερωτήσεις (Συνήθως) δεν μπορείτε να αναιρέσετε ό,τι ήδη είπατε
18
Online vs offline Φανταστείτε ότι καλείστε σε συνέντευξη [OFFLINE]
…και γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν Έχετε τη δυνατότητα να μελετήσετε από πριν το σύνολο των ερωτήσεων και να δώσετε τις καλύτερες δυνατές απαντήσεις …χωρίς να γνωρίζετε εκ των προτέρων τις ερωτήσεις που θα σας τεθούν [ONLINE] Πρέπει να απαντάτε αμέσως σε κάθε ερώτηση Χωρίς να γνωρίζετε τις επόμενες ερωτήσεις (Συνήθως) δεν μπορείτε να αναιρέσετε ό,τι ήδη είπατε
19
Online vs offline αλγόριθμοι
Γνωρίζουν το σύνολο της εισόδου μπορούν να κάνουν βέλτιστες επιλογές Π.χ., δρομολόγηση σε παράλληλο υπολογιστή ONLINE: Η είσοδος τους αποκαλύπτεται σταδιακά πρέπει σε κάθε βήμα να λαμβάνουν απόφαση (συνήθως μη αναστρέψιμη) χωρίς να γνωρίζουν το μέλλον, έχοντας μόνο πλήρη ή μερική γνώση του παρελθόντος Ανάθεση συχνοτήτων σε χρήστες κυψελικού δικτύου
20
Ντετερμινιστική vs πιθανοτική προσέγγιση
Υπάρχουν 7 ντουλαπάκια και ένα ζάρι με 7 όψεις Διαλέγετε πάντα το κόκκινο ντουλαπάκι με ετικέτα 1 Διαθέτετε πολλές επιλογές και εσείς προτιμάτε πάντα (δηλ., με πιθανότητα= 1) μία συγκεκριμένη επιλογή (ΝΤΕΤΕΡΜΙΝΙΣΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ) Ρίχνετε το ζάρι και ανάλογα με το τι θα φέρει διαλέγετε ντουλαπάκι με την αντίστοιχη ετικέτα Διαθέτετε πολλές επιλογές και προτιμάτε όποια σας υποδεικνύει μια πηγή τυχαιότητας, π.χ., ένα ζάρι (ΠΙΘΑΝΟΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ) Αν το ζάρι «φέρνει» υποδεικνύει πάντα την ίδια επιλογή ΝΤΕΤΕΡΜΙΝΙΣΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ
21
Ντετερμινιστικοί vs πιθανοτικοί αλγόριθμοι
Ντετερμινιστικοί αλγόριθμοι: όποτε καλούνται να αποφασίσουν μεταξύ διαφορετικών επιλογών, προτιμούν σίγουρα μια συγκεκριμένη επιλογή Επιλέγω πάντα το μικρότερο από τα k στοιχεία ενός συνόλου αριθμών Πιθανοτικοί αλγόριθμοι: όποτε καλούνται να αποφασίσουν μεταξύ διαφορετικών επιλογών, προτιμούν ό,τι τους υποδεικνύει κάποια πηγή τυχαιότητας Επιλέγω ισοπίθανα κάποιο από τα k στοιχεία ενός συνόλου αριθμών
22
Άπληστοι (greedy) αλγόριθμοι
Κάνουν τη βέλτιστη επιλογή σε κάθε βήμα ελπίζοντας ότι αυτό θα οδηγήσει σε βέλτιστη λύση στο μέλλον Παράδειγμα: Έχουμε Μ EUR για να αγοράσουμε γλυκά Υπάρχουν Ν τεμάχια γλυκών και το καθένα έχει κάποιο κόστος Ταξινομούμε τα γλυκά από το φθηνότερο στο ακριβότερο και αγοράζουμε από την αρχή προς το τέλος της λίστας μέχρι να τελειώσουν χρήματα Αν κάθε φορά αγοράζουμε το φθηνότερο, ελπίζουμε πως συνολικά θα αγοράσουμε τα περισσότερα δυνατά γλυκά με βάση τον προϋπολογισμό μας
23
Online αλγόριθμοι Αλγόριθμοι που πρέπει να λάβουν αποφάσεις χωρίς πλήρη γνώση της εισόδου Διαθέτουν πλήρη (ή μερική) γνώση του παρελθόντος αλλά καμία (ή μερική) γνώση του μέλλοντος Για τέτοιου είδους προβλήματα σχεδιάζονται αλγόριθμοι που είναι ανταγωνιστικοί σε σχέση με κάποιον βέλτιστο offline αλγόριθμο, δηλ., τον αλγόριθμο που έχει πλήρη γνώση του μέλλοντος
24
Το πρόβλημα του σακιδίου (the knapsack problem)
Ποια κουτιά θα διαλέγατε για να συγκεντρώσετε το μέγιστο χρηματικό ποσό και να μην ξεπεράσετε τη χωρητικότητα της τσάντας σας; Το πρόβλημα αυτό συχνά ανακύπτει σε προβλήματα ανάθεσης (κατανομής) πόρων Είναι ένα δύσκολο πρόβλημα, δηλ., δεν έχει βρεθεί αλγόριθμος καλύτερος από το να ψάξουμε όλες τις πιθανές λύσεις
25
Το πρόβλημα του σακιδίου (the knapsack problem)
Άπληστος (προσεγγιστικός) αλγόριθμος Διάταξε τα αντικείμενα σε φθίνουσα σειρά χρηματικής αξίας: κίτρινο (10), πράσινο (4), μπλε/γκρι (2), πορτοκαλί (1) Χρηματική αξία ίδια; Διάταξε τα αντικείμενα σε αύξουσα σειρά βάρους: κίτρινο (10), πράσινο (4), γκρι (2,1), μπλε (2,2), πορτοκαλί (1) Πάρε όσα περισσότερα αντικείμενα μπορείς με βάση την παραπάνω λίστα ώστε να μην ξεπεράσεις τη χωρητικότητα του σακιδίου: Υπάρχουν πολλά τεμάχια από κάθε αντικείμενο; Υπάρχει ένα τεμάχιο ανά αντικείμενο;
26
Το πρόβλημα του σακιδίου (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$
27
Το πρόβλημα του σακιδίου (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$
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.