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

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

Άπληστοι Αλγόριθμοι. Ο Γιωρίκας, ο Κωστίκας και ο Πανίκας Σελ. 220 Kleinberg-Tardos 2.

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


Παρουσίαση με θέμα: "Άπληστοι Αλγόριθμοι. Ο Γιωρίκας, ο Κωστίκας και ο Πανίκας Σελ. 220 Kleinberg-Tardos 2."— Μεταγράφημα παρουσίασης:

1 Άπληστοι Αλγόριθμοι

2 Ο Γιωρίκας, ο Κωστίκας και ο Πανίκας Σελ. 220 Kleinberg-Tardos 2

3 Άπληστοι αλγόριθμοι Προβλήματα βελτιστοποίησης λύνονται με μια σειρά επιλογών που είναι: εφικτές τοπικά βέλτιστες αμετάκλητες ΔΕΝ λύνονται όλα τα προβλήματα βελτιστοποίησης με αυτόν τον τρόπο (τα ρέστα μου...) 3

4 Εφαρμογή της άπληστης στρατηγικής Βέλτιστες λύσεις: – Υπολογισμός για ρέστα – Απλά προβλήματα δρομολόγησης – Ελάχιστα ζευγνύοντα δένδρα (MST) – Ελάχιστα μονοπάτια (one-to-all) –... – Κώδικες Huffman Προσεγγίσεις: – Πρόβλημα περιοδεύοντας πωλητή (TSP) – Πρόβλημα σάκου – Άλλα προβλήματα συνδυαστικής βελτιστοποίησης 4

5 Άντε Πάλι – Δίνοντας Ρέστα Στόχος: Δοθέντων κερμάτων: 1, 2, 5, 10, 20, 50, βρείτε μία μέθοδο για να δώσετε ένα ποσό με το μικρότερο πλήθος κερμάτων. π.χ.: 0.34 λεπτά Αλγόριθμος: Σε κάθε επανάληψη, προσθέστε ένα κέρμα μέγιστης αξίας χωρίς να ξεπεράσουμε το ποσό. π.χ: 1.88 5

6 Δίνοντας Ρέστα: Άπληστος Αλγόριθμος Σε κάθε επανάληψη προσθέτουμε ένα κέρμα μέγιστης αξίας ώστε να μην ξεπερνάμε το ποσό που απομένει. Είναι ο αλγόριθμος βέλτιστος; Ταξινόμησε κέρματα σε σχέση με την τιμή τους 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 6

7 Δίνοντας Ρέστα: Ανάλυση Θεώρημα: Ο άπληστος είναι βέλτιστος για κέρματα: 1, 2, 5, 10, 20, 50 Απόδειξη. (με επαγωγή στο ποσό στόχο x) – Έστω βέλτιστος τρόπος για c k  x < c k+1 : ο άπληστος απαιτεί το κέρμα k. – Ισχυριζόμαστε ότι κάθε βέλτιστη λύση θα πρέπει να πάρει το κέρμα k. Αν όχι, θέλει πολλά κέρματα τύπου c 1, …, c k-1 που προστίθενται σε x Ο επόμενος πίνακας δείχνει ότι δεν υπάρχει βέλτιστη λύση για αυτό – Το πρόβλημα ανάγεται στην λύση για x - c k λεπτά, που από επαγωγή λύνεται βέλτιστα από τον αλγόριθμο. 1 ckck 5 10 20 Λ  1 Οι βέλτιστες λύσεις πρέπει να ικανοποιούν Π  1 ΔΕ  1 2 ΔΙ  2 Ε  2Ε  2 k 1 3 4 5 2 - Μέγιστη τιμή κερμάτων 1, 2, …, k-1 σε κάθε OPT 2+2 = 4 5 + 4 = 9 1 10 + 9 = 19 50κανένα όριο640 + 9 = 49 7

8 Δίνοντας Ρέστα: Αντιπαράδειγμα Ο άπληστος αλγόριθμος είναι μη-βέλτιστος για τις εξής τιμές γραμματοσήμων: 1, 10, 21, 34, 70, 100, 350, 1225, 1500. Αντιπαράδειγμα: 140 λεπτά – Άπληστος: 100, 34, 1, 1, 1, 1, 1, 1. – Βέλτιστο: 70, 70. 8

9 ΕΝΑ ΠΙΟ ΑΠΛΟ ΠΡΟΒΛΗΜΑ ΔΡΟΜΟΛΟΓΗΣΗΣ 9

10 Ένα Απλό Πρόβλημα Χρονοπρογραμματισμός Διαστημάτων o Η εργασία j ξεκινά στο s j και τελειώνει τη χρονική στιγμή f j. o Δύο εργασίες είναι συμβατές αν δεν επικαλύπτονται χρονικά. o Στόχος: εύρεση μέγιστου υποσυνόλου συμβατών εργασιών. Time 0 A C F B D G E 12345678910101 H 10

11 Λύσεις… Απληστία: Επεξεργαζόμαστε τις εργασίες με κάποια σειρά. Προσθέτουμε μία εργασία αν είναι συμβατή με αυτές που έχουμε ήδη χρησιμοποιήσει. [Μικρότερος Χρόνος Έναρξης] Επεξεργαζόμαστε εργασίες σε αύξουσα σειρά με βάση το s j. [Μικρότερος Χρόνος Λήξης] Επεξεργαζόμαστε εργασίες σε αύξουσα σειρά με βάση το f j. [Μικρότερη Διάρκεια] Επεξεργαζόμαστε εργασίες σε αύξουσα σειρά με βάση το f j – s j. [Μικρότερο Πλήθος Συγκρούσεων] Για κάθε εργασία j, μέτρα το πλήθος των ασύμβατων με αυτή εργασιών, έστω c j. Δρομολόγησε σε αύξουσα σειρά του c j. 11

