2η Σειρά Γραπτών Ασκήσεων

Σχετικά έγγραφα
Outline. 6 Edit Distance

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

1η Σειρά Γραπτών Ασκήσεων

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Άπληστοι Αλγόριθμοι. Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Δομές Δεδομένων & Αλγόριθμοι

3η Σειρά Γραπτών Ασκήσεων

Δομές Δεδομένων & Αλγόριθμοι

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Διαδικασιακός Προγραμματισμός

Σχεδίαση και Ανάλυση Αλγορίθμων

Επιλογή. Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή

Δυναμικός Προγραμματισμός

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άπληστοι Αλγόριθμοι. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Δομές Δεδομένων & Αλγόριθμοι

Άπληστοι Αλγόριθµοι. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Άπληστοι Αλγόριθµοι 1

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

Επιλογή. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

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

Συντομότερες Διαδρομές

Δυναμικός Προγραμματισμός

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Μη γράφετε στο πίσω μέρος της σελίδας

Σχεδίαση & Ανάλυση Αλγορίθμων

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Κρυπτογραφία. Έλεγχος πρώτων αριθών-παραγοντοποίηση. Διαφάνειες: Άρης Παγουρτζής Πέτρος Ποτίκας

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ουρές Προτεραιότητας. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Επιλογή. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

(sensitivity analysis, postoptimality analysis).

Ταξινόμηση. 1. Στατιστικά Διάταξης 2. Στατιστικά σε Μέσο Γραμμικό Χρόνο. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Διωνυµικοί Συντελεστές. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Δυναµικός Προγραµµατισµός 1

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

Διάλεξη 4: Εκλογή Προέδρου σε Δακτύλιους. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Υπολογισμός της δύναμης z=x b modn

Quicksort. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Συντομότερες Διαδρομές

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

Μέγιστη Ροή Ελάχιστη Τομή

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

3η Σειρά Γραπτών Ασκήσεων

Διάλεξη 04: Παραδείγματα Ανάλυσης

για NP-Δύσκολα Προβλήματα

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

Διάλεξη 04: Παραδείγματα Ανάλυσης Πολυπλοκότητας/Ανάλυση Αναδρομικών Αλγόριθμων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ταξινόμηση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 4. Παραδείγματα Ανάλυσης Πολυπλοκότητας Ανάλυση Αναδρομικών Αλγόριθμων

Μη γράφετε στο πίσω μέρος της σελίδας

Δυναμικός Προγραμματισμός

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ουρά Προτεραιότητας: Heap

Συντομότερες ιαδρομές

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Περιεχόμενα. 1. Ανάλυση ευαισθησίας. (1) Ανάλυση ευαισθησίας (2) Δυϊκό πρόβλημα (κανονική μορφή) (3) Δυαδικός προγραμματισμός (4) Ανάλυση αποφάσεων

Εύρεση ν-στού πρώτου αριθμού

OΡΙΟ - ΣΥΝΕΧΕΙΑ ΣΥΝΑΡΤΗΣΗΣ

Outline 1 Άσκηση 1: Εφαρμογές BFS DFS 2 Άσκηση 2: Μια Συνάρτηση Κόστους σε Κατευθυνόμενα Γραφήματα 3 Άσκηση 3: Ανάλυση Ασφάλειας 4 Άσκηση 4: Το Σύνολο

δυαδική αναζήτηση Παύλος Σ. Εφραιμίδης

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Quicksort. Επιμέλεια διαφανειών: Δ. Φωτάκης Μικροαλλαγές: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Προγραµµατιστικές Τεχνικές

Αναζήτηση Κατά Βάθος. Επιμέλεια διαφανειών: Δ. Φωτάκης Συμπληρώσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Approximation Algorithms for the k-median problem

υναμικός Προγραμματισμός

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

υναμικός Προγραμματισμός

ιδάσκοντες: Φ. Αφράτη,. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Συντομότερες ιαδρομές

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Θεωρία Γραφημάτων 6η Διάλεξη

Συντομότερες ιαδρομές

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

Προγραμματισμός Ι (ΗΥ120)

ΕΝΟΤΗΤΑ 6 ΛΙΣΤΕΣ ΠΑΡΑΛΕΙΨΗΣ (SKIP LISTS)

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Αλγόριθμοι Ταξινόμησης Μέρος 2

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

Τσάπελη Φανή ΑΜ: Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά

Επιμέλεια διαφανειών: Δ. Φωτάκης Τροποποιήσεις-προσθήκες: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ελάχιστο Συνδετικό Δέντρο

