Κεφάλαιο 4 Άπληστοι Αλγόριθµοι (Greedy Algorithms) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1
4.1 Χρονοπρογραµµατισµός Διαστηµάτων
Χρονοπρογραµµατισµός Διαστηµάτων Το πρόβληµα. Η εργασία j ξεκινά τη χρονική στιγµή s j και τερµατίζει τη στιγµή f j. Δύο εργασίες είναι συµβατές εάν δεν υπάρχει επικάλυψη µεταξύ τους. Σκοπός: εύρεση µέγιστου υποσυνόλου από εργασίες που είναι συµβατές µεταξύ τους. a b c d e f g 0 1 2 3 4 5 6 7 8 9 10 11 h Χρόνος 3
Χρονοπρογραµµατισµός Διαστηµάτων: Άπληστοι Αλγόριθµοι Ένα περίγραµµα για άπληστες λύσεις. Εξετάζουµε τις εργασίες µε κάποια συγκεκριµένη διάταξη. Κάθε εργασία επιλέγεται αρκεί να είναι συµβατή µε τις εργασίες που έχουν ήδη επιλεγεί. Εξετάζουµε τέσσερις διαφορετικές λύσεις: 1. [Αύξοντα χρόνο εκκίνησης] Εξετάζουµε τις εργασίες σε αύξουσα σειρά του χρόνου εκκίνησης s j κάθε εργασίας j. 2. [Αύξοντα χρόνο τερµατισµού] Εξετάζουµε τις εργασίες σε αύξουσα σειρά του χρόνου τερµατισµού f j κάθε εργασίας j. 3. [Συντοµότερου διαστήµατος] Εξετάζουµε τις εργασίες µε αύξουσα σειρά διάρκειας f j - s j κάθε εργασίας j. 4. [Μικρότερου αριθµού συγκρούσεων] Για κάθε εργασία j, µετράµε το πλήθος c j των εργασιών µε τις οποίες έχει επικάλυψη. Εξετάζουµε τις εργασίες σε αύξουσα σειρά του πλήθους συγκρούσεων c j κάθε εργασίας j. 4
Χρονοπρογραµµατισµός Διαστηµάτων: Άπληστοι Αλγόριθµοι Ένα περίγραµµα για άπληστες λύσεις. Εξετάζουµε τις εργασίες µε κάποια συγκεκριµένη διάταξη. Κάθε εργασία επιλέγεται αρκεί να είναι συµβατή µε τις εργασίες που έχουν ήδη επιλεγεί. αντιπαράδειγµα για το 1) αύξων χρόνος εκκίνησης αντιπαράδειγµα για το 3) συντοµότερο διάστηµα αντιπαράδειγµα για το 4) µικρότερος αριθµός συγκρούσεων 5
Χρονοπρογραµµατισµός Διαστηµάτων: Άπληστοι Αλγόριθµοι Άπληστος αλγόριθµος. Από τα τέσσερα κριτήρια για άπληστη επιλογή σειράς επιλέγουµε το 2. Στον άπληστο αλγόριθµο που προκύπτει εξετάζουµε τις εργασίες µε αύξουσα σειρά χρόνου τερµατισµού. Κάθε εργασία επιλέγεται αρκεί να είναι συµβατή µε τις εργασίες που έχουν ήδη επιλεγεί. Ταξινόµησε τις εργασίες σε φθίνουσα σειρά χρόνου τερµατισµού, έτσι ώστε f 1 f 2... f n. εργασίες που έχουν ήδη επιλεγεί A φ for j = 1 to n { if (εργασία j συµβατή µε το σύνολο εργασίων A) A A {j} } return A Υλοποίηση. O(n log n). Καταγραφή της εργασίας j* που προστέθηκε τελευταία στο A. Η εργασία j είναι συµβατή µε το A εάν s j f j*. 6
Χρονοπρογραµµατισµός Διαστηµάτων: Ανάλυση Θεώρηµα. Ο άπληστος αλγόριθµος δίνει τη βέλτιστη λύση. Απόδειξη. (µε απαγωγή σε άτοπο) Ας υποθέσουµε ότι ο άπληστος αλγόριθµος δεν είναι βέλτιστος και ας δούµε τι θα προκύψει. Έστω i 1, i 2,... i k το σύνολο των εργασιών που επιλέγει ο άπληστος αλγόριθµος. Έστω j 1, j 2,... j m το σύνολο των εργασιών σε µια βέλτιστη λύση όπου i 1 = j 1, i 2 = j 2,..., i r = j r για τη µέγιστη δυνατή τιµή του r. η εργασία i r+1 fτερµατίζει πριν από την j r+1 Άπληστη: i 1 i 1 i r i r+1 Βέλτιστη: j 1 j 2 j r j r+1... γιατί να µην αντικαταστήσουµε την εργασία j r+1 µε την i r+1 ; 7
Χρονοπρογραµµατισµός Διαστηµάτων: Ανάλυση Θεώρηµα. Ο άπληστος αλγόριθµος δίνει τη βέλτιστη λύση. Απόδειξη. (µε απαγωγή σε άτοπο) Ας υποθέσουµε ότι ο άπληστος αλγόριθµος δεν είναι βέλτιστος και ας δούµε τι θα προκύψει. Έστω i 1, i 2,... i k το σύνολο των εργασιών που επιλέγει ο άπληστος αλγόριθµος. Έστω j 1, j 2,... j m το σύνολο των εργασιών σε µια βέλτιστη λύση όπου i 1 = j 1, i 2 = j 2,..., i r = j r για τη µέγιστη δυνατή τιµή του r. η εργασία i r+1 fτερµατίζει πριν από την j r+1 Άπληστη: i 1 i 1 i r i r+1 Βέλτιστη: j 1 j 2 j r i r+1... η λύση παραµένει εφικτή και βέλτιστη, όµως παραβιάζει την απαίτηση να είναι το r µέγιστο. 8
Επιπλέον Διαφάνειες
Coin Changing Greed is good. Greed is right. Greed works. Greed clarifies, cuts through, and captures the essence of the evolutionary spirit. - Gordon Gecko (Michael Douglas)
Κέρµατα Στόχος. Με βάση δεδοµένες χρηµατικές αξίες: 1, 2, 5, 10, 20, 50 λεπτών του Ευρώ και 1 και 2 Ευρώ να αναπτυχθεί µέθοδος ώστε να δίνονται ρέστα σε πελάτη µε το µικρότερο αριθµό κερµάτων Παράδειγµα: 2.89. Αλγόριθµος του ταµία (Cashier's algorithm). Σε κάθε βήµα, επιλέγουµε το κέρµα µε τη µεγαλύτερη αξία χωρίς να υπερβαίνουµε το ζητούµενο ποσό. 11
Ρέστα σε κέρµατα (Coin-Changing): Άπληστος Αλγόριθµος Αλγόριθµος του ταµία. Σε κάθε βήµα, επιλέγουµε το κέρµα µε τη µεγαλύτερη αξία χωρίς να υπερβαίνουµε το ζητούµενο ποσό. Ταξινοµούµε τις αξίες σε αύξουσα σειρά: c 1 < c 2 < < c n. σύνολο κερµάτων που έχουν επιλεγεί S φ while (x 0) { έστω k ο µέγιστος ακέραιος τέτοιος ώστε c k x if (k = 0) return «δεν βρέθηκε λύση" x x - c k S S {k} } return S Q. Είναι η λύση που δίνει ο αλγόριθµος βέλτιστη; Παίζουν ρόλο οι αξίες των κερµάτων που διαθέτουµε; 12
Παράδειγµα Χρονοπρογραµµατισµού Διαστηµάτων 13
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος 0 1 2 3 4 5 6 7 8 9 10 11 14
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος 0 1 2 3 4 5 6 7 8 9 10 11 15
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος C 0 1 2 3 4 5 6 7 8 9 10 11 16
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος A 0 1 2 3 4 5 6 7 8 9 10 11 17
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος E 0 1 2 3 4 5 6 7 8 9 10 11 18
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος D E 0 1 2 3 4 5 6 7 8 9 10 11 19
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος E F 0 1 2 3 4 5 6 7 8 9 10 11 20
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος E G 0 1 2 3 4 5 6 7 8 9 10 11 21
Χρονοπρογραµµατισµός Διαστηµάτων C A E D F 0 1 2 3 4 5 6 7 8 9 10 11 G H Χρόνος E H 0 1 2 3 4 5 6 7 8 9 10 11 22
πηγές/αναφορές Κεφάλαιο 4, Σχεδίαση Αλγορίθµων, J. Kleinberg and E. Tardos, Ελληνική έκδοση από τις Εκδ. Κλειδάριθµος Κεφάλαια 16, Εισαγωγή στους αλγόριθµους, T. Cormen, C. Leiserson, R. Rivest and C. Stein, Ελληνική έκδοση από τις Πανεπιστηµιακές Εκδ. Κρήτης 23