12 Αντιπαραδείγματα [Μικρότερος Χρόνος Έναρξης] [Μικρότερη Διάρκεια] [Μικρότερο Πλήθος Συγκρούσεων] 12

13 Άπληστη Λύση Ταξινόμηση εργασιών με βάση χρόνο λήξης: f 1 ≤ f 2 … ≤ f n Α ←  for j ← 1 to n if (εργασία j είναι συμβατή με A) A ← A ∪ { j } return A Πολυπλοκότητα και βασική ιδέα: O(n log n) o Έστω j΄ η εργασία που προστέθηκε τελευταία στο A. o Η εργασία j είναι συμβατή με το A αν s j ≥ f j΄. 13

14 Χρονοπρογραμματισμός Διαστημάτων Χρόνος 0 A C F B D G E 1234567891011 H 01234567891011 14

15 01234567891011 B Χρόνος 0 A C F B D G E 1234567891011 H 15 Χρονοπρογραμματισμός Διαστημάτων

16 01234567891011 BC Χρόνος 0 A C F B D G E 1234567891011 H 16 Χρονοπρογραμματισμός Διαστημάτων

17 01234567891011 BA Χρόνος 0 A C F B D G E 1234567891011 H 17 Χρονοπρογραμματισμός Διαστημάτων

18 01234567891011 BE Χρόνος 0 A C F B D G E 1234567891011 H 18 Χρονοπρογραμματισμός Διαστημάτων

19 01234567891011 BED Χρόνος 0 A C F B D G E 1234567891011 H 19 Χρονοπρογραμματισμός Διαστημάτων

20 01234567891011 BEF Χρόνος 0 A C F B D G E 1234567891011 H 20 Χρονοπρογραμματισμός Διαστημάτων

21 01234567891011 BEG Χρόνος 0 A C F B D G E 1234567891011 H 21 Χρονοπρογραμματισμός Διαστημάτων

22 01234567891011 BEH Χρόνος 0 A C F B D G E 1234567891011 H 22 Χρονοπρογραμματισμός Διαστημάτων

23 Απόδειξη Βελτιστότητας (Με αντίφαση – επιχείρημα ανταλλαγής) Θα υποθέσουμε ότι ο αλγόριθμος δεν είναι βέλτιστος. Έστω 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 λήγει πριν την j r+1 Γιατί να μην αντικαταστήσουμε την j r+1 με την i r+1 ; 23

24 Απόδειξη Βελτιστότητας (2) (Με αντίφαση – επιχείρημα ανταλλαγής) Θα υποθέσουμε ότι ο αλγόριθμος δεν είναι βέλτιστος. Έστω 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 λήγει πριν την j r+1 Η λύση είναι ακόμα βέλτιστη αλλά έρχεται σε αντίφαση με το μέγιστο r. 24

25 Άπληστοι Αλγόριθμοι Απαραίτητα Χαρακτηριστικά: – Ιδιότητα Άπληστης Επιλογής: μία καθολική βέλτιστη λύση μπορεί να επιτευχθεί κάνοντας τοπικά βέλτιστες επιλογές – Ιδιότητα Βέλτιστων Επιμέρους Δομών: Μία βέλτιστη λύση σε ένα πρόβλημα περιέχει βέλτιστες λύσεις για τα υποπροβλήματα αυτού του προβλήματος 25

26 ΤΟ ΠΡΟΒΛΗΜΑ ΤΟΥ ΣΑKΙΔΙΟΥ 26

27 Το Πρόβλημα Σακιδίου n αντικείμενα, το καθένα με βάρος w i > 0, μία αξία p i > 0, χωρητικότητα σακιδίου: M Μεγιστοποίηση Αν ισχύει x i  {0,1}, 1  i  n 27

28 Κάποιες Εκδοχές του Προβλήματος 0/1 πρόβλημα σακιδίου: κάθε αντικείμενο μπορεί να συμμετάσχει ολόκληρο μόνο. Κλασματικό πρόβλημα σακιδίου: Μπορούμε να επιλέξουμε ένα κλάσμα του αντικειμένου. Κατά τα άλλα είναι ίδιο με το 0/1 πρόβλημα σακιδίου. 28

29 Κλασματικό Πρόβλημα Σακιδίου Ο άπληστος αλγόριθμος: Βήμα 1: Ταξινόμηση r i =p i /w i σε αύξουσα σειρά. Βήμα 2: Τοποθέτηση των αντικειμένων στο σακίδιο με τη σειρά τοποθετώντας όσα περισσότερα γίνεται. π.χ. n = 3, M = 20, (p 1, p 2, p 3 ) = (25, 24, 15) (w 1, w 2, w 3 ) = (18, 15, 10) Λύση: p 1 /w 1 = 25/18 = 1.32 p 2 /w 2 = 24/15 = 1.6 p 3 /w 3 = 15/10 = 1.5 Βέλτιστη Λύση: x 1 = 0, x 2 = 1, x 3 = ½ Συνολική αξία = 24 + 7.5 = 31.5 1.Ιδιότητα επιμέρους βέλτιστων δομών 2.Ιδιότητα άπληστης επιλογής 29

