Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου"— Μεταγράφημα παρουσίασης:

1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) http://www.corelab.ece.ntua.gr/courses/programming/ 1Νίκος ΠαπασπύρουΠρογραμματισμός Ηλεκτρονικών Υπολογιστών Διαφάνειες παρουσίασης #10 Δομές δεδομένων και πολυπλοκότητα Στοίβες

2 2Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Πολυπλοκότητα(i) u Κόστος της εκτέλεσης ενός αλγορίθμου που επιλύει κάποιο πρόβλημα, συναρτήσει του μεγέθους του προβλήματος l χρόνος: αριθμός υπολογιστικών βημάτων l χώρος: απαιτούμενο μέγεθος μνήμης u Συναρτήσεις πολυπλοκότητας l θετικές και αύξουσες l π.χ. f (n) = n (n-1) / 2

3 3Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Πολυπλοκότητα(ii) u Άνω φράγμα: Ο O( f ) = { g |  c.  n 0.  n>n 0. g(n) < c f (n) } u Κάτω φράγμα: Ω Ω( f ) = { g |  c.  n 0.  n>n 0. g(n) > c f (n) } u Τάξη μεγέθους: Θ Θ( f ) = { g |  c 1, c 2.  n 0.  n>n 0. c 1 < g(n) / f (n) < c 2 } l Γράφουμε g = O( f ) αντί g  O( f ) l π.χ. 5n 2 + 4n – 2n logn + 7 = Θ(n 2 )

4 4Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Πολυπλοκότητα(iii) Ο(1)< Ο(log*n) < O(logn) < O(  n) < O(n) < O(n logn) < O(n 2 ) < O(n 2 log 5 n) < O(n 3 ) <... < Poly < O(2 n ) < O(n!) < O(n n ) < O(2^^n) <... Poly = n O(1) 2^^n η υπερεκθετική συνάρτηση: 2 2 2... 2 (n φορές) και log*n η αντίστροφή της

5 5Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Στοίβες(i) u Last In First Out (LIFO) ό,τι μπαίνει τελευταίο, βγαίνει πρώτο κορυφή (top) βάση

6 6Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Στοίβες(ii) u Αφηρημένος τύπος δεδομένων Ορίζεται ο τύπος stack που υλοποιεί τη στοίβα (ακεραίων αριθμών) l Ορίζονται οι απαραίτητες πράξεις: empty η άδεια στοίβα push προσθήκη στοιχείου στην κορυφή pop αφαίρεση στοιχείου από την κορυφή l Ο τρόπος υλοποίησης των παραπάνω δεν ενδιαφέρει αυτούς που θα τα χρησιμοποιήσουν l Τέτοιοι τύποι λέγονται αφηρημένοι (ΑΤΔ)

7 7Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Στοίβες(iii) u Υλοποίηση με πίνακα const size = 100; type stack = record arr : array [1..size] of integer; top : 1.. size+1 end u Άδεια στοίβα function empty : stack; begin empty.top := 1 end

8 8Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Στοίβες(iv) u Προσθήκη στοιχείου procedure push (var s : stack, data : integer); begin s.arr[s.top] := data; s.top := s.top + 1 end

9 9Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Στοίβες(v) u Αφαίρεση στοιχείου procedure pop (var s : stack; var data : integer; var nonempty : boolean); begin if s.top <= 1 then nonempty := false else begin s.top := s.top - 1; data := s.arr[s.top]; nonempty := true end


Κατέβασμα ppt "ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google