Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Αλγόριθμοι Αναζήτησης
Advertisements

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Διακριτά Μαθηματικά ΙI Δυαδικά Δέντρα Αναζήτησης
Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές
Εισαγωγή στην επιστήμη των υπολογιστών
Διαφάνειες παρουσίασης #5
Γιάννης Σταματίου Μη αποδοτική αναδρομή και η δυναμική προσέγγιση Webcast 8.
Γενική μορφή προγράμματος Pascal
Αλγόριθμοι και Πολυπλοκότητα
Επιλογή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Διαίρει-και-Βασίλευε
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Γιάννης Σταματίου Μερικά προβλήματα μέτρησης
Γιάννης Σταματίου Ακολουθίες και Σειρές
Σχεδίαση αλγορίθμων (2ο μέρος)
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Recursion - Αναδρομή.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Ουρά Προτεραιότητας: Heap
Αλγόριθμοι Ταξινόμησης
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος ( ) Νίκος Παπασπύρου
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
Διάλεξη 8η: Διαγραμματική επίλυση προβλημάτων ελαχίστου κατά την εφαρμογή του γραμμικού προγραμματισμού στη γεωργική παραγωγή 1.Στην περίπτωση των κλάδων.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΑΕΠΠ 3ο Κεφάλαιο Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής 1 Ο Λύκειο Ρόδου.
Παράδειγμα B + -Tree Υποθέτουμε B + -Tree τάξης 3 (α=2, b=3)  Κάθε φύλλο θα έχει 2 ως 3 το πολύ στοιχεία  Κάθε εσωτερικός κόμβος θα έχει 2 ως 3 το πολύ.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Διαφάνειες παρουσίασης Ορθότητα (συνέχεια) Τακτικοί τύποι και τύποι υποπεριοχής Πίνακες.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Αναδρομικές Συναρτήσεις Σύνταξη: RECURSIVE type FUNCTION name1 (variables) RESULT (name2) IMPLICIT NONE Τμήμα δηλώσεων Εκτελέσιμες εντολές END FUNCTION.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
1 Προγραμματισμός Ι Ενότητα 6 : Υποπρογράμματα III Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ Άπληστη Αναζήτηση και Αναζήτηση Α* ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Αρχιτεκτονικη & Γεωμετρια του Παρθενωνα
Δυναμικός Κατακερματισμός
Η Γλώσσα Pascal Εντολή If
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Βελτιστοποίηση σε τρίλιζα Καταδίωξη/διαφυγή
Η Γλώσσα Pascal Υποπρογράμματα
EPL231 – Data Structures and Algorithms
ΓΛΩΣΣΕΣ & ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Δυναμικός Προγραμματισμός
Φοιτητής: Τσακίρης Αλέξανδρος Επιβλέπων: Ευάγγελος Ούτσιος
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
14η Διάλεξη Δέντρα Δυαδικής Αναζήτησης Ε. Μαρκάκης
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Ελαφρύτατες διαδρομές
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Μεταγράφημα παρουσίασης:

Γιάννης Σταματίου Αναδρομή και αναδρομικές σχέσεις Webcast 4

Ακολουθίες Κοιτάξτε τις ακολουθίες που εμφανίζονται στην αριστερή στήλη του πίνακα: a0 = 0, a1 = 1, a2 = 2, a3= 3, …, (φυσικοί αριθμοί) a0 = 1, a1 = 2, a2 = 4, a3 = 8, …, (δυνάμεις του 2) a0 = 1, a1 = 3, a2 = 5, a3= 7, …, (περιττοί φυσικοί αριθμοί) a0 = 0, a1 = 1, a2 = 1, a3= 2, a4= 3, a5= 5, …, (ακολουθία Fibonacci)

Ακολουθίες Κοιτάξτε τις ακολουθίες που εμφανίζονται στην αριστερή στήλη του πίνακα: a0 = 0, a1 = 1, a2 = 2, a3= 3, …, (φυσικοί αριθμοί) a0 = 1, a1 = 2, a2 = 4, a3 = 8, …, (δυνάμεις του 2) a0 = 1, a1 = 3, a2 = 5, a3= 7, …, (περιττοί φυσικοί αριθμοί) a0 = 0, a1 = 1, a2 = 1, a3= 2, a4= 3, a5= 5, …, (ακολουθία Fibonacci) Κοιτάξτε και τη δεξιά στήλη τώρα! Δίνεται ο «νιοστός» όρος της ακολουθίας ως συνάρτηση προηγούμενων όρων μέχρι που φτάνουμε σε δοσμένες τιμές