30 0/1 Πρόβλημα Σακιδίου Έχει την ιδιότητα των βέλτιστων επιμέρους δομών Δεν έχει την ιδιότητα άπληστης επιλογής. π.χ. Μ=50, (p 1, p 2, p 3 ) = (60, 100, 120), (w 1, w 2, w 3 ) = (10, 20, 30), (r 1, r 2, r 3 ) = (6, 5, 4) – Άπληστη επιλογή??? – Βέλτιστη επιλογή??? 30

31 ΕΛΑΧΙΣΤΑ ΕΠΙΚΑΛΥΠΤΟΝΤΑ ΔΕΝΔΡΑ 31

32 Ελάχιστα Επικαλυπτόμενα Δένδρα o Είσοδος: Συνεκτικό, μη Κατευθυνόμενο με Βάρη Γράφημα G o Εύρεση: Ελαχίστου Βάρους Επικαλυπτόμενο δένδρο, T o Παράδειγμα: bc a def 5 11 0 3 1 7 -3 2 a bc fed 5 3 1 0 Άκυκλο υποσύνολο ακμών(E) που συνδέει όλες τις κορυφές του G. 32

33 Γενικός Αλγόριθμος “Αυξάνει” ένα σύνολο A. A είναι υποσύνολο ενός Ελαχίστου Επικαλυπτόμενου Δένδρου. Μία ακμή είναι “ασφαλής” αν μπορεί να προστεθεί στο A χωρίς να καταστρέφει την προηγούμενη ιδιότητα. A :=  ; Όσο A δεν είναι δένδρο { εύρεση ασφαλούς ακμής (u, v); A := A  {(u, v)} } A :=  ; Όσο A δεν είναι δένδρο { εύρεση ασφαλούς ακμής (u, v); A := A  {(u, v)} } Από το σύνολο των ασφαλών ακμών επιλέγουμε αυτή με το μικρότερο κόστος 33

34 Άπληστοι Αλγόριθμοι Αλγόριθμος Prim: Ξεκινάμε με μία ρίζα s και άπληστα αυξάνουμε το δένδρο T από την s. Σε κάθε βήμα προσθέτουμε τη μικρότερου βάρους ακμή e στο T με ένα ακριβώς άκρο στο T. Αλγόριθμος Kruskal: Ξεκινάμε με T=Ø. Ελέγχουμε τις ακμές σε αύξουσα σειρά βάρους. Προσθέτουμε την ακμή e στο T εκτός και αν δημιουργείται κύκλος. 34

35 Αλγόριθμος του Prim Αρχικά το δένδρο αποτελείται από ένα κόμβο Το δένδρο μεγαλώνει κατά μια κορυφή/ακμή κάθε φορά για να προκύψει το MST – Δημιουργείται μια σειρά μεγαλύτερων δένδρων T 1, T 2, … Σε κάθε στάδιο το δένδρο T i+1 κατασκευάζεται από το T i : προστίθεται η ακμή με το ελάχιστο βάρος, η οποία συνδέει μια κορυφή του δένδρου T i με κάποια που δεν ανήκει στο T i – Επιλέγουμε από τις ακμές του κρασπέδου (fringe) – αυτό είναι το άπληστο βήμα Ο αλγόριθμος σταματά όταν έχουν επιλεγεί όλες οι κορυφές 35

36 Παραδείγματα: 3 4 2 1 4 2 6 1 3 a edc b 1 5 2 4 6 3 7 36

37 Κώδικας Aλγορίθμου Prim Algorithm Prim(G) V T  {v 0 } E T  {} for i  1 to |V|-1 do find a minimum weight edge e*=(v*,u*) among the edges (v,u) such that vЄV T and uЄ(V-V T ) V T  V T ∪ {u*} E T  E T ∪ {e*} return E T 37

38 Σχετικά με τον Aλγόριθμο του Prim Απόδειξη ορθότητας: ο αλγόριθμος δίνει το MST Χρειάζεται μια ουρά προτεραιότητας για να βρούμε την ακμή με το ελάχιστο βάρος: χρησιμοποιούμε ένα min-heap Αποτελεσματικότητα: για γράφο με n κορυφές και m ακμές: (n–1+m) log n Συνεπώς: Θ(m log n) – Υποθέτουμε αναπαράσταση με λίστες γειτνίασης και χρήση σωρού. Aν δεν χρησιμοποιηθεί λίστα γειτνίασης και σωρός, αλλά απλός αδόμητος πίνακας: Θ(n 2 ) πλήθος σταδίων (min-heap διαγραφές) πλήθος ακμών (min-heap ενθέσεις) ένθεση/διαγραφή από min-heap 38

39 Αλγόριθμος του Kruskal Αρχίζουμε με ένα κενό δάσος από δένδρα Μεγαλώνουμε το MST με μια ακμή κάθε φορά – στα ενδιάμεσα στάδια συνήθως έχουμε ένα δάσος από δένδρα (μη συνδεδεμένα) Σε κάθε στάδιο προσθέτουμε μια ακμή με ελάχιστο βάρος από αυτές που δεν έχουν χρησιμοποιηθεί και δεν δημιουργούν κύκλο – Αρχικά οι κορυφές ταξινομούνται κατά αύξον βάρος – Σε κάθε στάδιο η ακμή μπορεί να: Να επεκτείνει ένα υπάρχον δένδρο Να συνδυάσει δυο δένδρα σε ένα Να δημιουργήσει ένα νέο δένδρο – Χρειάζεται ένας αποτελεσματικός τρόπος διαπίστωσης κύκλων Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές 39

