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

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

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

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


Παρουσίαση με θέμα: "Αλγόριθμοι και Πολυπλοκότητα"— Μεταγράφημα παρουσίασης:

1 Αλγόριθμοι και Πολυπλοκότητα
Η σφαίρα των αλγοριθμικών προβλημάτων Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

2 Πρόβλημα Πλανόδιου Πωλητή
Α Ε D B C 2 5 3 4 1 6 σημείο εκκίνησης: B μικρότερη διαδρομή: ABDECA μήκος(ABDECA) = =11 Βρες την μικρότερη διαδρομή που περνά από κάθε πόλη μόνο μια φορά και γυρνά σε αυτήν που ξεκίνησε Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

3 Εξαντλητική Αναζήτηση
Υπολόγισε όλα τα μονοπάτια και διάλεξε το συντομότερο Μήκος(ABCDEA) = = 18 Μήκος(ACBDEA) = = 15 …… Μήκος(ABDECA) = = 11 Μήκος(AEBCDA) = = 19 Για n πόλεις => (n-1)! μονοπάτια => Πολυπλοκότητα: Ω(2n) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

4 Αλγόριθμοι και Πολυπλοκότητα
Εκθετικά Προβλήματα Έστω ότι είναι γνωστό ότι υπάρχει ένας εκθετικός αλγόριθμος που λύνει το πρόβλήμα π.χ., όπως στο πρόβλημα πλανόδιου πωλητή Ερώτημα: Υπάρχει καλύτερος αλγόριθμος; Μέχρι πότε θα ψάχνουμε για ένα καλύτερο αλγόριθμο; An αποδειχθεί ότι το πρόβλημα είναι το ίδιο δύσκολο όσο κάποιο άλλο επίσης δύσκολο πρόβλημα για το οποίο δεν έχει βρεθεί καμία καλύτερη λύση, τότε, σταματάμε να ψάχνουμε καλύτερη λύση για το πρώτο πρόβλημα Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

5 Προβλήματα NP-Complete
Δύσκολα προβλήματα για τα οποία ξέρουμε μόνο εκθετικούς αλγορίθμους Ίσως υπάρχουν πολυωνυμικές λύσεις άλλα δεν έχουν βρεθεί ακόμα Παραδείγματα: Πλανόδιου Πωλητή (TSP) Μονοπάτι Hamilton Καλάθι 0-1 (Knapsack Problem) Ιδιότητές NP Completeness: Όχι αποφασισμένη πολυωνυμικότητα Πληρότητα Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

6 Όχι Αποφασισμένη Πολυωνυμικότητα
Ένας πολυωνυμικός αλγόριθμος δεν εγγυάται βέλτιστο αποτέλεσμα Ο πολυωνυμικός αλγόριθμος είναι μη αποφασιστικός (deterministic): προσπαθεί να βρει μια λύση χρησιμοποιώντας τεχνάσματα Π.χ., TSP: το επόμενο σημείο είναι το πιο κοντινό στο παρόν σημείο Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

7 Παράδειγμα στο πρόβλημα TSP
Ακολουθεί πάντα την μικρότερη διαδρομή προκειμένου να πάει στην επόμενη πόλη Δεν καταλήγει πάντα σε συντομότερη διαδρομή Α Ε D B C 2 5 3 4 1 6 μήκος(ABEDCA) = =14 δεν είναι βέλτιστο Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

8 Αλγόριθμοι και Πολυπλοκότητα
Πληρότητα Κάθε NP-complete πρόβλημα μετατρέπεται σε ένα άλλο NP-complete σε πολυωνυμικό χρόνο Τότε, αν βρεθεί βέλτιστος πολυωνυμικός αλγόριθμος για ένα από αυτά τα προβλήματα, τότε υπάρχει τέτοιος αλγόριθμος για όλα Για να λυθεί ένα NP-complete πρόβλημα αρκεί να μετασχηματιστεί στο πρόβλημα που λύνεται πολυωνυμικά Η πολυπλοκότητα της λύσης είναι το άθροισμα της πολυπλοκότητας μετατροπής και της λύσης του πρώτου προβλήματος Στο σύνολο η πολυπλοκότητα θα είναι πολυωνυμική Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