Ακολουθίες Κοιτάξτε τις ακολουθίες που εμφανίζονται στην αριστερή στήλη του πίνακα: a0 = 0, a1 = 1, a2 = 2, a3= 3, …, (φυσικοί αριθμοί) a0 = 0, an = an- 1 + 1 για n  1 a0 = 1, a1 = 2, a2 = 4, a3 = 8, …, (δυνάμεις του 2) a0 = 1, a1 = 3, a2 = 5, a3= 7, …, (περιττοί φυσικοί αριθμοί) a0 = 0, a1 = 1, a2 = 1, a3= 2, a4= 3, a5= 5, …, (ακολουθία Fibonacci) Κοιτάξτε και τη δεξιά στήλη τώρα! Δίνεται ο «νιοστός» όρος της ακολουθίας ως συνάρτηση προηγούμενων όρων μέχρι που φτάνουμε σε δοσμένες τιμές

Ακολουθίες Κοιτάξτε τις ακολουθίες που εμφανίζονται στην αριστερή στήλη του πίνακα: a0 = 0, a1 = 1, a2 = 2, a3= 3, …, (φυσικοί αριθμοί) a0 = 0, an = an- 1 + 1 για n  1 a0 = 1, a1 = 2, a2 = 4, a3 = 8, …, (δυνάμεις του 2) a0 = 1, an = 2an- 1 για n  1 a0 = 1, a1 = 3, a2 = 5, a3= 7, …, (περιττοί φυσικοί αριθμοί) a0 = 0, a1 = 1, a2 = 1, a3= 2, a4= 3, a5= 5, …, (ακολουθία Fibonacci) Κοιτάξτε και τη δεξιά στήλη τώρα! Δίνεται ο «νιοστός» όρος της ακολουθίας ως συνάρτηση προηγούμενων όρων μέχρι που φτάνουμε σε δοσμένες τιμές

Ακολουθίες Κοιτάξτε τις ακολουθίες που εμφανίζονται στην αριστερή στήλη του πίνακα: a0 = 0, a1 = 1, a2 = 2, a3= 3, …, (φυσικοί αριθμοί) a0 = 0, an = an- 1 + 1 για n  1 a0 = 1, a1 = 2, a2 = 4, a3 = 8, …, (δυνάμεις του 2) a0 = 1, an = 2an- 1 για n  1 a0 = 1, a1 = 3, a2 = 5, a3= 7, …, (περιττοί φυσικοί αριθμοί) a0 = 1, an = an- 1 + 2 για n  1 a0 = 0, a1 = 1, a2 = 1, a3= 2, a4= 3, a5= 5, …, (ακολουθία Fibonacci) Κοιτάξτε και τη δεξιά στήλη τώρα! Δίνεται ο «νιοστός» όρος της ακολουθίας ως συνάρτηση προηγούμενων όρων μέχρι που φτάνουμε σε δοσμένες τιμές

Ακολουθίες Κοιτάξτε τις ακολουθίες που εμφανίζονται στην αριστερή στήλη του πίνακα: a0 = 0, a1 = 1, a2 = 2, a3= 3, …, (φυσικοί αριθμοί) a0 = 0, an = an- 1 + 1 για n  1 a0 = 1, a1 = 2, a2 = 4, a3 = 8, …, (δυνάμεις του 2) a0 = 1, an = 2an- 1 για n  1 a0 = 1, a1 = 3, a2 = 5, a3= 7, …, (περιττοί φυσικοί αριθμοί) a0 = 1, an = an- 1 + 2 για n  1 a0 = 0, a1 = 1, a2 = 1, a3= 2, a4= 3, a5= 5, …, (ακολουθία Fibonacci) a0 = 0, a1=1, an = an- 1 + an- 2 για n  2 Κοιτάξτε και τη δεξιά στήλη τώρα! Δίνεται ο «νιοστός» όρος της ακολουθίας ως συνάρτηση προηγούμενων όρων μέχρι που φτάνουμε σε δοσμένες τιμές

Δυαδικά δέντρα Ένα δυαδικό δέντρο είτε είναι άδειο είτε αποτελείται από ένα διακεκριμένο κόμβο (ρίζα)

