Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κατηγορηματικός Λογισμός
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Γλώσσα C & Unix Τμήμα Πληροφορικής, ΑΠΘ B’ εξάμηνο
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι18/10/2010.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Δομές Δεδομένων - Δυαδικά Δένδρα (binary trees)
Σχεδίαση Αλγορίθμων Προτεινόμενα βιβλία:
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
Δυαδικά Δένδρα Αναζήτησης, Δένδρα AVL
Διακριτά Μαθηματικά ΙI Αναδρομή
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Σχεδίαση αλγορίθμων (2ο μέρος)
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Recursion - Αναδρομή.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
1 Ολυμπιάδα Πληροφορικής Μάθημα 2. 2 Στόχοι μαθήματος Αριθμητικοί– Λογικοί Τελεστές Η εντολή IF.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
ΣΥΝΑΡΤΗΣΕΙΣ.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
ΗΥ302 Διδακτική της Πληροφορικής Η γλώσσα προγραμματισμού LOGO Writer Ομάδα Εργασία: Αλεβίζου Βασιλική (Α.Μ.:1029) Κοφφινά Ιωάννα (Α.Μ.:1035) Τριανταφυλλίδου.
Ε. ΠετράκηςΣτοίβες, Ουρές1 Στοίβες  Στοίβα: περιορισμένη ποικιλία λίστας  τα στοιχεία μπορούν να εισαχθούν ή να διαγραφούν μόνο από μια άκρη : λίστες.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Αλγόριθμοι Ταξινόμησης
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Πέμπτη, 2 Απριλίου 2015Τμ.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 8-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: 2-3 Δένδρα, Υλοποίηση και πράξεις Β-δένδρα B-Δένδρα.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Δομές Δεδομένων και Αρχεία Ενότητα 7: Η δομή Στοίβα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
Δομές Δεδομένων και Αρχεία
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
1 Προγραμματισμός Ι Ενότητα 6 : Υποπρογράμματα III Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Διερεύνηση γραφήματος
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Η Γλώσσα Pascal Υποπρογράμματα
EPL231 – Data Structures and Algorithms
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ισορροπημένα Δένδρα Μπορούμε να επιτύχουμε χρόνο εκτέλεσης
Δομές Αναζήτησης Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε στοιχείο έχει ένα κλειδί από ολικά διατεταγμένο σύνολο Θέλουμε να υποστηρίξουμε δύο.
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μεταγράφημα παρουσίασης:

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

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Αναδρομή Βασική έννοια στα Μαθηματικά και στην Πληροφορική. Παράδειγμα: αναδρομικός ορισμός του παραγοντικού ενός μη αρνητικού ακεραίου: 0! = 1 n! = n  (n-1)! , n > 0 Στην πληροφορική η αναδρομή χρησιμοποιείται σαν εργαλείο για τον ορισμό ενός ΑΤΔ, σαν μέθοδος σχεδιασμού αλγορίθμων και σαν τεχνική προγραμματισμού. Στον προγραμματισμό η αναδρομή εμφανίζεται με την κλήση ενός υποπρογράμματος από τον εαυτό του. Ένα αναδρομικό υποπρόγραμμα αποτελείται από: ένα βήμα διακοπής, όπου ορίζεται η εκτέλεση του υποπρογράμματος για κάποιες “μικρές ”τιμές των παραμέτρων του, και ένα αναδρομικό βήμα, κατά το οποίο η εκτέλεση του υποπρογράμματος ορίζεται ως συνδυασμός κλήσεων του υποπρογράμματος σε άλλες “μικρότερες” τιμές των παραμέτρων. ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