Λεξικό, Union Find. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αλγόριθμοι Αναζήτησης

Δοµές Δεδοµένων. 9η Διάλεξη Ταξινόµηση - Στοιχειώδεις µέθοδοι. Ε. Μαρκάκης

Transcript:

2η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 1/23

1 Κλειδιά και κλειδαριές 2 Puzzle 3 Διαστημικές Μάχες 4 Κεραίες 5 Εργοστάσιο Ποτηριών 2/23

Κλειδιά και κλειδαριές Θα χρησιμοποιήσουμε τα κλειδιά ως pivot για να ταξινομήσουμε τις πόρτες μας 3/23

Κλειδιά και κλειδαριές T=μέσος ολικός χρόνος 4/23

Κλειδιά και κλειδαριές T=μέσος ολικός χρόνος F=μέσος ολικός χρόνος εύρεσης συνόλων που διαμερίζονται 4/23

Κλειδιά και κλειδαριές T=μέσος ολικός χρόνος F=μέσος ολικός χρόνος εύρεσης συνόλων που διαμερίζονται D=μέσος ολικός χρόνος διαμερισμού 4/23

Κλειδιά και κλειδαριές T=μέσος ολικός χρόνος F=μέσος ολικός χρόνος εύρεσης συνόλων που διαμερίζονται D=μέσος ολικός χρόνος διαμερισμού D = Θ(nlogn) ( icksort analysis) 4/23

Κλειδιά και κλειδαριές T=μέσος ολικός χρόνος F=μέσος ολικός χρόνος εύρεσης συνόλων που διαμερίζονται D=μέσος ολικός χρόνος διαμερισμού D = Θ(nlogn) ( icksort analysis) F ne [depth] = Θ(nlogn) 4/23

Κλειδιά και κλειδαριές T=μέσος ολικός χρόνος F=μέσος ολικός χρόνος εύρεσης συνόλων που διαμερίζονται D=μέσος ολικός χρόνος διαμερισμού D = Θ(nlogn) ( icksort analysis) F ne [depth] = Θ(nlogn) T = Θ(nlogn) 4/23

Puzzle ΕΒ: n=1 5/23

Puzzle ΕΒ: n=1 ΕΥ: έστω ότι μπορώ σε 2 n 1 2 n 1 n 2 5/23

Puzzle ΕΒ: n=1 ΕΥ: έστω ότι μπορώ σε 2 n 1 2 n 1 n 2 Απόδειξη για 2 n 2 n n 2 5/23

Puzzle 1 χωρίζω σε τέσσερα τετράγωνα μεγέθους 2 n 1 2 n 1 6/23

Puzzle 1 χωρίζω σε τέσσερα τετράγωνα μεγέθους 2 n 1 2 n 1 2 γεμίζω κατάλληλα με ένα γάμμα το κεντρικό τετραγωνάκι 6/23

Puzzle 1 χωρίζω σε τέσσερα τετράγωνα μεγέθους 2 n 1 2 n 1 2 γεμίζω κατάλληλα με ένα γάμμα το κεντρικό τετραγωνάκι 3 γεμίζω επαγωγικά το καθένα ξεχωριστά 6/23

Puzzle 1 χωρίζω σε τέσσερα τετράγωνα μεγέθους 2 n 1 2 n 1 2 γεμίζω κατάλληλα με ένα γάμμα το κεντρικό τετραγωνάκι 3 γεμίζω επαγωγικά το καθένα ξεχωριστά 6/23

Διαστημικές Μάχες Είσοδος: n Death Satellites δύναμης f i n πλανήτες αξίας v i με δυναμη ασπίδας s i Εξοδος: Ένα ταίριασμα M των Satellites με πλανητες που μεγιστοποιεί το κέρδος της Αυτοκρατορίας: max v i, W = {i f i > s M(i) } i W 7/23

Διαστημικές Μάχες - Αλγόριθμος Greedy κριτήριο 1 Προσπάθησε να κατάστρεφεις πλανήτες με μεγάλη αξία Greedy κριτήριο 2 Μη σπαταλάς μεγάλης δύναμης Satellites σε μικρής δύναμης ασπίδες το μέγιστο δυνατό κέρδος με τη μικρότερη δυνατή "σπατάλη" δύναμης 8/23

