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

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

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

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

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

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

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

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

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

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

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

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier

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

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

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

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

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

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

Αλγόριθµοι Οπισθοδρόµησης

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

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

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

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

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

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

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

3 Αναδροµή και Επαγωγή

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

Αναδρομικοί Αλγόριθμοι

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

Heapsort Using Multiple Heaps

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

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

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Λυσεις Ασκησεων - Φυλλαδιο 3

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

HY118- ιακριτά Μαθηµατικά. Μαθηµατική επαγωγή. 11 Επαγωγή

τη µέθοδο της µαθηµατικής επαγωγής για να αποδείξουµε τη Ϲητούµενη ισότητα.

Outline. 6 Edit Distance

Ασκήσεις για το µάθηµα «Ανάλυση Ι και Εφαρµογές» (ε) Κάθε συγκλίνουσα ακολουθία άρρητων αριθµών συγκλίνει σε άρρητο αριθµό.

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

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

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

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

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

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

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

Αριθµοθεωρητικοί Αλγόριθµοι και το. To Κρυπτοσύστηµα RSA

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3

Γενικό πλάνο. Μαθηµατικά για Πληροφορική. Παράδειγµα αναδροµικού ορισµού. οµική επαγωγή ΠΑΡΑ ΕΙΓΜΑ. 3ο Μάθηµα

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

Μαθηµατικά για Πληροφορική

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

Κρυπτογραφία και Πολυπλοκότητα

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

Στοιχεία Θεωρίας Γραφηµάτων (4) - έντρα

Σειρά Προβλημάτων 5 Λύσεις

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

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

q={(1+2)/2}=1 A(1,2)= MERGE( 4, 6 ) = 4 6 q=[(3+4)/2]=3 A(1,4)= MERGE( 4 6, 5 8 ) = q=[(5+6)/2]=5 A(5,6)= MERGE( 2, 9 ) = 2 9

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

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3

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

Κατανεμημένα Συστήματα Ι

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

ιακριτά Μαθηµατικά και Μαθηµατική Λογική ΠΛΗ20 Ε ρ γ α σ ί α 3η Θεωρία Γραφηµάτων

ΚΕΦΑΛΑΙΟ 2 ΜΗ ΓΡΑΜΜΙΚΕΣ ΕΞΙΣΩΣΕΙΣ

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

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

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

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ (συνέχεια)

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Λυσεις Ασκησεων - Φυλλαδιο 1

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

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

Διδάσκων: Κωνσταντίνος Κώστα

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

Επιπλέον Ασκήσεις. Μαθηµατική Επαγωγή. ιαιρετότητα. Προβλήµατα ιαιρετότητας.

Δυναμικός προγραμματισμός για δέντρα

Μαθηµατική Επαγωγή. Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

Υπολογιστικό Πρόβληµα

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Λυσεις Ασκησεων - Φυλλαδιο 4

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 6

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ. Λυσεις Ασκησεων - Φυλλαδιο 6

Υπολογιστικά & Διακριτά Μαθηματικά

HY118- ιακριτά Μαθηµατικά

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

Πληροφορική 2. Αλγόριθμοι

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

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

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

Κεφάλαιο 3β. Ελεύθερα Πρότυπα (µέρος β)

Αυτοματοποιημένη Επαλήθευση

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

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