40 Παραδείγματα: 3 4 2 1 4 2 6 1 3 a edc b 1 5 2 4 6 3 7 40

41 Κώδικας Aλγορίθμου του Kruskal Algorithm Kruskal(G) Sort E in nondecreasing order of the weights E T  { }; k  0; ecounter  0 while ecounter < |V|-1 k  k+1 if E T ∪ {e ik } is acyclic E T  E T ∪ {e ik } ecounter  ecounter+1 return E T 41

42 Ο αλγόριθμος φαίνεται ευκολότερος από του Prim αλλά είναι: – Δυσκολότερος στην υλοποίηση (έλεγχος κύκλων) – Λιγότερο αποτελεσματικός Θ(m log m) Έλεγχος κύκλων: ένας κύκλος υφίσταται αν και μόνο αν μια ακμή συνδέει κορυφές της ίδιας συνιστώσας Αλγόριθμοι ένωσης-εύρεσης (union-find) Σχετικά με τον Aλγόριθμο του Kruskal 42

43 Ευσταθές Ταίριασμα Οι διαφάνειες βασίζονται στις διαφάνειες του Kevin Wayne. Copyright © 2005 Pearson-Addison Wesley. All rights reserved. 43

44 Ταίριασμα Εργαζομένων σε Επιχειρήσεις Στόχος: Δοθέντων προτιμήσεων εργαζομένων και επιχειρήσεων, πρέπει να σχεδιάσετε μία αυτοεπιβαλλόμενη διαδικασία πρόσληψης. Ασταθές ζευγάρι: ο αιτών x και η επιχείρηση y είναι ασταθές ζευγάρι αν: – Ο x προτιμά την y από την επιχείρηση που βρίσκεται. – Η y προτιμά τον x από κάποιον από τους εργαζόμενούς της. Ευσταθές ταίριασμα: Ταίριασμα χωρίς ασταθή ζευγάρια. – Το ατομικό συμφέρον αποτρέπει εργαζομένους και επιχειρήσεις από το να κάνουν αλλαγές. 44

45 Το Πρόβλημα Ευσταθούς Ταιριάσματος Στόχος: Δοθέντων n ανδρών και n γυναικών, βρείτε ένα “καλό” ταίριασμα. – Κάθε άνδρας έχει μία λίστα προτίμησης γυναικών. – Κάθε γυναίκα έχει μία λίστα προτίμησης ανδρών. ΜήτσοςΆνναΚούλαΡία ΑνδρέαςΡίαΚούλαΆννα ΓιώργοςΆνναΚούλαΡία 1η1η 2η2η 3η3η Λίστα Προτίμησης Ανδρών ΚούλαΓιώργοςΜήτσοςΑνδρέας ΡίαΓιώργοςΜήτσοςΑνδρέας ΆνναΑνδρέαςΜήτσοςΓιώργος 1 ος 2 ος 3 ος Λίστα Προτίμησης Γυναικών 45

46 Τέλειο Ταίριασμα: κανείς δεν μένει μόνος του – Κάθε άνδρας έχει ακριβώς μία γυναίκα. – Κάθε γυναίκα έχει ακριβώς έναν άνδρα. Ευστάθεια: δεν υπάρχει λόγος να αλλάξουν τα ζευγάρια λόγω κοινής δράσης. – Στο ταίριασμα M, ένα μη υπαρκτό ζευγάρι m-w είναι ασταθές αν ο άνδρας m και η γυναίκα w προτιμούν ο ένας τον άλλον παρά αυτούς με τους οποίους έχουν ταιριάξει. Ευσταθές ταίριασμα: τέλειο ταίριασμα χωρίς ασταθή ζευγάρια. Το πρόβλημα του ευσταθούς ταιριάσματος: Δοθέντων των λιστών προτίμησης των ανδρών και των γυναικών βρείτε ένα ευσταθές ταίριασμα αν αυτό υπάρχει. Το Πρόβλημα Ευσταθούς Ταιριάσματος 46

47 Είναι το ταίριασμα Γ-Κ, Α-Ρ, Μ-A ευσταθές; ΜήτσοςΆνναΚούλαΡία ΑνδρέαςΡίαΚούλαΆννα ΓιώργοςΆνναΚούλαΡία 1η1η 2η2η 3η3η Λίστα Προτίμησης Ανδρών ΚούλαΓιώργοςΜήτσοςΑνδρέας ΡίαΓιώργοςΜήτσοςΑνδρέας ΆνναΑνδρέαςΜήτσοςΓιώργος 1 ος 2 ος 3 ος Λίστα Προτίμησης Γυναικών 47 Το Πρόβλημα Ευσταθούς Ταιριάσματος

48 Είναι το ταίριασμα Γ-Κ, Α-Ρ, Μ-A ευσταθές; Όχι. Ο Γιώργος και η Ρία θα βγαίνουν κρυφά!!! ΜήτσοςΆνναΚούλαΡία ΑνδρέαςΡίαΚούλαΆννα ΓιώργοςΆνναΚούλαΡία 1η1η 2η2η 3η3η Λίστα Προτίμησης Ανδρών ΚούλαΓιώργοςΜήτσοςΑνδρέας ΡίαΓιώργοςΜήτσοςΑνδρέας ΆνναΑνδρέαςΜήτσοςΓιώργος 1 ος 2 ος 3 ος Λίστα Προτίμησης Γυναικών 48 Το Πρόβλημα Ευσταθούς Ταιριάσματος

