300 likes | 536 Views
Διακριτά Μαθηματικά Ι I Αναδρομή. Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών Πληροφοριακών & Επικοινωνιακών Συστημάτων Πανεπιστήμιο Αιγαίου e-mail: konsterg@aegean.gr. Αναδρομή. Αναδρομή είναι ο γενικός όρος για τον ορισμό ενός αντικειμένου σε σχέση με τον εαυτό του
E N D
Διακριτά ΜαθηματικάΙIΑναδρομή Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών Πληροφοριακών & Επικοινωνιακών Συστημάτων Πανεπιστήμιο Αιγαίου e-mail: konsterg@aegean.gr ΤΜΗΜΑ ΜΠΕΣ
Αναδρομή • Αναδρομήείναι ο γενικός όρος γιατον ορισμό ενός αντικειμένου σε σχέση με τονεαυτό του • ή με μέρος του εαυτού του • αυτό μπορεί να ακούγεται κυκλικό (ατέρμονος βρόγχος), αλλά δεν είναι απαραίτητα. • Μια επαγωγική απόδειξηδείχνει την αλήθεια τουP(n+1) αναδρομικάσε σχέση με τοP(n). • Υπάρχουν επίσης αναδρομικοίαλγόριθμοι, ορισμοί, συναρτήσεις, ακολουθίες, σύνολα, και άλλεςδομές ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικά Ορισμένες Συναρτήσεις • Για μια αριθμητική συνάρτηση (α0,α1,...,αr,...), μια εξίσωση που συσχετίζει το αr για οποιοδήποτε r, με ένα ή περισσότερα από τα αi, i<r, ονομάζεται αναδρομική σχέση • συχνά είναι πιο εύκολο να βρούμε έναν ορισμό μιας συνάρτησης σε μορφή αναδρομικής σχέσης από το να βρούμε μια γενική έκφραση για την τιμή της συνάρτησης στο r • έχοντας την αναδρομική σχέση μπορούμε να προσδιορίσουμε το αr από τα αr-1, αr-2..., να προσδιορίσουμε το αr+1 από τα αr, αr-1..., κ.ο.κ. • με την προϋπόθεση ότι δίνεται η τιμή της συνάρτησης σε ένα ή περισσότερα σημεία για να ξεκινήσει ο υπολογισμός. Αυτές οι δεδομένες τιμές της συνάρτησης ονομάζονται συνοριακές συνθήκες ή βασικές περιπτώσεις ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικά Ορισμένες Συναρτήσεις • Μια αριθμητική συνάρτηση μπορεί να περιγραφεί από μια αναδρομική σχέση μαζί με ένα κατάλληλο σύνολο βασικών περιπτώσεων • η συνάρτηση που ορίζεται με αυτόν τον τρόπο ονομάζεται και λύση της αναδρομικής σχέσης • εκτός από τις τιμές της συνάρτησης συχνά θέλουμε να προσδιορίσουμε και μια γενική (μη αναδρομική) έκφραση της λύσης • γενικά δεν υπάρχει μέθοδος που να μπορεί να το κάνει αυτό για όλες τις αναδρομικές σχέσεις ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικά Ορισμένες Συναρτήσεις • Απλή περίπτωση: Ένας τρόπος για να οριστεί η συνάρτησηf:ℕS (για κάθε σύνολοS) ή η σειράan=f(n) είναι να: • Ορίσουμε τοf(0). • Γιαn>0, να ορίσουμε τηνf(n) σε σχέση μεf(0),…,f(n−1). • Παράδειγμα:Ορίστε τη σειράan :≡2nαναδρομικά: • Ορίζουμεa0 :≡1. • Γιαn>0, ορίζουμεan:≡2an-1. ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικά Ορισμένες Συναρτήσεις • Ας υποθέσουμε ότι ορίζουμε τηνf(n) για όλα ταnℕαναδρομικά ως: • Ορίζουμεf(0)=3 • Γιακάθεnℕ, ορίζουμεf(n+1)=2f(n)+3 • Ποιες είναι οι τιμές των παρακάτω? • f(1)= f(2)= • f(3)= f(4)= 9 21 93 45 ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικός Ορισμός Παραγοντικού • Δώστε έναν αναδρομικό ορισμότης συνάρτησης παραγοντικού,F(n) :≡n! :≡ ∏1≤i≤n i = 12…n. • Βασική περίπτωση: F(0) :≡ 1 • Αναδρομικό μέρος: F(n) :≡n F(n−1). • F(1)=1 • F(2)=2 • F(3)=6 ΤΜΗΜΑ ΜΠΕΣ
Παραδείγματα • Γράψτε αναδρομικούς ορισμούς για τα παρακάτω: • i+n (iακέραιος, nφυσικός) • a·n (aπραγματικός, nφυσικός) χρησιμοποιώντας μόνο πρόσθεση • an(aπραγματικός, nφυσικός) χρησιμοποιώντας μόνο πολλαπλασιασμό • ∑0≤i≤nai (για μια οποιαδήποτε σειρά αριθμών {ai}) • ∏0≤i≤nai (για μια οποιαδήποτε σειρά αριθμών{ai}) • ∩0≤i≤n Si (για μια οποιαδήποτε σειρά συνόλων {Si}) ΤΜΗΜΑ ΜΠΕΣ
Η σειρά Fibonacci • Η σειράFibonacci f(n)≥0 είναι μια διάσημη σειρά που ορίζεται ως εξής:f0 :≡ 0, f1 :≡ 1, f(n)≥2 :≡ f(n−1) + f(n−2) 0 1 1 2 3 5 8 13 Leonardo Fibonacci1170-1250 ΤΜΗΜΑ ΜΠΕΣ
Επαγωγική Απόδειξη σχετικά με τη σειρά Fibonacci • Θεώρημαfn < 2n.Απόδειξη με επαγωγή.Βασικές περιπτώσεις: f0 = 0 < 20 = 1f1 = 1 < 21 = 2Επαγωγικό βήμα: Υποθέτουμε ότιk<n, fk < 2k. Τότεfn = fn−1 + fn−2είναι< 2n−1 + 2n−2 < 2n−1 + 2n−1 = 2n. ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικά Ορισμένα Σύνολα • Ένα άπειρο σύνολοSμπορεί να οριστεί αναδρομικά, δίνοντας: • Ένα μικρό πεπερασμένο σύνολοβασικώνστοιχείων τουS. • Έναν κανόνα για την κατασκευή νέων στοιχείων τουSαπό προϋπάρχοντα στοιχεία. • Έμμεσα, θεωρούμε ότι τοSδεν έχει άλλα στοιχεία εκτός από αυτά. ΠαραδείγματαΈστω 3S, καιx+ySανx,yS.Ποιο είναι το σύνολο S? Έστω1S, καιx+1SανxS. ΤΜΗΜΑ ΜΠΕΣ
Το Σύνολο όλων των Συμβολοσειρών • ΟρισμόςΔοθέντος ενός αλφάβητουΣ, το σύνολοΣ*όλων των συμβολοσειρών πάνω στοΣμπορεί να οριστεί αναδρομικά ως:λ Σ* (λ :≡ “”, η κενή συμβολοσειρά) w Σ* x Σ → wx Σ* • Άσκηση: Αποδείξτε ότι αυτός ο ορισμός είναι ισοδύναμος με τον γνωστό: ΤΜΗΜΑ ΜΠΕΣ
Παραδείγματα Συμβολοσειρών • Δώστε αναδρομικούς ορισμούς για: • Τη συνένωση συμβολοσειρώνw1·w2. • Το μήκος(w) μιας συμβολοσειράςw. • Καλά σχηματισμένεςπροτάσεις προτασιακήςλογικής που περιέχουνT, F, προτασιακές μεταβλητές, και τους τελεστές {¬, , , →, ↔}. • Καλά σχηματισμένεςαριθμητικές προτάσεις που μεταβλητές, σταθερές, και τελεστές {+, −, *}. ΤΜΗΜΑ ΜΠΕΣ
Δέντρα με Ρίζα • Ορισμός συνόλουδέντρων με ρίζα: • Κάθε μοναδική κορυφή rείναι ένα δέντρο με ρίζα. • ΑνT1, …, Tnείναι ασύνδετα δέντρα με ρίζαμε αντίστοιχες ρίζεςr1, …, rn, καιrείναι ένας κόμβος σε κανένα από ταTi, τότε ένα δέντρο με ρίζα είναι το {{r,r1},…,{r,rn}}T1…Tn. • Αυτά είναι όλα τα δέντρα με ρίζα. ΤΜΗΜΑ ΜΠΕΣ
Δέντρα με Ρίζα • Ο τρόπος συνδυασμού δέντρων με ρίζα για τον σχηματισμό νέων δέντρων με ρίζα… r … T1 r1 T2 r2 Tn rn ΤΜΗΜΑ ΜΠΕΣ
Δυαδικά Δέντρα • Ειδική περίπτωση δέντρων με ρίζα. • ΟρισμόςΔυαδικών Δέντρων (BT): • Το κενό σύνολο είναι έναBT. • ΑνT1,T2 είναι ασύνδετα BTs, τότεe1e2 T1T2 είναι ένα BT, όπουe1 = ανT1 = , καιe1 = {(r,r1)} ανT1≠ καιέχει ρίζαr1, και παρόμοια για τοe2. • Αυτά είναι τα μόνα ΒΤ. Παραδείγματα… ΤΜΗΜΑ ΜΠΕΣ
Πλήρη Δυαδικά Δέντρα • Ειδική περίπτωση δυαδικών δέντρων όπου κάθε κορυφή έχει 0 ή 2 παιδιά. • Αναδρομικός ορισμόςΠλήρων Δυαδικών Δέντρων(FBT): i) Μια μοναδική κορυφήrείναι έναFBT. Προσέξτε τη διαφορά από τη βασική περίπτωση των ΒΤ. ii) ΑνT1,T2είναι ασύνδετα FBTs, τότεe1e2T1T2είναι ένα FBT, όπουe1 = ανT1 = , καιe1 = {(r,r1)} ανT1≠ καιέχει ρίζαr1, καιομοίως για τοe2. Ίδια με την αναδρομική περίπτωση των ΒΤ! Απλοποιείται ως “ΑνT1,T2είναι ασύνδετα FBTs με ρίζεςr1καιr2, τότε {(r, r1),(r,r2)} T1T2είναι ένα FBT.” i) Αυτά είναι όλα τα FBT. Παραδείγματα… ΤΜΗΜΑ ΜΠΕΣ
Δομική Επαγωγή • Η απόδειξη μιας ιδιότητας ενός αναδρομικά ορισμένου αντικειμένουχρησιμοποιώντας μια επαγωγική απόδειξη της οποίας η δομήαντικατοπτρίζει τον ορισμό του αντικειμένου. ΤΜΗΜΑ ΜΠΕΣ
Δομική Επαγωγή • ΘεώρημαΈστω 3S, καιx+ySανx,yS.ΈστωA = {nℤ+| (3|n)}. ΤότεA=S. Απόδειξη.Θα δείξουμε ότιASκαιSA. • Για να δείξουμεAS, δείξτε [nℤ+ (3|n)]→ nS. • Επαγωγική απόδειξη.ΈστωP(n) :≡ nS. Επαγωγή πάνω στα θετικά πολλαπλάσια του 3. Βάση.n=3, οπότε 3Sαπό τον ορισμό τουS. Βήμα.Δοθέντος P(n), αποδείξτεP(n+3). Από την υπόθεση, nS, και 3S, άρα από τον ορισμό του S, n+3S. • Για να δείξουμεSA: έστωnS, δείξτεnA. • Δομική επαγωγική απόδειξη.ΈστωP(n):≡nA. Βάση. 3S. Μια και 3|3, 3A.Αναδρομικό βήμα.x,y S,n=x+ySκαιx,y A . Μια και 3|xκαι 3|y, έχουμε 3|(x+y), οπότεx+y= n A. ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικοί Αλγόριθμοι • Εκτός από την περιγραφή συναρτήσεων και συνόλων, αναδρομικοί ορισμοί μπορούν να χρησιμοποιηθούν και για την περιγραφήαλγορίθμων. • ΠαράδειγμαΜια διαδικασία για τον υπολογισμό τουan. procedurepower(a≠0: real, nℕ) ifn = 0 then return 1elsereturna · power(a, n−1) ΤΜΗΜΑ ΜΠΕΣ
Απόδοση Αναδρομικών Αλγόριθμων • Η χρονική πολυπλοκότηταενός αναδρομικού αλγόριθμουεξαρτάται από το πλήθος των αναδρομικών κλήσεων που κάνει. • ΠαράδειγμαΟ υπολογισμός του Modular exponentiationσε μια δύναμηnμπορεί να γίνει με log(n) χρόνο αν γίνει σωστά, αλλά με γραμμικό χρόνο αν γίνει λίγο διαφορετικά. • Υπολογίστε τοbnmodm, όπουm≥2, n≥0, and 1≤b<m. ΤΜΗΜΑ ΜΠΕΣ
Modular Exponentiation Alg. #1 • Χρησιμοποιεί το γεγονός ότιbn= b·bn−1και ότιx·ymod m = x·(ymodm) mod m. procedure mpower(b≥1,n≥0,m>b ℕ) {Returns bnmod m.}ifn=0 then return 1 elsereturn (b·mpower(b,n−1,m)) modm • Αυτός ο αλγόριθμος εκτελείΘ(n) βήματα! ΤΜΗΜΑ ΜΠΕΣ
Modular Exponentiation Alg. #2 • Χρησιμοποιεί το γεγονός ότιb2k = bk·2 = (bk)2. procedurempower(b,n,m) if n=0 then return 1else if 2|nthenreturnmpower(b,n/2,m)2modmelse return (mpower(b,n−1,m)·b) modm • Ποια είναι η χρονική πολυπλοκότητα? Θ(log n) ΤΜΗΜΑ ΜΠΕΣ
Μια μικρή παραλλαγή • Σχεδόν όμοιος αλλά απαιτείΘ(n) χρόνο! procedurempower(b,n,m) if n=0 then return 1else if 2|nthenreturn (mpower(b,n/2,m)·mpower(b,n/2,m)) modmelse return (mpower(b,n−1,m)·b) modm Το πλήθος των αναδρομικών κλήσεων είναι κρίσιμο! ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικοί Αλγόριθμοι • Οι αναδρομικοί αλγόριθμοι είναι συχνά πιο εύκολοι στην υλοποίηση από ότι οι επαναληπτικοί… • Όμως (όπως θα δείτε στο Β’ έτος)μπορούν να έχουν προβλήματα υπερβολικής κατανάλωσης μνήμης ΤΜΗΜΑ ΜΠΕΣ
Αναδρομική Γραμμική Αναζήτηση • Εδώ δεν υπάρχει κανένα πραγματικό πλεονέκτημα από τη χρήση αναδρομής, μπορεί απλά να υλοποιηθεί με έναν βρόγχοforloc := i to j… proceduresearch(a: ακολουθία; i, j: ακέραιοι;x: στοιχείο προς εύρεση) if ai = x then returni {Το βρήκαμε? Επέστρεψε το!}ifi = j then return 0 {Δεν υπάρχει? Αποτυχία!}returnsearch(i+1, j, x) {Δοκίμασε το υπόλοιπο διάστημα} ΤΜΗΜΑ ΜΠΕΣ
Αναδρομική Δυαδική Αναζήτηση procedurebinarySearch(a, x, i, j) {Βρες τοxστην ακολουθίαa, ≥iκαι <j}m := (i + j)/2 {Πήγαινε στο μεσαίο σημείο}if x = amthen returnm{Βρέθηκε?}ifx<am i<m{Αν είναι προς τα αριστερά}then returnbinarySearch(a,x,i,m−1)else ifam<x m<j{Αν είναι προς τα δεξιά}then return binarySearch(a,x,m+1,j)elsereturn 0{Δεν υπάρχουν άλλα στοιχεία, αποτυχία} ΤΜΗΜΑ ΜΠΕΣ
Αναδρομικός Αλγόριθμος Fibonacci • procedurefibonacci(n N)ifn=0 then return 0ifn=1 then return 1returnfibonacci(n−1)+fibonacci(n−2) • Είναι ο αλγόριθμος αποδοτικός? • Έχει πολυωνυμική πολυπλοκότητα στοn? • Πόσες προσθέσεις εκτελούνται? ΤΜΗΜΑ ΜΠΕΣ
Ανάλυση του Αλγόριθμου • ΘεώρημαΟ προηγούμενος αλγόριθμος για τοfibonacci(n) εκτελείfn+1−1 προσθέσεις.ΑπόδειξηΜε δομική επαγωγή στοn, βασισμένη στην αναδρομική περιγραφή του αλγόριθμου. • Βάση:fibonacci(0) εκτελεί 0 προσθέσεις, καιf0+1−1 = f1 − 1 = 1 − 1 = 0. Παρόμοια, fibonacci(1) εκτελεί 0 προσθέσεις, καιf1+1−1 = f2−1 = 1−1 = 0. • Βήμα: For n>1, από την υπόθεση, fibonacci(n−1) καιfibonacci(n−2) εκτελούνfn−1 καιfn−1−1 προσθέσεις, καιfibonacci(n) προσθέτειάλλη μια, με σύνολοfn−1+ fn−1−1+1 = fn+fn−1−1 = fn+1−1. ■ ΤΜΗΜΑ ΜΠΕΣ
Ένας καλύτερος Αλγόριθμος • procedurefindFib(a,b,m,n){Δοθέντωνa=fm−1, b=fm,καιm≤n, επέστρεψε τοfn}ifm=nthen returnbreturnfindFib(b, a+b, m+1, n) • procedurefastFib(n) {Βρες τοfnσεΘ(n) βήματα}ifn=0 then return 0returnfindFib(0,1,1,n) ΤΜΗΜΑ ΜΠΕΣ