Δυαδικά δέντρα Ένα δυαδικό δέντρο είτε είναι άδειο είτε αποτελείται από ένα διακεκριμένο κόμβο (ρίζα) ενωμένο με δύο μικρότερα δέντρα (αριστερό

Δυαδικά δέντρα Ένα δυαδικό δέντρο είτε είναι άδειο είτε αποτελείται από ένα διακεκριμένο κόμβο (ρίζα) ενωμένο με δύο μικρότερα δέντρα (αριστερό και δεξί υποδέντρο)

Δυαδικά δέντρα Ένα δυαδικό δέντρο είτε είναι άδειο είτε αποτελείται από ένα διακεκριμένο κόμβο (ρίζα) ενωμένο με δύο μικρότερα δέντρα (αριστερό και δεξί υποδέντρο) Ορίζεται ένα δέντρο ως συνάρτηση μικρότερων δέντρων μέχρι που φτάνουμε στο κενό δέντρο

Παιχνίδια – ο πύργος του Ανόι from to spare

Παιχνίδια – ο πύργος του Ανόι from to spare procedure moveDisks(n, from, to, spare) if n = 1 then // βασική περίπτωση write(“Move disk from”, from, “to”, to) else moveDisks(n - 1, from, spare, to) write(“Move disk from”, from, “to”, to) moveDisks(n - 1, spare, to, from) end

Παιχνίδια – ο πύργος του Ανόι from to spare procedure moveDisks(n, from, to, spare) if n = 1 then // βασική περίπτωση write(“Move disk from”, from, “to”, to) else moveDisks(n - 1, from, spare, to) write(“Move disk from”, from, “to”, to) moveDisks(n - 1, spare, to, from) end H λύση συντίθεται από δύο υπολύσεις σε μικρότερα προβλήματα (με n – 1 δίσκους)!

Αλγόριθμοι – δυαδική αναζήτηση Εύρεση στοιχείου σε ήδη ταξινομημένη λίστα στοιχείων function binSearch(s, i, j, key) if i > j then // βασική περίπτωση return 0 k  ceil((i+j)/2) if key = s[k] then // το στοιχείο βρέθηκε return k if key < s[k] then // αριστερή υπολίστα j  k – 1 else // δεξιά υπολίστα i  k + 1 return binSearch(s, i, j, key) end

Τέχνη - Escher

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

Αναδρομικοί ορισμοί Ο ορισμός ενός αντικειμένου (ακολουθίας, συνδυαστικής δομής, παιχνιδιού, λύσης σε υπολογιστικό πρόβλημα, έργου τέχνης κλπ.) καλείται αναδρομικός εάν Το αντικείμενο ορίζεται ως συνάρτηση ενός ή περισσοτέρων «μικρότερων» αντικειμένων του ίδιου τύπου, και

Αναδρομικοί ορισμοί Ο ορισμός ενός αντικειμένου (ακολουθίας, συνδυαστικής δομής, παιχνιδιού, λύσης σε υπολογιστικό πρόβλημα, έργου τέχνης κλπ.) καλείται αναδρομικός εάν Το αντικείμενο ορίζεται ως συνάρτηση ενός ή περισσοτέρων «μικρότερων» αντικειμένων του ίδιου τύπου, και Υπάρχει ένα «ελάχιστο» αντικείμενο που ορίζεται απ’ ευθείας χωρίς αναφορά σε μικρότερα αντικείμενα του ίδιου τύπου

Ποια η χρησιμότητα της αναδρομής; Ο πιο φυσικός ορισμός για μια μεγάλη κατηγορία αντικειμένων που παρουσιάζουν «αυτο-ομοιότητα» (π.χ. δυαδικά δέντρα) Οδηγεί σε κομψή (αν και όχι πάντοτε αποδοτική) περιγραφή λύσεων σε υπολογιστικά προβλήματα Συνάγεται απ’ ευθείας από τη δομή του προβλήματος χωρίς να απαιτείται γνώση της δομής της λύσης

Αναδρομή και επανάληψη

Αναδρομή και επανάληψη an a0

Αναδρομή και επανάληψη an a0 a0 an

Αναδρομή και επανάληψη procedure moveDisks(n) for moveno = 1 to Power(2, n) - 1 do begin discno = LS1(moveno) if odd(discno) then MoveDisc(discno, (moveno - 1) mod 3, (moveno + 1) mod 3) else MoveDisc(discno, (moveno + 1) mod 3, (moveno - 1) mod 3) end

Αναδρομή και επανάληψη procedure moveDisks(n) for moveno = 1 to Power(2, n) - 1 do begin discno = LS1(moveno) if odd(discno) then MoveDisc(discno, (moveno - 1) mod 3, (moveno + 1) mod 3) else MoveDisc(discno, (moveno + 1) mod 3, (moveno - 1) mod 3) end procedure moveDisks(n, from, to, spare) if n = 1 then // βασική περίπτωση write(“Move disk from”, from, “to”, to) else moveDisks(n - 1, from, spare, to) write(“Move disk from”, from, “to”, to) moveDisks(n - 1, spare, to, from) end

Αναδρομικές σχέσεις a0 = 0, an = an- 1 + 1 για n  1 a0 = 0, a1=1, an = an- 1 + an- 2 για n  2

Αναδρομικές σχέσεις καί λύσεις a0 = 0, an = an- 1 + 1 για n  1 a0 = 1, an = 2an- 1 για n  1 a0 = 1, an = an- 1 + 2 για n  1 a0 = 0, a1=1, an = an- 1 + an- 2 για n  2 an = n, n  0 an = 2n, n  0 an = 2n + 1, n  0