Διαστημικές Μάχες - Αλγόριθμος Greedy κριτήριο 1 Προσπάθησε να κατάστρεφεις πλανήτες με μεγάλη αξία Greedy κριτήριο 2 Μη σπαταλάς μεγάλης δύναμης Satellites σε μικρής δύναμης ασπίδες το μέγιστο δυνατό κέρδος με τη μικρότερη δυνατή "σπατάλη" δύναμης Αλγόριθμος: Space Ταξινόμησε τους πλανήτες σε φθίνουσα σειρά v i Για κάθε πλανήτη i αντιστοίχισε το Satellite με min f j ώστε f j > s i Αν τέτοιο Satellite, αντιστοιχίζω min f j 8/23

Διαστημικές Μάχες - Ορθότητα Έστω OPT η βέλτιστη λύση του προβλήματος, και Greedy η δική μας λύση Εξετάζω τους πλανήτες σε φθίνουσα σειρά v i, και η πρώτη φορά που διαφέρουν οι λύσεις είναι στον πλανήτη i: η OPT αντιστοιχίζει το Satellite f op ενώ η Greedy το Satellite f gr Διακρίνω τις περιπτώσεις: 9/23

Διαστημικές Μάχες - Ορθότητα Έστω OPT η βέλτιστη λύση του προβλήματος, και Greedy η δική μας λύση Εξετάζω τους πλανήτες σε φθίνουσα σειρά v i, και η πρώτη φορά που διαφέρουν οι λύσεις είναι στον πλανήτη i: η OPT αντιστοιχίζει το Satellite f op ενώ η Greedy το Satellite f gr Διακρίνω τις περιπτώσεις: Greedy χάνει, OPT κερδίζει: (f gr s i < f op ) Άτοπο! ο greedy θα είχε διαλέξει f ώστε να κερδίζει Greedy κερδίζει, OPT χάνει: (f gr > s i f op ) Μπορώ να αλλάξω το f op με το f gr στην OPT χωρίς να μειωθεί το κέρδος 9/23

Διαστημικές Μάχες - Ορθότητα Greedy κερδίζει, OPT κερδίζει: 2 περιπτώσεις f gr > f op > s i Άτοπο! (ο greedy διαλέγει το min f i ώστε να κερδίζει) f op > f gr > s i Μπορώ να κάνω swap τα f op και f gr στην OPT χωρίς να χάσω αξία! 10/23

Διαστημικές Μάχες - Πολυπλοκότητα Πολυπλοκότητα; Ταξινόμηση πλανητών: O(n log n) Αναζήτηση σωστού s j για κάθε f i, ταξινόμηση ως προς s j ; 11/23

Διαστημικές Μάχες - Πολυπλοκότητα Πολυπλοκότητα; Ταξινόμηση πλανητών: O(n log n) Αναζήτηση σωστού s j για κάθε f i, ταξινόμηση ως προς s j ; Δεν αρκεί! Οι πλανήτες που αντιστοιχίζονται χαλάνε την αναζήτηση, θέλω δομή για ταξινόμηση με αφαίρεση στοιχείων δέντρο δυαδικής αναζήτησης O(log n) Τελικά O(n log n) 11/23

Κεραίες i) Ευθύγραμμό τμήμα με σπίτια x i κεραίες με εμβέλεια k Θέλω min # κεραιών Ιδέα 1: Κάθε σπίτι πρέπει να καλύπτεται 1 κεραία σε κάθε σπίτι 12/23

Κεραίες i) Ευθύγραμμό τμήμα με σπίτια x i κεραίες με εμβέλεια k Θέλω min # κεραιών Ιδέα 1: Κάθε σπίτι πρέπει να καλύπτεται 1 κεραία σε κάθε σπίτι Iδέα 2: (Greedy) κάλυψε όσα περισσότερα μπορείς βάζοντας την κεραία στο δεξιότερο δυνατό σημείο 12/23

Κεραίες i) Ευθύγραμμό τμήμα με σπίτια x i κεραίες με εμβέλεια k Θέλω min # κεραιών Ιδέα 1: Κάθε σπίτι πρέπει να καλύπτεται 1 κεραία σε κάθε σπίτι Iδέα 2: (Greedy) κάλυψε όσα περισσότερα μπορείς βάζοντας την κεραία στο δεξιότερο δυνατό σημείο Αλγόριθμος: Σύνολο ακάλυπτων σπιτιών: S while S do Ξεκίνα από το πρώτο ακάλυπτο σπίτι x Βάλε κεραία όσο δεξιότερα μπορείς (ώστε x να καλύπτεται) Βγάλε απο το S τα σπίτια στα επόμενα k μέτρα end Πολυπλοκότητα: O(n) 12/23

