Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

Σχετικά έγγραφα
Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Γεωµετρικοί Αλγόριθµοι (CLR, κεφάλαιο 35)

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

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

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

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

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

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

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

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διδάσκων: Παναγιώτης Ανδρέου

ΕΠΛ 232 Φροντιστήριο 2

ίκτυα Ταξινόµησης (CLR κεφάλαιο 28)

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Εργαστηριακή Άσκηση 1

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 1 ΛΥΣΕΙΣ Ανάλυση Πολυπλοκότητας

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

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

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

Tυχαιοποιηµένοι Αλγόριθµοι (CLR, κεφάλαιo 8.3 και 10)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

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

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

(Γραμμικές) Αναδρομικές Σχέσεις

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ

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

(Γραμμικές) Αναδρομικές Σχέσεις

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

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

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 4: Διαίρει και Βασίλευε. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

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

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

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

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

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

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

Τεχνικές Σχεδιασμού Αλγορίθμων

Παράλληλοι Αλγόριθμοι: Ανάλυση Εικόνας και Υπολογιστική Γεωμετρία. Πέτρος Ποτίκας CoReLab 4/5/2006

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

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

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

Κατ οίκον Εργασία 1 Σκελετοί Λύσεων

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Αλγόριθµοι Ταξινόµησης

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Υπολογισµός διπλών ολοκληρωµάτων µε διαδοχική ολοκλήρωση

οµές εδοµένων 3 ο Εξάµηνο Τµήµα Πανεπιστήµιο Πληροφορικής Ιωαννίνων ΟΜΕΣ Ε ΟΜΕΝΩΝ

Εισαγωγή στην Ανάλυση Αλγορίθμων

Στοιχεία Αλγορίθµων και Πολυπλοκότητας

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

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

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

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

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

Heapsort Using Multiple Heaps

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

Διδάσκων: Παναγιώτης Ανδρέου

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ Ι (ΠΕΡΙΤΤΟΙ) Λυσεις Ασκησεων - Φυλλαδιο 2

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

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

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

p

Εισαγωγή στους Αλγορίθμους

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

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

Μάθηµα Θεωρίας Αριθµών Ε.Μ.Ε

Ερώτημα 1. Μας δίνεται μια συλλογή από k ακολοθίες, k >=2 και αναζητούμε το πρότυπο Ρ, μεγέθους n.

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων

ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 2-1

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