9 Αλγόριθμοι και Πολυπλοκότητα
Μονοπάτι Hamilton Υπάρχει διαδρομή που περνά από κάθε σημείο ενός γράφου G μόνο μια φορά; Ο αλγόριθμός εξαντλητικής αναζήτησης ελέγχει n! μονοπάτια Είναι NP Complete διότι μετετρέπεται σε TSP σε πολυωνυμικό χρόνο ως εξής Δημιούργησε έναν πλήρη γράφο G’ στον οποίο οι ακμές που υπάρχουν στον G έχουν μήκος 1 και αυτές που δεν υπάρχουν έχουν μήκος 2 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

10 Αλγόριθμοι και Πολυπλοκότητα
Λύση 1 2 G G’ Μετατροπή σε TSP σε πολυωνυμικό χρόνο: κόστος δημιουργίας του G συν κόστος προσθήκης πρόσθετων ακμών: O(n) Η λύση ισοδυναμεί με την εύρεση μονοπατιού TSP στον γράφο G’ με μήκος n + 1 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

11 Αλγόριθμοι και Πολυπλοκότητα
Τύποι Αλγορίθμων Ευρηματικοί (Heuristic) Λαίμαργοι (greedy) Τοπική αναζήτηση Βέλτιστοι (Optimal) Εξαντλητική Αναζήτηση Διαίρει & Βασίλευε (divide & conquer) Διακλάδωση με όρια (branch and bound) Δυναμικός Προγραμματισμός (DP) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

12 Αλγόριθμοι και Πολυπλοκότητα
Λαίμαργοι (1/2) Όταν κάνουν μια επιλογή διαλέγουν αυτή με μικρότερο κόστος TSP: η επόμενη πόλη της διαδρομής είναι η πιο κοντινή σε αυτή που βρίσκεται κάθε φορά σημείο εκκίνησης Α Ε D B C 2 5 3 4 1 6 μήκος(BECADB) = = 12 όχι βέλτιστο βέλτιστο μήκος(BACEDB) = = 11 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

13 Αλγόριθμοι και Πολυπλοκότητα
Λαίμαργοι (2/2) Σε κάποιες περιπτώσεις, βρίσκουν την βέλτιστη λύση Πρόβλημα σακιδίου: ανάμεσα σε Ν αντικείμενα διαφόρων αξιών και ίδιου μεγέθους βρες αυτά που γεμίζουν ένα σακί χωρητικότητας C με την μεγαλύτερη αξία; Λύση: γέμισε το σακί με τα αντικείμενα μεγαλύτερης αξίας Προγραμματισμός δουλειάς: ποια είναι η σειρά εξυπηρέτησης Ν πελατών η οποία ελαχιστοποιεί τον μέσο χρόνο αναμονής; Λύση: πρώτα πελάτες με τον μικρότερο χρόνο εξυπηρέτησης Δέντρο σύνδεσης ελάχιστου κόστους: επόμενη διαφάνεια Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

14 Δέντρα Ελάχιστου Κόστους Σύνδεσης
Σε ένα γράφο G με κόστος στις ακμές, βρες τις ακμές με το μικρότερο συνολικό κόστος ώστε όλους όλοι οι κόμβοι να μείνουν ενωμένοι Εφαρμογή: σύνδεσε όλες τις πόλεις με μικρότερο μήκος καλωδίου Οι ακμές δημιουργούν δένδρο Η εξαντλητική αναζήτηση χρειάζεται εκθετικό χρόνο (επιλογή ανάμεσα σε nn-2 δέντρα ή n! πλευρές) Δύο βέλτιστοι αλγόριθμοι (επόμενη διαφάνεια) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