Κεραίες i) Απόδειξη Λύση OPT = {p 1,, p n } μεγέθους OPT = n Λύση ALG = {a 1,, a m } μεγέθους ALG = m } Θδο m = n Αρκεί η ALG να είναι πάντα "μπροστά" από την OPT: a i p i i Επαγωγή στον αριθμό των κεραιών i 13/23

Κεραίες i) Απόδειξη Λύση OPT = {p 1,, p n } μεγέθους OPT = n Λύση ALG = {a 1,, a m } μεγέθους ALG = m } Θδο m = n Αρκεί η ALG να είναι πάντα "μπροστά" από την OPT: a i p i i Επαγωγή στον αριθμό των κεραιών i Βάση: i = 1, θα μπει 1 κεραία, a 1 p 1 από αλγόριθμο 13/23

Κεραίες i) Απόδειξη Λύση OPT = {p 1,, p n } μεγέθους OPT = n Λύση ALG = {a 1,, a m } μεγέθους ALG = m } Θδο m = n Αρκεί η ALG να είναι πάντα "μπροστά" από την OPT: a i p i i Επαγωγή στον αριθμό των κεραιών i Βάση: i = 1, θα μπει 1 κεραία, a 1 p 1 από αλγόριθμο Έστω ότι ισχύει για n, θδο για n + 1 Eπ υπόθεση οι πρώτες n κεραίες του ALG θα καλύπτουν τα σπίτια που καλύπτουν οι πρώτες n του OPT Αν βάλω την p n+1 στην ALG θα καλύπτει αναγκαστικά τα σπίτια στο (a n, p n+1 ) Από αλγόριθμο p i+1 a i+1 13/23

Κεραίες ii) Σπίτια στην περιφέρεια κύκλου Δουλεύει η λύση του i) ξεκινώντας από τυχαίο σπίτι; 14/23

Κεραίες ii) Σπίτια στην περιφέρεια κύκλου Δουλεύει η λύση του i) ξεκινώντας από τυχαίο σπίτι; Όχι! Παράδειγμα: Ξεκινάω από το x 1, κόστος: 2 14/23

Κεραίες ii) Σπίτια στην περιφέρεια κύκλου Δουλεύει η λύση του i) ξεκινώντας από τυχαίο σπίτι; Όχι! Παράδειγμα: Ξεκινάω από το x 1, κόστος: 2 Κόστος optimal: 1 Περιττή κεραία αν ξεκινήσω απο x 1 14/23

Κεραίες ii) Αλγόριθμος/Απόδειξη Αλγόριθμος: Τρέξε το α) ξεκινώντας από κάθε σημείο, και πάρε το min Πολυπλοκότητα O(n 2 ) 15/23

Κεραίες ii) Αλγόριθμος/Απόδειξη Αλγόριθμος: Τρέξε το α) ξεκινώντας από κάθε σημείο, και πάρε το min Πολυπλοκότητα O(n 2 ) Απόδειξη/επιχείρημα ορθότητας: Αν υπάρχει instance που δεν έχω επικάλυψη της πρώτης με την τελευταία είναι OPT (ίδιο με α) Σε όλες εχω επικάλυψη και διαλέγω την min: έστω όχι η opt προσπαθώ να μειώσω τις επικαλύψεις Εστω η τελευταία κεραία, καλύπτει και k πρώτες Μετακινώ την 1η κεραία a 1 για να αποφύγω επικάλυψη Στο αριστερότερο άκρο της a 1 θα έχω κάποιο άλλο σπίτι x i ισοδύναμο με το να ξεκινήσω από το x i το έχω ήδη κάνει σε άλλη λύση! 15/23

Εργοστάσιο Ποτηριών i) n = 100, k = 1 Βέλτιστη σειρά δοκιμών: 1εκ 2εκ 3εκ (n-1)εκ Αν πετάξουμε το μοναδικό ποτήρι απο κάποιο ύψος χωρίς να δοκιμάσουμε όλα τα μικρότερα ύψη και αυτό σπάσει τότε δεν έχουμε βρει λύση n = 100, k = 2 binary search? best case: Δοκιμή από τα 50 εκατοστά Αν το ποτήρι δεν σπάσει δοκιμή από τα 75 εκατοστά κοκ Αν είμαστε τυχεροί χρειάζονται 7 δοκιμές worst case: Δοκιμή από τα 50 εκατοστά Αν το ποτήρι σπάσει θα πρέπει με το ποτήρι που μένει να δοκιμάσουμε από το 1εκ ως τα 49εκ Χρειάζονται 50 δοκιμές Κόστος O(n) 16/23