Transcript:

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων 1. (α) Αλγόριθµος: ηµιούργησε το σύνολο P που αποτελείται από τα άκρα όλων των ευθυγράµµων τµηµάτων. Βρες το κυρτό περίβληµα του P µε τον αλγόριθµο του Graham. Ορθότητα: Έστω Κ το πολύγωνο που επιστρέφεται από τον αλγόριθµο. Τo K είναι το ελάχιστο κυρτό πολύγωνο το οποίο περιέχει τα σηµεία του P στο εσωτερικό ή το περίβληµα του. Ισχύει επίσης ότι κάθε σηµείο των ευθυγράµµων τµηµάτων βρίσκεται στο εσωτερικό ή το περίβληµα του K: Από τον ορισµό ενός κυρτού πολυγώνου, αν δύο σηµεία p 1 και p 2 βρίσκονται στο εσωτερικό ή το περίβληµα του πολυγώνου τότε κάθε σηµείο στο ευθύγραµµο τµήµα που τα ενώνει βρίσκεται στο εσωτερικό ή το περίβληµα του πολυγώνου. Εποµένως το ζητούµενο έπεται. (β) Αλγόριθµος: Εφάρµοσε τον αλγόριθµο του Grahahm αφήνοντας πίσω το βήµα της ταξινόµησης των σηµείων. (γ) Αλγόριθµος i = 0 Εφόσον S Εφάρµοσε τον αλγόριθµο του Jarvis για να υπολογίσεις το κυρτό περίβληµα του S έστω Κ Για κάθε k K θέσε βάθος(k)=i S=S-k i++ Στην πρώτη εκτέλεση του αλγορίθµου του Jarvis υπολογίζουµε το κυρτό περίβληµα του αρχικού σηµειοσυνόλου, και σε κάθε επόµενη εκτέλεση το κυρτό περίβληµα των σηµείων που δεν ανήκουν σε κάποιο από τα προηγούµενα περιβλήµατα. Υποθέτοντας ότι συνολικά δηµιουργούνται m περιβλήµατα και το i-οστό περίβληµα περιέχει h i στοιχεία, τότε h 1 + h m = n και επιπλέον, η i-οστή εκτέλεση του αλγορίθµου του Jarvis απαιτεί χρόνο Ο(h i n) ενώ συνολικά ο αλγόριθµος απαιτεί χρόνο Ο(h 1 n+ h m n) = Ο(n(h 1 + h m )) = (Ο(n 2 ). 2. Ο αλγόριθµος ακολουθεί τις ίδιες γραµµές µε τον διαίρει και βασίλευε αλγόριθµο closest pairs µε αλλαγή του ορισµού της απόστασης από την ευκλειδική απόσταση στην απόσταση L. Μόνη διαφορά είναι ότι τώρα κατά τη φάση συνδύασε, για κάθε σηµείο στον τοµέα L, χρειάζεται να ελέγξουµε µόνο τα 4 επόµενά του σηµεία. 1

3. (α) Ταξινόµησε τη λίστα και εκτέλεσε µια διερεύνηση στη λίστα από τα αριστερά προς τα δεξιά συγκρίνοντας κάθε στοιχείο µε το επόµενό του. Αν κανένα από τα στοιχεία της λίστας δεν είναι ίσο µε το επόµενό του τότε απάντησε πως ο συρµός της λίστας είναι ίσος µε 1, διαφορετικά απάντησε πως υπάρχουν στοιχεία στη λίστα µε πολλαπλότητα µεγαλύτερη από 1. Χρονική πολυπλοκότητα: O(n lg n) (β) Παρατηρούµε ότι αν υπάρχει στοιχείο στη λίστα µε πολλαπλότητα µεγαλύτερη του n/2 τότε το στοιχείο αυτό θα πρέπει οπωσδήποτε να καταλαµβάνει τη µεσαία θέση στην ταξινοµηµένη µορφή της λίστας. Εποµένως ο αλγόριθµος έχει ως εξής: Βρες το µεσαίο στοιχείο της λίστας (χρησιµοποιώντας τον αλγόριθµο επιλογής των Blum, Floyd, Pratt, Rivest και Tarjan) έστω x. Με µια διερεύνηση στη λίστα υπολόγισε την πολλαπλότητα του x. Αν η πολλαπλότητα του x είναι µεγαλύτερη του n/2 τότε απάντησε πως η πολλαπλότητα του συρµού της λίστας είναι µεγαλύτερη του n/2 διαφορετικά πως κάθε στοιχείο της λίστας έχει πολλαπλότητα µικρότερη του n/2. Χρονική πολυπλοκότητα: O(n) (γ) Ο Αλγόριθµος Βρες το µεσαίο στοιχείο της λίστας και µετά κάλεσε τη διαδικασία partition µε pivot το µεσαίο στοιχείο, έτσι ώστε η λίστα να χωριστεί σε τρεις υποπίνακες: τον L1 µε στοιχεία µικρότερα του µεσαίου στοιχείου, τον L2 µε στοιχεία ίσα µε το µεσαίο στοιχείο και τον L3 µε στοιχεία µεγαλύτερα του µεσαίου στοιχείου. Παρατηρούµε ότι τα L1 και L2 πρέπει να έχουν τουλάχιστον (n-1)/2 στοιχεία, αφού περιέχουν όλα τα στοιχεία που είναι µικρότερα ή ίσα του µεσαίου στοιχείου. Επαναλαµβάνουµε αναδροµικά τη διαδικασία στον πίνακα L1 και L3 µέχρι να έχουµε Ο(n/k) υποπίνακες. Κάθε ένας από τους υποπίνακες τύπου L2 αποτελείται αποκλειστικά από επαναλήψεις ενός στοιχείου. Αυτά τα στοιχεία είναι υποψήφιοι συρµοί. Οι υπόλοιποι υποπίνακες τύπου L1 και L3 έχουν µέγεθος µικρότερο από k. Υπολόγισε τις πολλαπλότητες των υποψήφιων συρµών και επέστρεψε το στοιχείο µε τη µέγιστη πολλαπλότητα. Παράδειγµα: Βρες συρµό µε πολλαπλότητα τουλάχιστον 3 στον πίνακα 8,1,3,5,2,6,1,5,2,6,7,7,1,8,9,3,13,34,6,3,45,2,7,5,8,9,5,2,4 < = > 1,3,2,1,2,1,3,3,2,2,4 5,5,5,5 8,6,6,7,7,8,9,13,34,6,45,7,8,9 < = > < = > 1,1,1 2,2,2,2 3,3,3,4 6,6,7,7,6,7 8,8,8 9,13,34,45,9 = > < = < = > 3,3,3 4 6,6,6 7,7,7 9,9 13 34,45 2

Ορθότητα: Κάθε αναδροµικό βήµα έχει ως αποτέλεσµα την εύρεση όλων των εµφανίσεων ενός στοιχείου και τοποθέτησή τους σε ένα πίνακα. Αφού όλοι οι πίνακες τύπου L1 και L3 έχουν µήκος µικρότερο του k στο τέλος της διαδικασίας είναι αρκετό να ελέγξουµε όλους τους πίνακες τύπου L2 για πιθανούς συρµούς. Χρόνος εκτέλεσης: Αν το δεδοµένο εισόδου περιέχει λιγότερα από k στοιχεία τότε σε σταθερό χρόνο µπορούµε να συµπεράνουµε ότι δεν υπάρχει στοιχείο µε πολλαπλότητα µεγαλύτερη ή ίση του k. Αν n k τότε ο αλγόριθµος κάνει δύο αναδροµικές κλήσεις του εαυτού του σε υποπίνακες µεγέθους µικρότερου του n/2. Εποµένως, ο χρόνος εκτέλεσης δίνεται από την πιο κάτω αναδροµική διαδικασία: Τ(n) = 1 T(n) 2T(n/2) + Θ(n) αν n<k αν n k Επιλύνοντας την εξίσωση έχουµε T(n) O(n lg(n/k)). 4. Ο χρόνος εκτέλεσης του αλγορίθµου επιλογής για µέγεθος υποπινάκων 3, 7 και 9 δίνεται αντίστοιχα από τις πιο κάτω αναδροµικές εξισώσεις Τ 1 (n) = T 1 (n/3) + T 1 (2n/3+4) + n T 2 (n) = T 2 (n/5) + T 2 (7n/10+6) + n T 3 (n) = T 3 (n/7) + T 3 (5n/7+8) + n Αναλύοντας τις εξισώσεις συµπεραίνουµε ότι ενώ Τ 2 (n), T 3 (n) O(n), T 1 (n) Ω(n) και ακόµη T 1 (n) Ω(n lg n). Ακολουθεί η απόδειξη Τ 2 (n) O(n). Θα δείξουµε ότι Τ 2 (n) O(n), δηλαδή υπάρχει σταθερά c και n 0 τέτοια ώστε για κάθε n n 0 T 2 (n) cn. Τ 2 (n) cn/5 + 7cn/10 + 6c + n 9cn/10 +6c + n = cn (cn/10 6c n) Εποµένως T 2 (n) cn αν cn/10 6c n < 0. Η ανισότητα ισχύει για κάθε n και c=1, και συµπεραίνουµε ότι Τ 2 (n) n για κάθε n 1. 5. (α) Έστω Τ(m) ο χρόνος εκτέλεσης της διαδικασίας Cheapest(i) όπου n-i = m, δηλαδή όταν η διαδικασία καλείται από τη στήλη n-m για να πετύχει µετακίνηση m στήλες προς τα δεξιά. Τότε T(0) = 1 T(m) = T(m 1) + T(m 2) + T(m 3) + 1 Λήµµα: Τ(m) Ω((3/2) m ) Θα δείξουµε ότι για κάθε n 1 T(m) (3/2) m. Προφανώς για m=1 η πρόταση ισχύει (Τ(0) = 1 (3/2) 0 ) Υποθέτουµε ότι η πρόταση ισχύει για κάθε k m. Τότε Τ(m) (3/2) m 1 + (3/2) m 2 + (3/2) m 3 + 1 3

= (3/2) m-3 ((3/2) 2 +(3/2)+1) + 1 = (3/2) m 3 (19/4) (3/2) m 3 (3/2) 3 = (3/2) m και το ζητούµενο έπεται. (β) Έστω Κ(m) το ελάχιστο κόστος για µετακίνηση από τη στήλη m της σχάρας µέχρι τη στήλη n. To K(m) εκφράζεται αναδροµικά ως εξής: K (m) B[m,1] = B[m,1] + K(m + 1) B[m,1] + min(k(m + 1),K(m + 2)) B[m,1] + min(k(m + 1),K(m + 2),K(m + 3)) m > n m = n B[m,2] = 1 B[m,2] = 2 B[m,2] = 3 Από αυτή την αναδροµική σχέση παρατηρούµε ότι για υπολογισµό κάθε K(m) απαιτείται γνώση κάποιων K(m+i). Η βασική περίπτωση δίνεται από το K(n) και το ζητούµενο είναι το K(1). Εποµένως χρησιµοποιούµε ένα πίνακα K µήκους n και υπολογίζουµε τις θέσεις του ξεκινώντας µε τα Κ[n] και προχωρώντας προς τα K[n-1], K[n-1],, και K[1]. Σε ψευδοκώδικα ο αλγόριθµος έχει ως εξής: Cheapest2(int K[n], int B[n,2]) K[n]= B[n,1]; for (m = n 1 ; m >= 1; m--) a = B[m,1] + K[m+1]; (B[m,2]>1 και m < n-1 και a < B[m+1]+K[m+2]) a = B[m+1] + K[m+2] (B[m,2]>2 και m < n-2 και a < B[m+1]+K[m+3]) a = B[m+1] + K[m+3]; return K[1]; Ο χρόνος εκτέλεσης του αλγορίθµου είναι Ο(n). (γ) Για υπολογισµό όχι µόνο του ελάχιστου κέρδους αλλά και των κινήσεων του παιχνιδιού που αντιστοιχούν στο κέρδος αυτό, πρέπει να επεκτείνουµε τον αλγόριθµό µας έτσι ώστε όταν προσδιορίζει τη βέλτιστη πρώτη µετακίνηση από κάθε στήλη και να την σηµειώνει. Φυλάγουµε αυτές τις πληροφορίες σε ένα νέο πίνακα A[n] και επεκτείνουµε τον αλγόριθµο ως εξής: Cheapest3(int K[n], int A[n], int B[n,2]) K[n]= B[n,1]; 4

for (m = n 1 ; m >= 1; m--) a = B[m,1] + K[m+1]; A[m]=1; (B[m,2]>1 και m < n-1 και a < B[m+1]+K[m+2])) a = B[m+1] + K[m+2]; A[m] = 2; (B[m,2]>2 και m < n-2 και a < B[m+1]+K[m+3])) a = Β[m+1] + K[m+3]); A[m] = 3; return K[1]; Για επιστροφή του βέλτιστου παιχνιδιού χρησιµοποιούµε την πιο κάτω διαδικασία. m=1; while (m!= n) printf m; m=m+a[m]; printf n; Ο χρόνος εκτέλεσης της διαδικασίας παραµένει στην τάξη Ο(n). 5