15 Αλγόριθμοι για Δέντρα Ελάχιστου Κόστους Σύνδεσης
D B C 2 5 3 4 1 6 Α Ε D B C 2 1 Cost=7 Prim: σε κάθε βήμα προσθέτει στο δένδρο την ακμή με το μικρότερο κόστος Kruskal: σε κάθε βήμα προσθέτει την ακμή με το μικρότερο κόστος αρκεί να μην δημιουργούνται κύκλοι Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

16 Αλγόριθμοι και Πολυπλοκότητα
Αλγόριθμος Prim Είσοδος: γράφος G=(V,E), V={1,2,…,n} σύνολο κόμβων, U: σύνολο ακμών function Prim(είσοδος G:γράφος, έξοδος δένδρο U: σύνολο ακμών) { T = 0; U = {1}; while (U != V) { (u,v) = ακμή μικρότερου κόστους: u από το U, v από το V T = T + {(u,v)}; U = U + {v}; } Το δέντρο θα περιέχει n – 1 ακμές Πολυπλοκότητα: O(n2) γιατί; Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

17 Αλγόριθμοι και Πολυπλοκότητα
G = (V,E) 5 2 4 1 3 6 1 3 6 4 4 1 3 6 2 1 3 Βήμα 1 Βήμα 2 Βήμα 3 5 2 4 1 3 6 2 4 1 3 6 5 Βήμα 5 Βήμα 4 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

18 Αλγόριθμοι και Πολυπλοκότητα
Τοπική Αναζήτηση Αλγόριθμοι που βελτιώνουν μη βέλτιστες λύσεις, όπως μια τοπική μετατροπή που βελτιώνει μια υπάρχουσα λύση που έχει βρει ένας λαίμαργος αλγόριθμος Μπορεί να εφαρμοστεί επαναληπτικά και όσο βελτιώνεται η λύση Εφαρμογή σε δύσκολα (NP προβλήματα) όπως TSP Η πολυπλοκότητα της μετατροπής πρέπει να είναι πολυωνυμική Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

19 Αλγόριθμοι και Πολυπλοκότητα
B Α Ε D C Α Ε D B C 2 5 3 4 1 6 Λαίμαργος TSP 6 κόστος=12 Σημείο εκκίνησης Α Ε D B 2 Α Ε D B 1 4 Ε B D Α C 2 3 τοπικό κόστος = 4 τοπικό κόστος = 5 κόστος = 11: βέλτιστο Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

20 Διαίρει και Βασίλευε (D&C)
Το πρόβλημα διασπάται σε μικρότερα προβλήματα που λύνονται και οι λύσεις τους συνδυάζονται μέχρι να βρεθεί η λύση του αρχικού προβλήματος Η ιδέα είναι ότι όσο μικρότερο είναι ένα υποπρόβλημα, τόσο πιο εύκολο είναι να λυθεί Προσπάθεια να έχουμε υπο-προβλήματα ίδιου μεγέθους Εκφράζεται με επαναληπτικούς αλγορίθμους Π.χ. mergesort Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

21 Συγχωνευμένη ταξινόμηση
list mergesort(list L, int n) { if (n == 1) return (L); L1 = πάνω μισό του L; L2 = κάτω μισό του L; return merge (mergesort(L1,n/2), mergesort(L2,n/2) ); } n:μέγεθος του πίνακα L(υποθέτουμε το L δύναμη του 2) merge:συγχωνεύει τα ταξινομημένα L1, L2 σε ένα ταξινομημένο πίνακα Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

22 Αλγόριθμοι και Πολυπλοκότητα
Πολυπλοκότητα: O(nlogn) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

23 Δυναμικός Προγραμματισμός
Το αρχικό πρόβλημα διασπάται σε μικρότερα προβλήματα πού λύνονται ευκολότερα Οι λύσεις τους αποθηκεύονται και επαναχρησιμοποιούνται πολλές φορές όταν χρειάζονται για να λυθούν μεγαλύτερα υπο-προβλήματα και τελικά το αρχικό πρόβλημα Συχνά εκφράζεται με αναδρομική φόρμουλα που δηλώνει πως συνδυάζονται τα μικρότερα προβλήματα για να λύσουν ένα μεγαλύτερο Το διαίρει & βασίλευε μοιάζει αλλά δεν αποθηκεύει ή χρησιμοποιεί ξανά μερικές λύσεις Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

24 Αλγόριθμοι και Πολυπλοκότητα
Αριθμοί Fibonacci Χρησιμοποιώντας αναδρομή η πολυπλοκότητά είναι Χρησιμοποιώντας ένα πίνακα για αποθήκευση λύσεων η πολυπλοκότητα είναι O(n) F(0) F(1) F(n-1) F(n) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

25 Αλγόριθμοι και Πολυπλοκότητα
0-1 Σακί (knapsack) Aν δίνονται αντικείμενα που ποικίλουν σε μέγεθος και αξία, ποια είναι η μέγιστη αξία που μπορεί να χωρέσει σε σακί χωρητικότητας C ; Πως θα επιτύχουμε την μέγιστη δυνατή πληρότητα με την μέγιστη αξία ; Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

26 Εξαντλητική Αναζήτηση (1)
Η προφανής μέθοδος για να λύσουμε το πρόβλημα του είναι να δοκιμάσουμε όλους τους δυνατούς συνδυασμούς n αντικειμένων Κάθε αντικείμενο αντιστοιχεί σε ένα κελί Αν μπει στο σακί τότε το κελί του γίνεται 1 Αν δεν μπει τότε γίνεται 0 Υπάρχουν 2n διαφορετικοί συνδυασμοί … n 1 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

27 Ορολογία του Προβλήματος
n αντικείμενα s1, s2, s3, … sn: μεγέθη v1, v2, v3, …. vn: αξίες C: χωρητικότητα σακιού Έστω 0 <= i <= n και A <= C V(k,A) : η μέγιστη τιμή η οποία μπορεί να χωρέσει σε σακί χωρητικότητας A ξέροντας ότι διαλέγουμε τα περιεχόμενα από τα πρώτα k αντικείμενα V(n,C) : η μέγιστη αξία η οποία μπορεί να χωρέσει στο σακί C όταν επιλέγουμε ανάμεσα από όλα τα αντικείμενα V(k,A) = 0 αν k = 0 ή A <= 0 για κάθε k Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

28 Διατύπωση Προβλήματος
V(k,A) = max{V(k-1,A), V(k-1,A-sk)+vk}: λύνοντας το πρόβλημα για το επόμενο αντικείμενο k, υπάρχουν δύο επιλογές: Μπορούμε να το συμπεριλάβουμε ή όχι: Αν όχι, τότε μπορούμε να πετύχουμε καλύτερη αξία αν επιλέξουμε ανάμεσα από τα προηγούμενα k-1 αντικείμενα Αν ναι, τότε η αξία του vk προστίθεται στη συνολική αξία αλλά η χωρητικότητα του σακιού μειώνεται κατά το μέγεθός του sk Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

29 Εξαντλητική Αναζήτηση
Αν υπολογίσουμε το V(n,c) με αναδρομική αντικατάσταση η πολυπλοκότητα είναι Ω(2n) Υπολογίζονται δύο τιμές για το V(n-1,A) Τέσσερις τιμές του V(n-2,A) κ.ο.κ Ο αριθμός μερικών λύσεων ισούται με τον αριθμό των κόμβων σε ένα πλήρες δυαδικό δέντρο βάθους n που είναι Ω(2n) Ο αριθμός των αξιών που πρέπει να υπολογιστούν διπλασιάζεται σε κάθε βήμα Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

30 Δυναμικός Προγραμματισμός
Πολλές από αυτές τις τιμές είναι πιθανό να είναι ίδιες ειδικά όταν το C είναι μικρό συγκρινόμενο με το 2n Ο Δυναμικός Προγραμματισμός υπολογίζει και αποθηκεύει αυτές τις τιμές σε ένα πίνακα n+1 σειρών και C στηλών Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

31 Αλγόριθμοι και Πολυπλοκότητα
Δυναμικός Προγραμματισμός (ΔΠ) : υπολόγισε και αποθήκευσε V(0,A), V(1,Α), … V(k,A), … V(n,C) όπου 0 <= k <= n και 0 <= A <= C χρησιμοποιώντας V(k,A) = max{V(k-1,A), V(k-1,A-sk)+vk}: C V(0,0) V(1,0) V(1,A) n +1 V(n,C): λύση Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

32 Αλγόριθμοι και Πολυπλοκότητα
Κάθε λύση V(k,A) χρειάζεται σταθερό χρόνο να υπολογιστεί Πρέπει να γεμίσει όλος ο πίνακας Ο συνολικός χρόνος για να γεμίσει ο πίνακας είναι ανάλογος του μεγέθους του, άρα η πολυπλοκότητα του αλγορίθμου είναι O(nC) Γρηγορότερο από την εξαντλητική αναζήτηση αν C << 2n Όμως ποια αντικείμενα περιλαμβάνονται στο σακί; Χρήση δεύτερου πίνακα Xi(k,A) Xi(k,A) = 1 αν το αντικείμενο i περιλαμβάνεται, 0 αν όχι Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

33 Αλγόριθμοι και Πολυπλοκότητα
Συντομότερο μονοπάτι Βρες τη συντομότερη διαδρομή από ένα δοσμένο κόμβο προς οποιονδήποτε άλλον κόμβο στο γράφο G Ο ίδιος αλγόριθμος ακόμα και αν ζητείται η συντομότερη διαδρομή προς ένα μόνο τελικό κόμβο Ορολογία: G = (V,E) : γράφος εισόδου C[i,j] : απόσταση μεταξύ των κόμβων i, j V : κόμβος εκκίνησης S : σύνολο κόμβων για τους οποίους το συντομότερο μονοπάτι από το v έχει υπολογιστεί D(W) : μήκος του συντομότερου μονοπατιού από το v εώς το w περνώντας από κόμβους στο S Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

34 Αλγόριθμοι και Πολυπλοκότητα
1 2 3 5 4 100 10 60 50 30 κόμβος εκκίνησης: v = 1 20 βήμα S W D(2) D(3) D(4) D(5) 1 {1} - 10 oo 30 100 2 {1,2} 60 3 {1,2,4} 4 50 90 {1,2,4,3} 5 {1,2,4,3,5} Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

35 Αλγόριθμος του Dijkstra
function Dijkstra(G: graph, int v) { S = {1}; for i = 2 to n: D[i] = C[i,j]; while (S != V) { επέλεξε w από V-S: D[w] = minimum S = S + {w}; για κάθε v σε V–S: D[v] = min{D[v], D[w]+[w,v]}*; } * Αν D[w]+C[w,v] < D[v] τότε P[v] = w: κράτησε το μονοπάτι στο πίνακα P Πολυπλοκότητα: O(n2) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

36 Δυναμικός Προγραμματισμός στο TSP (1/3)
Ο βέλτιστος αλγόριθμος είναι Ω((n-1)!) Αν τα ίδια μερικά μονοπάτια χρησιμοποιούνται πολλές φορές τότε ο δυναμικός προγραμματισμός μπορεί να είναι γρηγορότερος! Ορολογία: Αριθμούμε τις πόλεις ως 1,2,…n, 1 είναι η πόλη εκκίνησης και τερματισμού d(i,j) : η απόσταση από τον κόμβο i μέχρι τον j D(b,S) : μήκος της συντομότερης διαδρομής που ξεκινάει από το b, περνά από όλες τις πόλεις του συνόλου S σε κάποια σειρά και τερματίζει στον κόμβο 1 Το S είναι υπό-σύνολο του {1,2,…n} – {1,b} Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

37 Δυναμικός Προγραμματισμός στο TSP (2/3)
Το TSP πρέπει να υπολογίζει την τιμή D(1,{2,…n}) και τη σειρά των κόμβων Ο δυναμικός προγραμματισμός υπολογίζει και αποθηκεύει τις τιμές D(b,S) για όλα τα b Το TSP πρέπει να υπολογίσει όλα τα D(b,S) ξεκινώντας από άδειο S και προχωρώντας έως S={2,3,….n} Υποθέτουμε ότι ξεκινά από b=1 D(b,φ) = d(b,1) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

38 Δυναμικός Προγραμματισμός στο TSP (3/3)
Για κάθε ένα n από τα πιθανά b υπάρχουν το πολύ 2n-1 μονοπάτια Υπάρχουν n τιμές του b στο S Υπάρχουν n2n-1 τιμές του D(b,S) Για κάθε D(b,S) επιλέγει ένα α που δίνει ελάχιστο τιμή Η πολυπλοκότητα είναι O(n22n-1) : εκθετική αλλά, καλύτερη από την εξαντλητική αναζήτηση! D(a, S-{a}) δεν ξανά-υπολογίζονται (είναι αποθηκευμένα) Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

39 Αλγόριθμοι και Πολυπλοκότητα
Διακλάδωση με Όρια Ερευνά όλες τις λύσεις χρησιμοποιόντας περιορισμούς (όρια) Κάτω Όριο: ελάχιστη δυνατή τιμή της λύσης Πάνω Όριο: μέγιστη δυνατή τιμή της λύσης Το πρόβλημα χωρίζεται σε υποπροβλήματα Κάθε υποπρόβλημα επεκτείνεται προς τη λύση του συνολικού προβλήματος αρκεί η λύση που προκύπτει σε κάθε βήμα να μην ξεπερνά τα όρια δηλ. πρέπει να είναι μεγαλύτερη από το κάτω όριο και μικρότερη από το πάνω όριο Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

40 Αλγόριθμοι και Πολυπλοκότητα
Πάνω-Κάτω Όρια Τα πάνω όριο μπορούν να είναι αρχικά άπειρο Παίρνει το κόστος μίας λύσης μόλις βρεθεί μια Ένας λαίμαργος αλγόριθμός μπορεί να δώσει το αρχικό πάνω όριο (π.χ., στο TSP κ.λ.π) Αναθεωρείται κάθε φορά που βρίσκονται λύσεις με μικρότερο κόστος Το κάτω όριο δεν είναι πάντα εύκολο να υπολογιστεί Εξαρτάται από το πρόβλημα Υπάρχει ένα σχετικό θεώρημα για το TSP Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

41 Αλγόριθμοι και Πολυπλοκότητα
s c f a d e g h k t b 1 2 4 3 9 5 7 πάνω όριο με αυξανόμενο: length(saefkt)=8 1 s s b c a e d 2 3 4 7 3 4 5 s b c a e d f 2 3 4 7 9 s b c a e d f 2 3 4 7 9 2 s a b c 2 3 4 9 Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα

42 Αλγόριθμοι και Πολυπλοκότητα
Βασικός αλγόριθμος S = { 1,2,…n } /* αρχικό πρόβλημα */ U = oo /* πάνω όριο */ while S != empty { K = k  S, S = S – {k}; C = { c1,c2,…cm } /* παιδιά του k */ Υπολογίζει τις Μερικές Λύσεις Zc1,Zc2,…Zcm for i = 1 to m { if Zci >= U kill C else if ( ci = solution ) { U = Zci best solution = i } else S = S + { ci } } Ε. Πετράκης Αλγόριθμοι και Πολυπλοκότητα


Κατέβασμα ppt "Αλγόριθμοι και Πολυπλοκότητα"

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


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