49 Είναι το ταίριασμα Γ-A, Α-Ρ και Μ-Κ ευσταθές; Ναι. ΜήτσοςΆνναΚούλαΡία ΑνδρέαςΡίαΚούλαΆννα ΓιώργοςΆνναΚούλαΡία 1η1η 2η2η 3η3η Λίστα Προτίμησης Ανδρών ΚούλαΓιώργοςΜήτσοςΑνδρέας ΡίαΓιώργοςΜήτσοςΑνδρέας ΆνναΑνδρέαςΜήτσοςΓιώργος 1 ος 2 ος 3 ος Λίστα Προτίμησης Γυναικών 49 Το Πρόβλημα Ευσταθούς Ταιριάσματος

50 Ευσταθές Πρόβλημα Συγκάτοικων Ερώτηση: Υπάρχουν πάντα ευσταθή ταιριάσματα; Απάντηση: Εξαρτάται από το πρόβλημα – δεν είναι προφανές. Ευσταθές Πρόβλημα Συγκάτοικων – 2n άνθρωποι; Κάθε ένας ταξινομεί τους υπόλοιπους από 1 έως 2n-1. – Φτιάξε ζευγάρια έτσι ώστε να μην υπάρχουν αστάθειες. Παρατήρηση. Δεν υπάρχουν πάντα ευσταθή ταιριάσματα για το συγκεκριμένο πρόβλημα. B Bασίλης Χρήστος Aνδρέας Χ A B Ν Ν Ντία ABΧ Ν Χ A 1 st 2 nd 3 rd A-B, Χ-Ν  B-Χ ασταθές A-Χ, B-Ν  A-B ασταθές A-Ν, B-Χ  A-Χ ασταθές 50