Transcript:

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 Κατ οίκον Εργασία Σκελετοί Λύσεων. Ο αλγόριθµος διαίρει και βασίλευε για το πρόβληµα έχει ως εξής: Μοίρασε τον πίνακα σε δύο µισά. Υπολόγισε αναδροµικά τα µέγιστα και ελάχιστα στοιχεία των δύο υποπινάκων. Επέστρεψε ως ελάχιστο του πίνακα το ελάχιστο των ελαχίστων στοιχείων των δύο υποπινάκων και ως µέγιστο του πίνακα το µέγιστο των µέγιστων στοιχείων των δύο υποπινάκων. H διαδικασία mmax επιστρέφει στοιχεία (m, max) τύπου (t, t), όπου το m είναι το ελάχιστο και max το µέγιστο στοιχείο στοιχείο του πίνακα αντίστοιχα. (t, t) mmax( t X[], t l, t r){ } f (r-l ) f (X[l] > X[r]) retur(x[r], X[l]); else retur (X[l], X[r]); m=(l+r)/; (m, max) = mmax(x,l,m); (m, max) = mmax(x,m+,r); retur (m(m, m), max(max, max)) Βασική Περίπτωση Φάση διαίρει Φάση συνδύασε Υποθέτοντας ότι το πλήθος των στοιχείων του πίνακα είναι δύναµη του, ο αριθµός συγκρίσεων της διαδικασίας δίνεται από την αναδροµική εξίσωση Τ() = Τ() = T(/) + Θα δείξουµε ότι Τ() = /- µε τη µέθοδο της αντικατάστασης. Τ() = T(/) + = T( / ) + =... = T( / ) + = = = lg lg lg T( / + ( = / lg T( ) + ( lg + +... + ) + lg lg + +... + +... + + + ) ) = / + +

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 Πως µπορούµε να επεκτείνουµε τον αλγόριθµο έτσι ώστε να δουλεύει για κάθε (όχι µόνο για δυνάµεις του ); Με δεδοµένο ένα πίνακα µεγέθους προσδιορίζουµε ποια είναι η µεγαλύτερη δύναµη του, m, µικρότερη του. Τρέχουµε στα πρώτα m στοιχεία του πίνακα τον αλγόριθµο mmax και επαναλαµβάνουµε, αναδροµικά, την ίδια διαδικασία για τον υπόλοιπο πίνακα (µεγέθους -m). Αν (x,y) είναι το αποτέλεσµα της κλήσης της mmax και (x,y ) το αποτέλεσµα της αναδροµικής κλήσης, επιστρέφουµε (m(x,x ), max(y,y )). Σε ψευδοκώδικα έχουµε: (t, t) mmax( t X[], t l, t r){ f (l==r) retur(x[r], X[l]); Βασική Περίπτωση } f (r-l+) s a power of retur mmax(x,l,r) else p = log(r-l+) ; m = l + ^p ; (m, max) = mmax(x,l,m); (m, max) = mmax(x,m+,r); retur (m(m, m), max(max, max)) Φάση διαίρει Φάση συνδύασε O αριθµός συγκρίσεων της διαδικασίας δίνεται από την αναδροµική εξίσωση Τ() = 0 Τ() = /- αν = p για κάποιο p T(-m) + m/ + αν m= p < < p+ για κάποιο p Θα δείξουµε ότι Τ() = / - µε τη µέθοδο της µαθηµατικής επαγωγής. Βάση της επαγωγής Για =, Τ() = 0 = - = / -. Υποθέτουµε ότι η πρόταση ισχύει για κάθε k<. Βήµα της επαγωγής Αν = p για κάποιο p, τότε το ζητούµενο έπεται. Υποθέτουµε ότι για κάποιο p, m = p < < p+. Τότε Τ() = T(-m) + m/ (εξ ορισµού) = (-m)/ - + m/ (από την υπόθεση της επαγωγής) = (-m)/ m/ - = / - όπως χρειάζεται. Αυτό ολοκληρώνει την απόδειξη.

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00. (α) Ο αλγόριθµος έχει ως εξής: (ι) Ξεκίνα µε το πρώτο ράφι. (ιι) Εφόσον υπάρχει χώρος στο ράφι για το επόµενο στη σειρά βιβλίο τότε τοποθέτησε το βιβλίο στο ράφι. Επανάλαβε το βήµα. (ιιι) Αν δεν υπάρχει χώρος για το επόµενο βιβλίο, τότε δηµιούργησε ένα καινούριο ράφι και επέστρεψε στο βήµα (ιι). Χρονική πολυπλοκότητα: Θ() όπου είναι το πλήθος των βιβλίων. Ορθότητα: Ο αλγόριθµος αυτός δηµιουργεί τοποθέτηση των βιβλίων που ελαχιστοποιεί τον αριθµό χρησιµοποιούµενων ραφιών. Ας υποθέσουµε πως η τοποθέτηση του αλγόριθµου χρησιµοποιεί k ράφια µε την κατανοµή βιβλίων σε ράφια,b,...,b,..., b,b,..., b b r k k και η βέλτιστη τοποθέτηση b,b,...,b p,..., bm,bm,..., b mpm χρησιµοποιεί m ράφια. Θεωρήστε το r. Προφανώς, αφού ο αλγόριθµος δεν σταµατά να γεµίζει κάθε ράφι εκτός και αν αυτό γεµίσει, συµπεραίνουµε ότι r > p και επίσης ότι η τοποθέτηση b,b,...,b r,..., bm,bm,..., bmp είναι επίσης βέλτιστη ως προς m τον αριθµό ραφιών που χρησιµοποιεί. Επαγωγικά τα ίδια επιχειρήµατα ισχύουν για κάθε ράφι της τοποθέτησης που δηµιουργεί ο αλγόριθµος. Εποµένως k=m και ο αλγόριθµος πράγµατι δίνει τη βέλτιστη λύση. (β) Όχι, ο άπληστος αλγόριθµος δεν λύνει το νέο πρόβληµα. Αντιπαράδειγµα φαίνεται στο πιο κάτω σχήµα. kr k Το τελευταίο βιβλίο στο ψηλότερο ράφι της πρώτης τοποθέτησης µπορεί να τοποθετηθεί στο δεύτερο ράφι µειώνοντας έτσι το ύψος του ψηλότερου ραφιού. (γ) Ας θεωρήσουµε τοποθέτηση των βιβλίων b m,, b, σε ράφια. Τότε, παρατηρούµε ότι για το πρώτο ράφι έχουµε αρκετές επιλογές: µπορούµε να τοποθετήσουµε από µέχρι και k βιβλία, όπου k είναι ο µέγιστος ακέραιος για τον οποίο ισχύει ότι t m + + t m+k- L (δηλαδή το µήκος του ραφιού δεν χωρεί περισσότερα από τα k πρώτα βιβλία). Αφού αποφασίσουµε πόσα βιβλία θα τοποθετήσουµε στο πρώτο ράφι, αποµένει να τοποθετήσουµε τα υπόλοιπα βιβλία,

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 b m+k,, b, σε ράφια. Ανάµεσα σε αυτές τις επιλογές εµείς θέλουµε να διαλέξουµε αυτή που ελαχιστοποιεί το ύψος των ραφιών που χρησιµοποιεί. Εποµένως το H[m] δίνεται ως εξής: h f m = H [ m] = mm k l ( H [ k + ] + max( hm,...,hk )) f m όπου το l είναι τέτοιο ώστε h +... + h L και h... + h L. m l m + l+ > Από αυτή την αναδροµική σχέση παρατηρούµε ότι για υπολογισµό κάθε Η[m] απαιτείται γνώση κάποιων Η[k], k>m. Η βασική περίπτωση δίνεται από το H[] και το ζητούµενο είναι το Η[]. Εποµένως χρησιµοποιούµε ένα πίνακα Η µήκους και γεµίζουµε τις θέσεις του ξεκινώντας από την H[] και προχωρώντας προς τα αριστερά. Σε ψευδοκώδικα ο αλγόριθµος έχει ως εξής: lbrary(t H[], t h[], t b[]) H[..] = ; H[]= h[]; for (m = -; m > 0; m--) k=m; t=t[m]; h = h[m]; whle ( k <= && t <= L ) f H[m] > h + H[m+k] H[m] = h + H[m+k]; k++; t = t+t[k]; h = max(h, h[k]); retur h[]; Ο χρόνος εκτέλεσης του αλγόριθµου είναι Ο( ). (δ) Για υπολογισµό όχι µόνο τoυ συνολικού ύψους της βέλτιστης τοποθέτησης αλλά και των στοιχείων της συγκεκριµένης τοποθέτησης, πρέπει να επεκτείνουµε τον αλγόριθµό µας έτσι ώστε όταν συναντά µια καλύτερη τοποθέτηση των βιβλίων να σηµειώνει τον διαµερισµό των βιβλίων που πετυγχαίνει αυτή την τοποθέτηση. Ουσιαστικά στον αλγόριθµο µας ενδιαφέρει για κάθε Η[m] το k για το οποίο τελικά Η[m]= max(h[m],, h[k]) + H[k+], που απεικονίζει στον αριθµό του τελευταίου βιβλίου που τοποθετείται στο πρώτο ράφι της βέλτιστης τοποθέτησης. Φυλάγουµε αυτές τις πληροφορίες σε ένα νέο πίνακα B[] και επεκτείνουµε τον αλγόριθµο ως εξής: lbrary(t H[], t h[], t b[]) H[..] = ; H[] = h[]; B[] = ; for (m = -; m > 0; m--) k=m; t=t[m]; 4

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 h = h[m]; whle ( k <= && t <= L ) f H[m] > h + H[m+k] H[m] = h + H[m+k]; B[m] = k; k++; t = t+t[k]; h = max(h, h[k]); retur h[]; Για επιστροφή της βέλτιστης τοποθέτησης χρησιµοποιούµε την πιο κάτω διαδικασία: k=; whle (B[k]!= ) prtf B[k]; k=b[k+]; Ο χρόνος εκτέλεσης της διαδικασίας παραµένει στην τάξη Ο( ).. (α) Η ζητούµενη αναδροµική εξίσωσης είναι η Τ() = 6T(/) + 6(/), T() = Με τη µέθοδο της επανάληψης έχουµε Τ() = 6T(/) + = 6 T( / ) + = 6 T( / = 6 T( / = 6 T( / = 6 T( / = 6 T( / = 6 = 6 = 6 ) + T( / + ( + ( ) + 6 ( / ) + ) + 4 + ) + 6 ) + ( / + +... + ) + +... + ) ) + 4 + + + +... + + + ) + Τώρα αφού log =, 6 = =, και log T( ) ( + 6 = + ) Θ( ) = Θ( ). lg (β) Ο αλγόριθµος του φροντιστηρίου έχει χρόνο εκτέλεσης Θ( ). Ο προτεινόµενος αλγόριθµος έχει χρόνο εκτέλεσης που δίνεται από την πιο κάτω αναδροµική εξίσωση: Τ() = m T(/) + c Τ() = Χρησιµοποιώντας το θεώρηµα γενικής χρήσης συµπεραίνουµε ότι Aν O( lοg m ε ), δηλαδή m>, T() O( lοg m ). 5

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 Aν Θ( lοg m ), δηλαδή m=, T() O( lοg m lg ) = O( lg ). Aν Ω( lοg m + ε ), δηλαδή m<, T() O() Εποµένως, για m o αλγόριθµου είναι πιο αποδοτικός από τον γνωστό αλγόριθµο. Επίσης το ζητούµενο ισχύει όταν m> και ηλαδή lg log m < lg m < m < 5. 9 Aρα m=5 είναι ο µεγαλύτερος ακέραιος που ικανοποιεί το ζητούµενο. 4. (α) BAD[X-, Y] = BAD[X,Y-]= TRUE. m lg < (β) Ο αλγόριθµος έχει ως εξής: () Ξεκίνα από τη θέση (,) και µάρκαρε τη θέση ως θέση την οποία έχεις επισκεφθεί. () Προχώρησε προς µια από τις κατευθύνσεις εξιά, Αριστερά, Πάνω, Κάτω, προς την οποία δεν έχεις µέχρι στιγµής κινηθεί δεδοµένου ότι (α) η διασταύρωση στην οποία φθάνεις υπάρχει στη σχάρα (β) δεν είναι κακόφηµη και (γ) δεν την έχεις επισκεφθεί µέχρι τώρα. () Αν µια τέτοια κατεύθυνση υπάρχει τότε µάρκαρε τη θέση αυτή ως θέση την οποία έχεις επισκεφθεί και, αν η θέση αυτή είναι η (Χ,Υ) τότε τερµάτισε την εκτέλεση. ιαφορετικά επανάλαβε από το βήµα (). (v) Αν µια τέτοια θέση δεν υπάρχει οπισθοδρόµησε µια θέση προς τα πίσω. Αν έχεις φθάσει στη θέση (,), απάντησε πως δεν υπάρχει µονοπάτι που να ικανοποιεί τις προδιαγραφές του προβλήµατος. ιαφορετικά, επανάλαβε από το βήµα (). Παρατηρούµε ότι όταν επισκεφθούµε για πρώτη φορά κάποια διασταύρωση επιστρέφουµε πίσω σε αυτή µόνο αν η προσπάθεια εύρεσης µονοπατιού από τη διασταύρωση προς κάποια κατεύθυνση πάνω στη σχάρα αποτύχει. Εποµένως, αφού από κάθε διασταύρωση µπορούν να γίνουν το πολύ 4 αναζητήσεις, κάθε διασταύρωση συναντιέται το πολύ σταθερό αριθµό φορών. Εποµένως, ο χρόνος εκτέλεσης του αλγόριθµου είναι της τάξης Ο(XY). (γ) Ας γράψουµε K[] για το σύνολο των κόµβων της σχάρας που βρίσκονται σε ελάχιστη απόσταση από τον προορισµό (Χ,Υ). Τότε έχουµε ότι K[0] = {(Χ,Υ)} K[] = {(,j) BAD[,j]=FALSE, (,j) K[0],, K[-] και {(-,j), (+,j), (,j-), (,j+)} K[-] } Ζητούµενο του προβλήµατος µας είναι το m για το οποίο ισχύει (,) Κ[m].. Χρησιµοποιώντας αυτή την ιδέα µπορούµε να κτίσουµε το συντοµότερο µονοπάτι που ικανοποιεί τις προδιαγραδές του προβλήµατος, ξεκινώντας από το τέλος και 6