Εργοστάσιο Ποτηριών i) Υπάρχει καλύτερη λύση! Ξεκινάμε από τα 14 εκατοστά Αν το ποτήρι σπάσει τότε με το δεύτερο ποτήρι δοκιμάζουμε από το 1εκ ως τα 13εκ Χρειάζονται 14 δοκιμές Αν το ποτήρι δεν σπάσει δοκιμάζουμε τα 27εκ Έτσι αν το ποτήρι σπάσει θα πρέπει να δοκιμάσουμε 15εκ - 26εκ και θα χρειαζόμαστε συνολικά 14 δοκιμές Ακολουθούμε το ίδιο σκεπτικό διατηρώντας τις δοκιμές ίσες με 14 17/23

Εργοστάσιο Ποτηριών i) 1o Ποτήρι Αν σπάσει: 2ο Ποτήρι Δοκιμές 14 1 2 13 1 + 13 = 14 27 15 16 26 2 + 12 = 14 39 28 29 38 3 + 11 = 14 50 40 41 49 4 + 10 = 14 60 51 52 59 5 + 9 = 14 69 61 62 63 64 65 66 67 68 6 + 8 = 14 77 70 71 72 73 74 75 76 7 + 7 = 14 84 78 79 80 81 82 83 8 + 6 = 14 90 85 86 87 88 89 9 + 5 = 14 95 91 92 93 94 10 + 4 = 14 99 96 97 98 11 + 3 = 14 18/23

Εργοστάσιο Ποτηριών i) Βελτιστότητα Έστω x ο βέλτιστος αριθμός δοκιμών στην χειρότερη περίπτωση Δοκιμάζουμε στα x εκατοστά - καλύπτουμε x βαθμίδες Δοκιμάζουμε στα (x + (x 1)) εκατοστά - καλύπτουμε x 1 βαθμίδες κοκ Συνολικά καλύπτουμε x + (x 1) + (x 2) + + 2 + 1 = x(x+1) 2 βαθμίδες Πρέπει να καλυφθούν n = 100 βαθμίδες άρα: x(x + 1) 2 100 x = 14 19/23

Εργοστάσιο Ποτηριών ii) Αλγόριθμος Δυναμικός προγραμματισμός Αναδρομή D[n, k] = 1 + min{max{d[i 1, k 1], D[n i, k]}}, i = 1, 2,, n D[1, k] = 1, D[0, k] = 0 D[n, 1] = n D[n, k] ελάχιστος αριθμός δοκιμών στην χειρότερη περίπτωση για n εκατοστά (βαθμίδες) και k ποτήρια Δοκιμάζουμε την i-oστή από μία ακολουθία n διαδοχικών βαθμίδων Αν το ποτήρι σπάσει το πρόβλημα περιορίζεται σε k 1 ποτήρια και i 1 διαδοχικές βαθμίδες Αν δεν σπάσει έχουμε k ποτήρια και n i διαδοχικές βαθμίδες 20/23

Εργοστάσιο Ποτηριών ii) Πολυπλοκότητα Πολυπλοκότητα Ṣtate Space Work for each step = O(nk n) = O(n 2 k) 21/23

Εργοστάσιο Ποτηριών iii) Με διωνυμικούς συντελεστές Έστω b(t, k) ο αριθμός των βαθμίδων που καλύπτονται από k ποτήρια με t δοκιμές Αν το ποτήρι σπάσει καλύπτονται b(t 1, k 1) βαθμίδες Αν δεν σπάσει έχουμε καλύπτονται b(t 1, k) βαθμίδες b(t, k) = 1 + b(t 1, k 1) + b(t 1, k) Ορίζουμε g(t, k) = b(t, k + 1) b(t, k) = g(t 1, k) + g(t 1, k 1) Η παραπάνω σχέση ισχύει για τους διωνυμικούς συντελεστές, επομένως g(t, k) = ( t) k (εξαίρεση: g(0, 0) = 0 λόγω αρχικών συνθηκών) 22/23

Εργοστάσιο Ποτηριών iii) Με διωνυμικούς συντελεστές Επίσης ισχύει: b(t, k) = g(t, k 1) + g(t, k 2) + + g(t, 0) = (τηλεσκοπικό άθροισμα) k i=1 ( ) t i Τώρα αρκεί απλώς να βρούμε ένα t τω b(t, k) = k i=1 ( t i) n ώστε να καλυφθούν όλες οι βαθμίδες Πολυπλοκότητα Με binary search έχουμε O(k log(n)) 23/23