51 Αλγόριθμος Πρότασης-Άρνησης Αλγόριθμος Πρότασης-Άρνησης. [Gale-Shapley 1962] Διαισθητική μέθοδος που εγγυάται την εύρεση ενός ευσταθούς ταιριάσμςος. Αρχικά όλοι είναι ελεύθεροι. όσο (κάποιος άνδρας είναι ελεύθερος και δεν έχει κάνει πρόταση σε όλες τις γυναίκες) { Διάλεξε ένα τέτοιο άνδρα m w = 1 η γυναίκα στην λίστα του m από αυτές στις οποίες δεν έχει κάνει πρόταση ακόμα αν (η w είναι ελεύθερη) δημιουργούμε ένα ζευγάρι με τον m και την w αλλιώς αν (η w προτιμά τον m από τον αρραβωνιαστικό της m') δημιουργούμε ένα ζευγάρι με m και w, η w παρατάει τον m ' αλλιώς η w απορρίπτει τον m } 51

52 Απόδειξη Ορθότητας: Τερματισμός Παρατήρηση 1. Οι άνδρες κάνουν πρόταση με φθίνουσα σειρά προτίμησης. Παρατήρηση 2. Όταν μία γυναίκα μπει σε ζευγάρι, ποτέ ξανά δεν θα είναι μόνη, απλά μπορεί να αλλάζει προς το καλύτερο. Ισχυρισμός: Ο αλγόριθμος τερματίζει μετά από το πολύ n 2 επαναλήψεις. Απόδειξη: Κάθε φορά στην επανάληψη ένας άνδρας κάνει πρόταση σε μία άλλη γυναίκα. Υπάρχουν το πολύ n 2 προτάσεις. ▪ n(n-1) + 1 προτάσεις απαιτούνται συνολικά 52

53 Απόδειξη Ορθότητας: Τελειότητα Ισχυρισμός: Όλες οι γυναίκες και οι άνδρες ανήκουν σε ζευγάρι (τέλειο ταίριασμα). Απόδειξη: (με αντίφαση) – Έστω ότι ο Ανδρέας δεν ανήκει σε ζευγάρι μετά τον τερματισμό του αλγόριθμου. – Τότε κάποια γυναίκα, η Άννα, δεν θα είναι και αυτή σε ζευγάρι μετά τον τερματισμό. – Από την Παρατηρήση 2, στην Άννα δεν έγινε πρόταση. – Αλλά ο Ανδρέας κάνει πρόταση σε όλες, αφού καταλήγει να μην είναι σε ζευγάρι. ▪ 53

54 Απόδειξη Ορθότητας: Ευστάθεια Ισχυρισμός: Κανένα ασταθές ζευγάρι. Απόδειξη (με αντίφαση) – Έστω ότι A-Z είναι ένα ασταθές ζευγάρι: ο ένας προτιμά τον άλλο παρά αυτόν που τους έχει δοθεί από το ταίριασμα S* του αλγόριθμου. – Περίπτωση 1: ο Z δεν έκανε ποτέ πρόταση στην A.  ο Z προτιμά αυτήν που έχει από την A.  το A-Z είναι ευσταθές. – Περίπτωση 2: ο Z έκανε πρόταση στην A.  η A αρνήθηκε τον Z (αμέσως ή κάποια στιγμή αργότερα)  η A προτιμά αυτόν που έχει από τον Z.  το A-Z είναι ευσταθές. – Σε κάθε περίπτωση το Α-Z είναι ευσταθές, αντίφαση. ▪ Ρία – Ανδρέας Άννα –Γιώργος S*... 54

55 Περίληψη Πρόβλημα ευσταθούς ταιριάσματος. Δοθέντων n ανδρών και n γυναικών μαζί με τις λίστες προτίμησεις, βρείτε ένα ευσταθές ταίριασμα, αν αυτό υπάρχει. Αλγόριθμος Πρότασης-Άρνησης. Εγγυάται την εύρεση ενός ευσταθούς ταιριάσματος για κάθε στιγμιότυπο του προβλήματος. Ερώτηση: Αποδοτική υλοποίηση; Ερώτηση: Αν υπάρχουν πολλαπλά ευσταθή ταιριάσματα, ποιο ανακαλύπτει ο αλγόριθμος; 55

56 Αποδοτική Υλοποίηση Αποδοτική υλοποίηση. Περιγράφουμε έναν O(n 2 ) χρόνου αλγόριθμο. Αναπαράσταση ανδρών και γυναικών. – Οι άνδρες ονοματίζονται ως 1, …, n. – Οι γυναίκες ονοματίζονται 1', …, n'. Δεσμεύσεις. – Διατήρηση λίστας ελεύθερων ανδρών (ουρά). – Διατήρηση δύο πινάκων wife[m], και husband[w]. θέτουμε 0 αν δεν ανήκει σε ζευγάρι Αν ο m ταιριάζει με την w τότε wife[m]=w και husband[w]=m Οι άνδρες κάνουν πρόταση. – Για κάθε άνδρα, διατήρηση ενός πίνακα γυναικών σε αύξουσα σειρά προτίμησης. – Διατήρηση πίνακα count[m] που μετρά το πλήθος των προτάσεων από τον άνδρα m. 56

57 Αποδοτική Υλοποίηση Οι γυναίκες αποδέχονται/αρνούνται. – Η γυναίκα w προτιμά τον m σε σχέση με τον m' ; – Για κάθε γυναίκα, μία λίστα με την αντίστροφη σειρά προτίμησης των ανδρών. – Ο(1) κόστος για κάθε ερώτηση μετά από O(n) προεπεξεργασία. for i = 1 to n inverse[pref[i]] = i Προτίμηση 1 ος 8 2 ος 7 3 ος 3 4 ος 4 5 ος 1 526 6 ος 7 ος 8 ος Αντίστροφη4 ος 2 ος 8 ος 6 ος 5 ος 7 ος 1 ος 3 ος 12345 678 Άννα Η Άννα προτιμά τον 3 από τον 6 αφού inverse[3] < inverse[6] 57

58 Κατανοώντας τη Λύση Ερώτηση: Για ένα στιγμιότυπο του προβλήματος, μπορεί να υπάρχουν πολλά ευσταθή ταιριάσματα. Όλες οι δυνατές εκτελέσεις του αλγόριθμου επιστρέφουν το ίδιο ταίριασμα; Αν ναι, ποιο; Ένα παράδειγμα με δύο ευσταθή ταιριάσματα. – A-Γ, Ρ-Α, Κ-Μ. – A-Α, Ρ-Γ, Κ-Μ. ΜήτσοςΆνναΚούλαΡία ΑνδρέαςΡίαΚούλαΆννα ΓιώργοςΆνναΚούλαΡία 1η1η 2η2η 3η3η Λίστα Προτίμησης Ανδρών ΚούλαΓιώργοςΜήτσοςΑνδρέας ΡίαΓιώργοςΜήτσοςΑνδρέας ΆνναΑνδρέαςΜήτσοςΓιώργος 1 ος 2 ος 3 ος Λίστα Προτίμησης Γυναικών 58

59 Ερώτηση: Για ένα στιγμιότυπο του προβλήματος, μπορεί να υπάρχουν πολλά ευσταθή ταιριάσματα. Όλες οι δυνατές εκτελέσεις του αλγόριθμου επιστρέφουν το ίδιο ταίριασμα; Αν ναι, ποιο; Ορισμός: Ο m είναι ένας έγκυρος σύντροφος της w αν υπάρχει ένα ευσταθές ταίριασμα που να είναι ζευγάρι. Βέλτιστη αντιστοίχηση ως προς άνδρες. Κάθε άνδρας παίρνει την βέλτιστη έγκυρη σύντροφο. Ισχυρισμός: Όλες οι εκτελέσεις του αλγόριθμου αποδίδουν μία βέλτιστη ως προς άνδρες αντιστοίχηση, που είναι και ευσταθής. – Ταυτόχρονα το καλύτερο για κάθε άνδρα. 59 Κατανοώντας τη Λύση

60 Βελτιστότητα ως προς Άνδρες Απόδειξη: (με αντίφαση) – Έστω κάποιος με σύντροφο κάποια άλλη από την καλύτερη έγκυρη σύντροφο. Οι άνδρες κάνουν πρόταση σε φθίνουσα σειρά προτίμησης.  αυτός απορρίφθηκε από έγκυρη σύντροφο. – Έστω Y ο πρώτος τέτοιος άνδρας και έστω A η πρώτη έγκυρη σύντροφος που τον απορρίπτει. – Έστω S ένα ευσταθές ταίριασμα όπου οι A και Y είναι μαζί. – Όταν ο Y απορρίπτεται, η A θα είναι με τον Z, τον οποίο προτιμά σε σχέση με τον Y. – Έστω B η σύντροφος του Z στο S. – Ο Z δεν έχει απορριφθεί από έγκυρη σύντροφο όταν ο Y απορρίπτεται από την A. Άρα ο Z προτιμά την A από την B. – Αλλά η Α προτιμά τον Z από τον Y. – Άρα το ζευγάρι A-Z είναι ασταθές στο S. ▪ Αφού αυτή είναι η 1 η απόρριψη από έγκυρη σύντροφο 60

61 Οι Γυναίκες την Πληρώνουν!!!!! Κάθε γυναίκα γίνεται ζευγάρι με το χειρότερο έγκυρο σύντροφο. Ισχυρισμός. Ο αλγόριθμος βρίσκει το χειρότερο ευσταθές ταίριασμα S* για τις γυναίκες. Απόδειξη (με αντίφαση). – Έστω το ζευγάρι A-Z στο S*, αλλά ο Z δεν είναι ο χειρότερος έγκυρος σύντροφος για την A. – Υπάρχει ένα ευσταθές ταίριασμα S, στο οποίο η A έχει σύντροφο τον Y, που προτιμά λιγότερο από τον Z. – Έστω ότι η B είναι η σύντροφος του Z στο S. – Ο Z προτιμά την A από την B (από προηγούμενη διαφάνεια). – Άρα, το ζευγάρι A-Z είναι ασταθές στο S. ▪ 61

62 Επεκτάσεις: Ταίριασμα Εργαζομένων σε Επιχειρήσεις Άνδρες  Επιχειρήσεις, Γυναίκες  Εργαζόμενοι. Εκδοχή 1. Κάποιοι εργαζόμενοι δεν θέλουν να δουλέψουν σε κάποιες επιχειρήσεις Εκδοχή 2. Διαφορετικό πλήθος ανδρών-γυναικών. Εκδοχή 3. Περιορισμένη πολυγαμία (μία επιχείρηση θέλει 4 εργαζόμενους). Ορισμός. Το ταίριασμα S είναι ασταθές αν υπάρχει επιχείρηση h και εργαζόμενος r έτσι ώστε: – h και r υπάρχουν στην λίστα προτίμησης του καθενός και – είτε ο r είναι άνεργος, ή ο r προτιμά την h από την επιχείρηση που βρίσκεται και – είτε η h έχει κενές θέσεις, ή η h προτιμά τον r από έναν εργαζόμενο που έχει τώρα. 62

63 ΠΡΟΒΛΗΜΑ ΣΥΝΤΟΜΟΤΕΡΩΝ ΜΟΝΟΠΑΤΙΩΝ 63

64 Συντομότερα μονοπάτια - Dijkstra Συντομότερα μονοπάτια (one-to-all) : Δεδομένου ενός ζυγισμένου γράφου G, να βρεθούν τα συντομότερα μονοπάτια από μια κορυφή προς όλες τις άλλες Δεν δουλεύει με αρνητικά βάρη Εφαρμόζεται σε κατευθυνόμενους και μη γράφους 64

65 Ο αλγόριθμος του Dijkstra είναι παρόμοιος με του Prim, με την εξής διαφορά: – Αρχικά το δένδρο έχει μια κορυφή – Το δένδρο μεγαλώνει με μια κορυφή/ακμή κάθε φορά – Κρατούμε το συντομότερο μονοπάτι από την πηγή προς τις κορυφές του δένδρου T i – Σε κάθε στάδιο κατασκευάζουμε το T i+1 από το T i : προσθέτουμε την ακμή (v,w) με το ελάχιστο d(s,v)+d(v,w), όπου v  Τ i, αλλά δεν ισχύει w  V i – Επιλέγουμε από τις ακμές του κρασπέδου (fringe) – αυτό είναι το άπληστο βήμα – Ο αλγόριθμος τερματίζει όταν επιλεγούν όλες οι κορυφές Αλγόριθμος του Dijkstra 65

66 Παράδειγμα d 4 ΚόμβοιΕναπομείναντες Κόμβοι a(-,0) b(a,3) c(-,∞) d(a,7) e(-,∞) a b 4 e 3 7 6 2 5 c a b d 4 c e 3 7 4 6 2 5 a b d 4 c e 3 7 4 6 2 5 a b d 4 c e 3 7 4 6 2 5 b(a,3) c(b,3+4) d(b,3+2) e(-,∞) d(b,5) c(b,7) e(d,5+4) c(b,7) e(d,9) e(d,9) d a b d 4 c e 3 7 4 6 2 5

67 a edc b 1 5 2 4 6 3 7 67 Παράδειγμα

68 Κώδικας αλγορίθμου του Dijkstra Algorithm Dijkstra(G,s) Initialize(Q) //Q: priority queue for every vertex v Є V do d v  ∞; p v  null; //p: προτελευταία κορυφή στο μονοπάτι προς v Insert(Q,v, d v ) d s  0; Decrease(Q,s,d s ); V T  0 //ενημέρωση αφετηρίας for i  0 to |V|-1 do u*  DeleteMin(Q); V T  V T ∪ {u*} for every vertex u in V-V T that is adjacent to u* do if d u* +w(u*,u)<d u d u  d u +w(u*,u); p u  u*; Decrease(Q,u,d u ) Αποτελεσματικότητα; – Παρόμοια με αυτή του Prim 68

69 ΚΩΔΙΚΑΣ HUFFMAN 69

70 Πρόβλημα Κωδικοποίησης Κωδικές Λέξεις: ακολουθία ορισμένων bits για κάθε χαρακτήρα του αλφαβήτου Δύο τύποι κωδικοποίησης: Σταθερού μήκους (fixed-length encoding) (π.χ., ASCII) Μεταβλητού μήκους (variable-length encoding) (π.χ., κώδικας Morse) Prefix-free codes -Κώδικες προθέματος (κανονικά πρέπει να λέγονται κώδικες άνευ προθέματος): ουδεμία κωδική λέξη είναι πρόθεμα μιας άλλης Πρόβλημα: Αν είναι γνωστές οι συχνότητες της εμφάνισης των χαρακτήρων, ποιος είναι ο βέλτιστος δυαδικός κώδικας προθέματος; 70

71 Κώδικας Huffman Κάθε δυαδικό δένδρο με ετικέτες στις ακμές με ) και 1 δίνει ένα κώδικα προθέματος για τους χαρακτήρες στα φύλλα. Ένα βέλτιστο δυαδικό δένδρο που ελαχιστοποιεί το σταθμισμένο μήκος μίας κωδικής λέξης παράγεται από τον αλγόριθμο Huffman Αλγόριθμος Huffman  Αρχικοποίησε κάθε χαρακτήρα ως δένδρα μίας κορυφής  Η ρίζα κάθε δένδρου έχει αποθηκευμένη τη συχνότητα του χαρακτήρα (βάρος δένδρου)  Επανέλαβε n-1 φορές:  Σύνδεσε τα δύο δένδρα με το μικρότερο βάρος σε ένα δένδρο (ως αριστερό και δεξί υποδένδρο αντίστοιχα). Το νέο βάρος είναι το άθροισμα των βαρών των δύο αρχικών δένδρων.  Βάλε ετικέτες στις ακμές για τα αριστερά και τα δεφιά υποδένδρα 0 και 1 αντίστοιχα. 71