EΠΛ Αλγόριθµοι και Πολυπλοκότητα Φεβρουάριος 00 προχωρώντας προς τα πίσω, δηλαδή από τον προορισµό µας προχωρούµε στις ασφαλείς διασταυρώσεις που βρίσκονται ένα βήµα πιο πίσω (σύνολο Κ[]), από τις διασταυρώσεις Κ[], στις διασταυρώσεις Κ[] που βρίσκονται ένα βήµα πιο πίσω από αυτές, και κατά συνέπεια δύο βήµατα πιο πίσω από το (Χ,Υ) και ούτω καθεξής. Χρησιµοποιούµε τους πίνακες Vsted, Next, και Dstace, για να φυλάγουµε για κάθε διασταύρωση πληροφορίες για το αν έχουµε ήδη επισκεφθεί τη και, αν ναι, τον επόµενο κόµβο στο συντοµότερο µονοπάτι από τη προς το (Χ,Υ) και την απόσταση του µονοπατιού, αντίστοιχα. labyrth(t X, t Y, t BAD[x,y]) queue K; Dstace[..X,..Y]= ; Vsted[..X,..Y]= False; Dstace[X,Y]=0; Vsted[X,Y]= True; K = [(X,Y)]; whle (!IsEmpty(K)) p = Dequeue(K); f (p!= (,)) for all eghbors q of p f (BAD[q] == False) f (Vsted[q] == False) Νext[q]= p; Dstace[q] = Dstace[p] +; Equeue(q,K); f (p==(,)) prt p; whle (p!= (X,Y)) prt ext(p); p = ext(p); Παρατηρούµε ότι επισκεπτόµαστε κάθε κόµβο ακριβώς µια φορά. Εποµένως ο χρόνος εκτέλεσης του αλγόριθµου είναι Ο(ΧΥ). 7