Παράδειγμα αναδρομικής διαδικασίας int factorial ( int n ) { if n == 0 return 1; else return n  factorial(n-1); } 6 2 Εκτέλεση factorial(3) return 3  factorial(2); 1 Εκτέλεση factorial(2) return 2  factorial(1); 2 Εκτέλεση factorial(1) return 1  factorial(0); 1 1 1 Εκτέλεση factorial(0) return 1 ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Υλοποίηση αναδρομής Σε κάθε κλήση οποιασδήποτε συνάρτησης ένα σύνολο από λέξεις (stack frame) φυλάσσεται σε μια στοίβα, από όπου μπορεί να ανασυρθεί. Όταν μια συνάρτηση διακόψει την εκτέλεσή της με την κλήση μιας άλλης συνάρτησης οι παράμετροι της συνάρτησης, η διεύθυνση επιστροφής και οι τοπικές μεταβλητές της καλούσας συνάρτησης φυλάσσονται μέσα στη στοίβα του προγράμματος. Έτσι όταν η κληθείσα συνάρτηση τερματίσει το περιβάλλον την καλούσας συνάρτησης ανασύρεται από τη στοίβα για να συνεχιστεί κανονικά η εκτέλεσή της. Αφού κάθε κλήση μιας διαδικασίας εκτελείται στο δικό της περιβάλλον, είναι επιτρεπτή και η κλήση συναρτήσεων από τον εαυτό τους (αναδρομή). ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Υλοποίηση αναδρομής int f(int x, int y) { int a; if ( term_cond ) return ...; a = .....; return g(a); } int g(int z) { int p,q; p = ...; q = ...; return f(p,q); ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

Αφαίρεση της αναδρομής Η χρήση της αναδρομής επιτρέπει την επίλυση πολύπλοκων προβλημάτων με άμεσο και σαφή τρόπο. Συχνά όμως υστερεί από άποψη αποδοτικότητας. Η αφαίρεση της αναδρομής από μια συνάρτηση, δηλαδή, η μετατροπή της σε επαναληπτική συνάρτηση χωρίς αναδρομή, είναι δυνατή (κάτω από κάποιες συνθήκες). Συχνά προϋποθέτει τη χρήση κάποιων βοηθητικών δομών (π.χ. στοίβα ή ουρά). ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Αναδρομή σε δένδρα Να γράψετε αναδρομική διαδικασία η οποία να τυπώνει τα στοιχεία ενός ΔΔΑ σε αύξουσα σειρά. Προφανώς ο αλγόριθμος έχει ως εξής: Αν το δένδρο δεν είναι κενό, τύπωσε αναδρομικά τα στοιχεία του αριστερού υποδένδρου, το στοιχείο της ρίζας και αναδρομικά, τα στοιχεία του δεξιού υποδένδρου. Χρησιμοποιούμε τη δομή   typedef struct NODE{ int val; struct NODE *left; struct NODE *right; } node; και υποθέτουμε πως ένα δένδρο είναι υλοποιημένο ως δείκτης στη ρίζα, δηλαδή, έχει τύπο *node. ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Η διαδικασία Increasing(Node *q){ if (q != null) Increasing(q -> left); print q -> val; Increasing(q -> right); } 1 7 8 3 6 9 p p1 p3 p2 p4 p5 ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Ορθότητα Η ορθότητα της διαδικασίας αποδεικνύεται με επαγωγή. Έστω Π(n) η πρόταση: Η διαδικασία Increasing(p), όπου p δείκτης σε δένδρο με n κόμβους, τυπώνει τα στοιχεία του δένδρου σε αύξουσα σειρά. Βασική Περίπτωση: Για n = 0, p = NULL, και η διαδικασία τερματίζει. Υπόθεση της Επαγωγής: Ας υποθέσουμε ότι η πρόταση είναι ορθή για κάθε n<k. Βήμα της επαγωγής: Για n = k > 0 η διαδικασία εκτελεί Increasing(p->left); print p->val; Increasing(p->right) Προφανώς τα δένδρα που δείχνονται από τους δείκτες p->left και p->right έχουν λιγότερους από k κόμβους. ´ Επομένως, από την υπόθεση της επαγωγής, οι Increasing(p->left) και Increasing(p->right) θα τυπώσουν τα στοιχεία τους σε αύξουσα σειρά. Αφού επίσης, ισχύει ότι στοιχεία του δένδρου στοιχεία του δένδρου p->left p->right το ζητούμενο έπεται. < p->val < ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

Παράδειγμα της εκτέλεσης Output 1 3 6 7 8 9 Inc(NULL); print 1; Inc (p3); print 3; Inc(NULL); Inc(p1); print 6; Inc(p2); Inc(p) Inc(NULL); print 7; Inc (p4); print 8; Inc(p5); Inc(NULL); print 9; ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

Αφαίρεση της αναδρομής Να γράψετε μη-αναδρομική διαδικασία η οποία να τυπώνει τα στοιχεία ενός ΔΔΑ σε αύξουσα σειρά. Για να το πετύχετε μπορείτε να χρησιμοποιήσετε στοίβες. Η βασική ιδέα είναι η εξής: Εφόσον το δένδρο δεν είναι κενό προχωρούμε προς τα αριστερά φυλάγοντας τους κόμβους από τους οποίους περνούμε σε μία στοίβα. Όταν δεν μπορούμε να προχωρήσουμε άλλο ανασύρουμε τον κόμβο κορυφής της στοίβας, τυπώνουμε το στοιχείο του, και επαναλαμβάνουμε την ίδια διαδικασία στο δεξιό του παιδί. Yποθέτουμε την ύπαρξη υλοποίησης στοίβας και συγκεκριμένα των πράξεων, MakeEmpty, IsEmpty, Pop και Push. ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι

Η μη-αναδρομική διαδικασία Increasing2(node *p){ stack S; MakeEmpty(S); while (p != NULL OR !IsEmpty(S))   if (p != NULL) Push(p,S); p = p ->left;   else p = Pop(S); print p->val; p = p->right; } ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι