Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών ...

30
ΤΜΗΜΑ ΜΠΕΣ 1 Διακριτά Μαθηματικά ΙI Αναδρομή Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών Πληροφοριακών & Επικοινωνιακών Συστημάτων Πανεπιστήμιο Αιγαίου e-mail: [email protected]

description

Διακριτά Μαθηματικά Ι I Αναδρομή. Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών Πληροφοριακών & Επικοινωνιακών Συστημάτων Πανεπιστήμιο Αιγαίου e-mail: [email protected]. Αναδρομή. Αναδρομή είναι ο γενικός όρος για τον ορισμό ενός αντικειμένου σε σχέση με τον εαυτό του - PowerPoint PPT Presentation

Transcript of Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών ...

Page 1: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 1

Διακριτά Μαθηματικά ΙIΑναδρομή

Κώστας ΣτεργίουΛέκτορας

Τμήμα Μηχανικών

Πληροφοριακών & Επικοινωνιακών Συστημάτων

Πανεπιστήμιο Αιγαίου

e-mail: [email protected]

Page 2: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 2

Αναδρομή

Αναδρομή είναι ο γενικός όρος για τον ορισμό ενός αντικειμένου σε σχέση με τον εαυτό του

ή με μέρος του εαυτού του αυτό μπορεί να ακούγεται κυκλικό (ατέρμονος βρόγχος),

αλλά δεν είναι απαραίτητα.

Μια επαγωγική απόδειξη δείχνει την αλήθεια του P(n+1) αναδρομικά σε σχέση με το P(n).

Υπάρχουν επίσης αναδρομικοί αλγόριθμοι, ορισμοί, συναρτήσεις, ακολουθίες, σύνολα, και άλλες δομές

Page 3: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 3

Αναδρομικά Ορισμένες Συναρτήσεις

Για μια αριθμητική συνάρτηση (α0,α1,...,αr,...), μια εξίσωση που συσχετίζει το αr για οποιοδήποτε r, με ένα ή περισσότερα από τα αi, i<r, ονομάζεται αναδρομική σχέση

συχνά είναι πιο εύκολο να βρούμε έναν ορισμό μιας συνάρτησης σε μορφή αναδρομικής σχέσης από το να βρούμε μια γενική έκφραση για την τιμή της συνάρτησης στο r

έχοντας την αναδρομική σχέση μπορούμε να προσδιορίσουμε το αr από τα αr-1, αr-2..., να προσδιορίσουμε το αr+1 από τα αr, αr-1..., κ.ο.κ.

με την προϋπόθεση ότι δίνεται η τιμή της συνάρτησης σε ένα ή περισσότερα σημεία για να ξεκινήσει ο υπολογισμός. Αυτές οι δεδομένες τιμές της συνάρτησης ονομάζονται συνοριακές συνθήκες ή βασικές περιπτώσεις

Page 4: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 4

Αναδρομικά Ορισμένες Συναρτήσεις

Μια αριθμητική συνάρτηση μπορεί να περιγραφεί από μια αναδρομική σχέση μαζί με ένα κατάλληλο σύνολο βασικών περιπτώσεων

η συνάρτηση που ορίζεται με αυτόν τον τρόπο ονομάζεται και λύση της αναδρομικής σχέσης

εκτός από τις τιμές της συνάρτησης συχνά θέλουμε να προσδιορίσουμε και μια γενική (μη αναδρομική) έκφραση της λύσης γενικά δεν υπάρχει μέθοδος που να μπορεί να το κάνει αυτό για

όλες τις αναδρομικές σχέσεις

Page 5: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 5

Αναδρομικά Ορισμένες Συναρτήσεις

Απλή περίπτωση: Ένας τρόπος για να οριστεί η συνάρτηση 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.

Page 6: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 6

Αναδρομικά Ορισμένες Συναρτήσεις

Ας υποθέσουμε ότι ορίζουμε την f(n) για όλα τα nℕ αναδρομικά ως:

Ορίζουμε f(0)=3 Για κάθε nℕ, ορίζουμε f(n+1)=2f(n)+3

Ποιες είναι οι τιμές των παρακάτω? f(1)= f(2)= f(3)= f(4)=

9 2145 93

Page 7: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 7

Αναδρομικός Ορισμός Παραγοντικού

Δώστε έναν αναδρομικό ορισμό της συνάρτησης παραγοντικού,

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

Page 8: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 8

Παραδείγματα

Γράψτε αναδρομικούς ορισμούς για τα παρακάτω: i+n (i ακέραιος, n φυσικός) a·n (a πραγματικός, n φυσικός) χρησιμοποιώντας μόνο

πρόσθεση an (a πραγματικός, n φυσικός) χρησιμοποιώντας μόνο

πολλαπλασιασμό ∑0≤i≤n ai (για μια οποιαδήποτε σειρά αριθμών {ai})

∏0≤i≤n ai (για μια οποιαδήποτε σειρά αριθμών{ai})

∩0≤i≤n Si (για μια οποιαδήποτε σειρά συνόλων {Si})

Page 9: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 9

Η σειρά Fibonacci

Η σειρά Fibonacci f(n)≥0 είναι μια διάσημη σειρά που ορίζεται ως εξής:

f0 :≡ 0, f1 :≡ 1, f(n)≥2 :≡ f(n−1) + f(n−2)

Leonardo Fibonacci1170-1250

01 1

2 35 8

13

Page 10: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 10

Επαγωγική Απόδειξη σχετικά με τη σειρά Fibonacci

Θεώρημα fn < 2n.

Απόδειξη με επαγωγή.Βασικές περιπτώσεις: f0 = 0 < 20 = 1

f1 = 1 < 21 = 2 Επαγωγικό βήμα: Υποθέτουμε ότι k<n, fk < 2k. Τότε fn = fn−1 + fn−2 είναι < 2n−1 + 2n−2 < 2n−1 + 2n−1 = 2n.

Page 11: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 11

Αναδρομικά Ορισμένα Σύνολα

Ένα άπειρο σύνολο S μπορεί να οριστεί αναδρομικά, δίνοντας:

i) Ένα μικρό πεπερασμένο σύνολο βασικών στοιχείων του S.

ii) Έναν κανόνα για την κατασκευή νέων στοιχείων του S από προϋπάρχοντα στοιχεία.

iii) Έμμεσα, θεωρούμε ότι το S δεν έχει άλλα στοιχεία εκτός από αυτά.

Παραδείγματα Έστω 3S, και x+yS αν x,yS.Ποιο είναι το σύνολο S?

Έστω 1S, και x+1S αν xS.

Page 12: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 12

Το Σύνολο όλων των Συμβολοσειρών

Ορισμός Δοθέντος ενός αλφάβητου Σ, το σύνολο Σ* όλων των συμβολοσειρών πάνω στο Σ μπορεί να οριστεί αναδρομικά ως:

λ Σ* (λ :≡ “ ”, η κενή συμβολοσειρά)

w Σ* x Σ → wx Σ*

Άσκηση: Αποδείξτε ότι αυτός ο ορισμός είναι ισοδύναμος με τον γνωστό:

N

n

n:

Page 13: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 13

Παραδείγματα Συμβολοσειρών

Δώστε αναδρομικούς ορισμούς για: Τη συνένωση συμβολοσειρών w1·w2. Το μήκος (w) μιας συμβολοσειράς w. Καλά σχηματισμένες προτάσεις προτασιακής λογικής

που περιέχουν T, F, προτασιακές μεταβλητές, και τους τελεστές {¬, , , →, ↔}.

Καλά σχηματισμένες αριθμητικές προτάσεις που μεταβλητές, σταθερές, και τελεστές {+, −, *}.

Page 14: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 14

Δέντρα με Ρίζα

Ορισμός συνόλου δέντρων με ρίζα:i) Κάθε μοναδική κορυφή r είναι ένα δέντρο με ρίζα.

ii) Αν T1, …, Tn είναι ασύνδετα δέντρα με ρίζα με αντίστοιχες ρίζες r1, …, rn, και r είναι ένας κόμβος σε κανένα από τα Ti, τότε ένα δέντρο με ρίζα είναι το {{r,r1},…,{r,rn}}T1…Tn.

iii) Αυτά είναι όλα τα δέντρα με ρίζα.

Page 15: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 15

Δέντρα με Ρίζα

Ο τρόπος συνδυασμού δέντρων με ρίζα για τον σχηματισμό νέων δέντρων με ρίζα…

T1T1

r1

T2T2

r2

TnTn

rn

r

Page 16: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 16

Δυαδικά Δέντρα

Ειδική περίπτωση δέντρων με ρίζα. Ορισμός Δυαδικών Δέντρων (BT):

Το κενό σύνολο είναι ένα BT. Αν T1,T2 είναι ασύνδετα BTs,

τότε e1e2 T1T2 είναι ένα BT, όπου e1 = αν T1 = , και e1 = {(r,r1)} αν T1≠ και έχει ρίζα r1, και παρόμοια για το e2.

Αυτά είναι τα μόνα ΒΤ.Παραδείγματα…

Page 17: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 17

Πλήρη Δυαδικά Δέντρα

Ειδική περίπτωση δυαδικών δέντρων όπου κάθε κορυφή έχει 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.Παραδείγματα…

Page 18: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 18

Δομική Επαγωγή

Η απόδειξη μιας ιδιότητας ενός αναδρομικά ορισμένου αντικειμένου χρησιμοποιώντας μια επαγωγική απόδειξη της οποίας η δομή αντικατοπτρίζει τον ορισμό του αντικειμένου.

Page 19: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 19

Δομική Επαγωγή

Θεώρημα Έστω 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+y S και x,y A . Μια και 3|x και 3|y, έχουμε 3|(x+y), οπότε x+y = n A.

Page 20: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 20

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

Εκτός από την περιγραφή συναρτήσεων και συνόλων, αναδρομικοί ορισμοί μπορούν να χρησιμοποιηθούν και για την περιγραφή αλγορίθμων.

Παράδειγμα Μια διαδικασία για τον υπολογισμό του an.

procedure power(a≠0: real, nℕ)if n = 0 then return 1else return a · power(a, n−1)

Page 21: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 21

Απόδοση Αναδρομικών Αλγόριθμων

Η χρονική πολυπλοκότητα ενός αναδρομικού αλγόριθμου εξαρτάται από το πλήθος των αναδρομικών κλήσεων που κάνει.

Παράδειγμα Ο υπολογισμός του Modular exponentiation σε μια δύναμη n μπορεί να γίνει με log(n) χρόνο αν γίνει σωστά, αλλά με γραμμικό χρόνο αν γίνει λίγο διαφορετικά.

Υπολογίστε το bn mod m, όπουm≥2, n≥0, and 1≤b<m.

Page 22: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 22

Modular Exponentiation Alg. #1

Χρησιμοποιεί το γεγονός ότι bn = b·bn−1 και ότι x·y mod m = x·(y mod m) mod m.

procedure mpower(b≥1,n≥0,m>b ℕ){Returns bn mod m.}if n=0

then return 1 else return (b·mpower(b,n−1,m)) mod m

Αυτός ο αλγόριθμος εκτελεί Θ(n) βήματα!

Page 23: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 23

Modular Exponentiation Alg. #2

Χρησιμοποιεί το γεγονός ότι b2k = bk·2 = (bk)2.

procedure mpower(b,n,m)

if n=0 then return 1else if 2|n

then return mpower(b,n/2,m)2 mod melse return (mpower(b,n−1,m)·b) mod m

Ποια είναι η χρονική πολυπλοκότητα? Θ(log n)

Page 24: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 24

Μια μικρή παραλλαγή

Σχεδόν όμοιος αλλά απαιτεί Θ(n) χρόνο!

procedure mpower(b,n,m)

if n=0 then return 1else if 2|n

then return (mpower(b,n/2,m)· mpower(b,n/2,m)) mod m

else return (mpower(b,n−1,m)·b) mod m

Το πλήθος των αναδρομικών κλήσεων είναι κρίσιμο!

Page 25: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 25

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

Οι αναδρομικοί αλγόριθμοι είναι συχνά πιο εύκολοι στην υλοποίηση από ότι οι επαναληπτικοί…

Όμως (όπως θα δείτε στο Β’ έτος) μπορούν να έχουν προβλήματα υπερβολικής κατανάλωσης μνήμης

Page 26: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 26

Αναδρομική Γραμμική Αναζήτηση

Εδώ δεν υπάρχει κανένα πραγματικό πλεονέκτημα από τη χρήση αναδρομής, μπορεί απλά να υλοποιηθεί με έναν βρόγχο for loc := i to j…

procedure search(a: ακολουθία; i, j: ακέραιοι;x: στοιχείο προς εύρεση)

if ai = x then return i {Το βρήκαμε? Επέστρεψε το!}

if i = j then return 0 {Δεν υπάρχει? Αποτυχία!}

return search(i+1, j, x) {Δοκίμασε το υπόλοιπο διάστημα}

Page 27: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 27

Αναδρομική Δυαδική Αναζήτηση

procedure binarySearch(a, x, i, j) {Βρες το x στην ακολουθία a, ≥i και <j} m := (i + j)/2 {Πήγαινε στο μεσαίο σημείο}

if x = am then return m {Βρέθηκε?}

if x<am i<m {Αν είναι προς τα αριστερά} then return binarySearch(a,x,i,m−1)

else if am<x m<j {Αν είναι προς τα δεξιά}

then return binarySearch(a,x,m+1,j)

else return 0 {Δεν υπάρχουν άλλα στοιχεία, αποτυχία}

Page 28: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 28

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

procedure fibonacci(n N)if n=0

then return 0if n=1

then return 1return fibonacci(n−1)+fibonacci(n−2)

Είναι ο αλγόριθμος αποδοτικός? Έχει πολυωνυμική πολυπλοκότητα στο n?

Πόσες προσθέσεις εκτελούνται?

Page 29: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 29

Ανάλυση του Αλγόριθμου

Θεώρημα Ο προηγούμενος αλγόριθμος για το 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. ■

Page 30: Κώστας Στεργίου Λέκτορας Τμήμα Μηχανικών  Πληροφοριακών & Επικοινωνιακών Συστημάτων

ΤΜΗΜΑ ΜΠΕΣ 30

Ένας καλύτερος Αλγόριθμος

procedure findFib(a,b,m,n){Δοθέντων a=fm−1, b=fm,και m≤n, επέστρεψε το fn}

if m=n then return b

return findFib(b, a+b, m+1, n)

procedure fastFib(n) {Βρες το fn σε Θ(n) βήματα}

if n=0 then return 0

return findFib(0,1,1,n)