72 Παράδειγμα Χαρακτήρας A B C D _ Συχνότητα 0.35 0.1 0.2 0.2 0.15 Κωδ. λέξεις 11 100 00 01 101 Μέσο πλήθος bits/χαρακτήρα: 2.25 Κωδ/ση σταθερού μήκους: 3 Λόγος συμπίεσης: (3-2.25)/3*100% = 25% 72

73 Ασκήσεις Έστω ένα μακρύς δρόμος με σπίτια διασκορπισμένα αραιά γύρω από αυτόν (μπορείτε να φανταστείτε το δρόμο σαν μία μεγάλη ευθεία με το ανατολικό και το δυτικό της άκρο). Τα σπίτια δεν έχουν τηλέφωνο και για αυτό οι κάτοικοι χρησιμοποιούν μόνο τηλεφωνικούς θαλάμους. Θέλουμε να τοποθετήσουμε τηλεφωνικούς θαλάμους σε ορισμένα σημεία στο δρόμο έτσι ώστε κανένα σπίτι να μην είναι σε απόσταση μεγαλύτερη από 4 km από έναν τηλεφωνικό θάλαμο. Δώστε έναν αποδοτικό αλγόριθμο απληστίας που να επιτυγχάνει αυτό το στόχο χρησιμοποιώντας όσο το δυνατό λιγότερους θαλάμους γίνεται. Αποδείξτε τη βελτιστότητα του αλγόριθμού σας. ΑΠΑΝΤΗΣΗ Για κάθε σημείο του δρόμου ορίζουμε την θέση του ως την απόσταση από το δυτικό άκρο του δρόμου. Τοποθετούμε τον πρώτο θάλαμο όσο το δυνατό προς τα ανατολικά – έστω στο σημείο s 1 – έτσι ώστε όλα τα σπίτια στο διάστημα από 0 έως s 1 να καλύπτονται από τον θάλαμο. Γενικά, έχοντας τοποθετήσει τους θαλάμους στα σημεία {s 1, s 2, …, s i } τοποθετούμε τον θάλαμο i+1 στο μακρύτερο σημείο s ι+1 έτσι ώστε όλα τα σπίτια μεταξύ του s i και του s i+1 να καλύπτονται από τους θαλάμους i και i+1. Απόδειξη βελτιστότητας: Έστω S = {s 1, s 2, …, s k } το σύνολο των θαλάμων που τοποθετεί ο άπληστος αλγόριθμος και έστω ότι T = {t 1, t 2, …, t m } οι θέσεις στη βέλτιστη λύση ταξινομημένα σε αύξουσα σειρά (από δυτικά προς ανατολικά). Θα πρέπει να δείξουμε ότι k = m. Για να το αποδείξουμε αυτό θα δείξουμε ότι s i  t i για κάθε i με επαγωγή. Ο ισχυρισμός είναι αληθής για i = 1 αφού ο άπληστος αλγόριθμος τοποθετεί τον θάλαμο όσο γίνεται πιο μακριά. Έστω ότι ισχύει για κάποιο i. Αυτό σημαίνει ότι οι πρώτοι i θάλαμοι του άπληστου αλγόριθμου καλύπτουν τα ίδια σπίτια που καλύπτονται και από τους πρώτους i θαλάμους του βέλτιστου αλγόριθμου. Επομένως, αν προσθέσουμε το t i+1 στο {s 1, s 2, …, s i } τότε όλα τα σπίτια μεταξύ του s i και του t i+1 θα καλύπτονται. Όμως ο άπληστος αλγόριθμος επιλέγει το s i+1 έτσι ώστε να καλύπτονται όλα τα σπίτια μεταξύ του s i και του s i+1 και άρα s i+1  t i+1. Αυτό αποδεικνύει τον ισχυρισμό. Τέλος, αν k > m τότε το {s 1, s 2, …, s m } δεν καλύπτει όλα τα σπίτια. Όμως, s m  t m και άρα ο T = {t 1, t 2, …, t m } επίσης αποτυγχάνει να καλύψει όλα τα σπίτια, κάτι που είναι άτοπο. Άρα k = m. 73


Κατέβασμα ppt "Άπληστοι Αλγόριθμοι. Ο Γιωρίκας, ο Κωστίκας και ο Πανίκας Σελ. 220 Kleinberg-Tardos 2."

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


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