Θέματα Μεταγλωττιστών

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Θέματα Μεταγλωττιστών"

Transcript

1 Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 3 η : Ενδιάμεση Αναπαράσταση/ SSA Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

2 Ενδιάμεση Αναπαράσταση (IR) Η ενδιάμεση αναπαράσταση αποθηκεύει τη συγκεντρωμένη πληροφορία από την ανάλυση ενός προγράμματος Από την ενδιάμεση αναπαράσταση ξεκινάει η παραγωγή τελικού κώδικα Σημαντικός στόχος του σχεδιαστή ενός μεταγλωττιστή αποτελεί η ανεξαρτητοποίηση του εμπρόσθιου από το οπίσθιο τμήμα με τη βοήθεια μιας ισχυρής αλλά ευέλικτης ενδιάμεσης αναπαράστασης

3 Μορφές IR Γραμμικές αναπαραστάσεις Πλησιέστερα στον τελικό κώδικα Δύσκολες για βελτιστοποίηση Αναπαραστάσεις γραφημάτων Πλησιέστερα στον αρχικό κώδικα Πιο ευέλικτες για βελτιστοποίηση SSA Ουσιαστικά γραμμική αναπαράσταση Καλή για βελτιστοποίηση

4 Παράδειγμα Αρχικός κώδικας: if (x>y) a=a+3; else a=a-2; b=a; Τετράδες: 1: <=,x,y,5 2: +,a,3,$1 3: :=,$1,-,a 4: jump,-,-,7 5: -,a,2,$2 6: :=,$2,-,a 7: :=,a,-,b x > AST: y a if = a stmt + 3 a = a b - = 2 a SSA: if (x>y) a1:=a+3 else a2:=a-2 a3:=φ(a1,a2) b:=a3

5 Εισαγωγή στημορφή SSA Ένα πρόγραμμα βρίσκεται σε μορφή SSA (Static Single-Assignment), εάν και μόνο εάν: Κάθε μεταβλητή ορίζεται στατικά ακριβώς μία φορά, και Κάθε χρήση μεταβλητής ακολουθεί πάντα τον ορισμό της

6 Γιατί SSA; Αποτελεί μια κοινή βάση για την επίλυση πολλών κλασικών προβλημάτων ανάλυσης ροής δεδομένων Ενσωματώνει ροή ελέγχου και ροή δεδομένων στην ίδια δομή Η μορφή SSA κατασκευάζεται και συντηρείται εύκολα Πολλοί αλγόριθμοι ανάλυσης ροής δεδομένων έχουν χαμηλότερη πολυπλοκότητα μεssaαπόό,τιμεast

7 Στατικός Ορισμός Μεταβλητών Κάθε μεταβλητή έχει μόνο έναν ορισμό (δηλαδή ανάθεση τιμής) στον κώδικα Οορισμόςαυτόςμπορείναβρίσκεταισε βρόχο, κι έτσι να εκτελείται πολλές φορές Άρα στην ουσία μια μεταβλητή ορίζεται δυναμικά πολλές φορές

8 Ορισμοί και Μονοπάτια Ελέγχου Κάθεμεταβλητήπρέπειναέχειέναμοναδικό ορισμό σε κάθε σημείο χρήσης της(reaching definition) Όταν δύο μονοπάτια συναντώνται, εισάγεται μια ειδική συνάρτηση φ(), η οποία συνδέει τους διαφορετικούς ορισμούς μιας μεταβλητής στον ένα μοναδικόορισμόπουαπαιτείημορφήssa

9 Παράδειγμα: CFG a = a = = a+5 = a+5 a = Πολλαπλοί Ορισµοί Χρήσης = a+5 Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

10 Παράδειγμα: Μορφή SSA a 1 = a 3 = = a 1 +5 a 4 = φ(a 1,a 3 ) a 2 = = a 2 +5 = a 4 +5 Μοναδικός Ορισµός Χρήσης Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

11 Συναρτήσεις φ() Ένα όρισμα μιας συνάρτησης φ() αποτελεί τον ορισμό χρήσης από το αντίστοιχο μονοπάτι Η σειρά των ορισμάτων μιας συνάρτησης φ() είναι σημαντική για να ξέρουμε από ποιο μονοπάτι προέρχεται ο ορισμός Στην ουσία μια συνάρτηση φ() επιλέγει ένα από τα ορίσματά της, ανάλογα με το μονοπάτι που οδήγησε σε αυτήν

12 Αποδοτικότητα της Μορφής SSA Use-Def chains: Πολλές χρήσεις (uses) προς πολλούς ορισμούς (defs) Κόστος αναπαράστασης Δυσκολία διαχείρισης a = a a a = a a = Peking University

13 Αποδοτικότητα της Μορφής SSA Το πλήθος των ακμών μειώθηκεαπό9σε6 Η συνάρτηση φ() απότελεί ορισμό (def) και τα ορίσματά της απότελούν χρήσεις(uses) Πολλές χρήσεις προς έναν ορισμό Κάθε ορισμός είναι α- ποκλειστικός για όλες τις χρήσεις του a = a a = a = φ(a,a,a) a a a = Peking University

14 Μετονομασία Τιμών Η αναπαράσταση των ακμών usedef δεν είναι πια απαραίτητη a 1 = a 2 = a 3 = a 4 = φ(a 1,a 2,a 3 ) a 4 a 4 a 4 Peking University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

15 Μορφή SSA και Σημεία Σύγκλισης Ροής Ελέγχου ΕίναιαυτόςοκώδικαςσεμορφήSSA; Όχι, υπάρχουν δύο ορισμοί για τη χρήση του a στο μπλοκ B4 (στα μπλοκb1καιb3) Πώς μετατρέπεται ο κώδικας σε μορφή SSA; Δημιουργούμε δύο εκδοχές για το a, μίαστοb1καιμίαστοb3 B3 B1 B2 b M[x] a 0 a b B4 if b<4 c a + b Peking University

16 Μορφή SSA και Σημεία Σύγκλισης Ροής Ελέγχου Ποια εκδοχή του a χρησιμοποιούμε τώραστομπλοκb4; Εισάγουμε τη συνάρτηση φ() η οποία κατά κάποιον τρόπο ξέρει από ποιο μονοπάτι φτάσαμε στο μπλοκ B4: a2,αν φτάσαμε από το Β3 φ a2,a1 a1,αν φτάσαμε από το Β2 B3 B1 B2 a2 b B4 b M[x] a1 0 if b<4 c a? + b Peking University

17 Μορφή SSA και Σημεία Σύγκλισης Ροής Ελέγχου Ποια εκδοχή του a χρησιμοποιούμε τώραστομπλοκb4; Εισάγουμε τη συνάρτηση φ() η οποία κατά κάποιον τρόπο ξέρει από ποιο μονοπάτι φτάσαμε στο μπλοκ B4: a2,αν φτάσαμε από το Β3 φ a2,a1 a1,αν φτάσαμε από το Β2 B3 B1 a2 b B4 B2 b M[x] a1 0 if b<4 a3 φ(a2,a1) c a3 + b Peking University

18 Παράδειγμα Βρόχου a 0 b a+1 c c+b a b*2 if a < N return Σημείωση: Μόνο τα a και c έχουν χρήση στο σώμα του βρόχου πριν το νέο ορισμό τους. Το b ορίζεται εκ νέου στην αρχή του σώματος του βρόχου! a1 0 a3 φ(a1,a2) b1 φ(b0,b2) c2 φ(c0,c1) b2 a3+1 c1 c2+b2 a2 b2*2 if a2 < N return Peking University Η φ(b0,b2) δε χρειάζεται, αφού δεν υπάρχει χρήση του b0. Όμως η φάση εισαγωγής των συναρτήσεων φ() αυτό δεν το γνωρίζει. Άχρηστες συναρτήσεις αφαιρούνται από τη φάση απαλοιφής άχρηστου κώδικα.

19 Υλοποίηση Συναρτήσεων φ() Πώς υλοποιούμε μια συνάρτηση φ() που γνωρίζει ποιο μονοπάτι ελέγχου ακολουθείται; Απάντηση 1: Δεν την υλοποιούμε!! Η συνάρτηση φ() χρησιμοποιείται μόνο για να συνδέσει χρήσεις με ορισμούς κατά τη φάση της βελτιστοποίησης, αλλά δεν υλοποιείται. Απάντηση 2: Αν πρέπει να εκτελέσουμε μια συνάρτηση φ(), μπορούμε να την υλοποιήσουμε με εισαγωγή εντολώνmoveσεόλαταμονοπάτια.

20 Εισαγωγή Συναρτήσεων φ() Μπορούμε να εισάγουμε μια συνάρτηση φ() για κάθε μεταβλητή σε κάθε σημείο σύγκλισης του γράφου ροής ελέγχου (CFG). Αλλά αυτό δεν είναι και η καλύτερη ιδέα. Ποια θα πρέπει να είναι τα κριτήριά μας για να εισάγουμε μια συνάρτηση φ() για κάποια μεταβλητή a σε κάποιονκόμβοzτουcfg; Διαισθητικά, θα πρέπει να εισάγουμε μια συνάρτηση φ() εάν υπάρχουν δύο ορισμοί της μεταβλητής a που φτάνουν στον κόμβο z μέσα από διαφορετικά μονοπάτια.

21 Η Απλοϊκή Μέθοδος Απλή εισαγωγή μιας συνάρτησης φ() σε κάθε σημείο σύγκλισης του CFG Αλλά αυτό δεν είναι αποδοτικό εισάγουμε υπερβολικά πολλές άχρηστες συναρτήσειςφ()! Ποιος είναι καλός αλγόριθμος εισαγωγής μόνο των χρήσιμων συναρτήσεων φ();

22 Κριτήριο Σύγκλισης Μονοπατιών Εισαγωγή μιας συνάρτησης φ() για μια μεταβλητή a σε κάποιον κόμβο z, εάν είναι αληθείς όλες οι παρακάτω συνθήκες: 1. Υπάρχει μπλοκ x όπου ορίζεται η μεταβλητή a 2. Υπάρχεικαιάλλομπλοκy xπουορίζειτηνa 3. ΥπάρχειμηκενόμονοπάτιPxzαπότοxστοz 4. ΥπάρχειμηκενόμονοπάτιPyzαπότοyστοz 5. ΤαμονοπάτιαPxzκαιPyzδενέχουνκοινούςκόμβουςπέρα απότονz 6. ΟκόμβοςzδενεμφανίζεταικαισταδύομονοπάτιαPxzκαι Pyzπριντοτέλοςτους,αλλάμπορείναεμφανίζεταισεένα απόταδύο. Ο κόμβος έναρξης θεωρείται ότι περιέχει ορισμό για κάθε μεταβλητή.

23 Επαναληπτικό Κριτήριο Σύγκλισης Μονοπατιών Εφόσον μια συνάρτηση φ() αποτελεί και αυτή ορισμό της μεταβλητής a, το κριτήριο σύγκλισης θα πρέπει να εφαρμόζεται επαναληπτικά: όσο υπάρχουν κόμβοι x, y, z που ικανοποιούν τις συνθήκες 1-6 και ο z δεν περιέχει συνάρτηση φ()γιατημεταβλητήa επανάλαβεεισαγωγήa φ(a,a,,a)στονκόμβοz Ο αλγόριθμος είναι υπερβολικά ακριβός, εφόσον απαιτεί την εξέταση κάθε τριάδας κόμβων x, y, z και κάθε μονοπατιούαπότονxστονy. Μπορούμε καλύτερα;

24 Η Ιδέα των Συνόρων Κυριαρχίας ιαισθητικά: bbn a bb1 a Μπλοκ κυριαρχούµενα από το bb1 Σύνορο µεταξύ κυριαρχίας και µη-κυριαρχίας (Σύνορο Κυριαρχίας) Peking University

25 Σύνορα Κυριαρχίας (Dominance Frontiers) Το σύνορο κυριαρχίας DF(x) ενός κόμβου x είναι το σύνολο όλων των κόμβων z τέτοιων ώστε το x κυριαρχεί κάποιον πρόγονο του z, χωρίς αυστηρή κυριαρχίατουz. Εάν το x κυριαρχεί το y και x y, τότε λέμε ότιτοx κυριαρχείαυστηρά τοy

26 Υπολογισμός του Συνόρου Κυριαρχίας ιαισθητικά: Ποιο είναι το σύνορο κυριαρχίας του κόµβου 5; 1. Εύρεση περιοχής κυριαρχίαςτουκόµβου 5: {5, 6, 7, 8} 2. Εύρεση προορισµών των ακµών που φεύγουν από την περιοχή κυριαρχίας τουκόµβου 5 Προορισµοί που αποτελούν το σύνορο κυριαρχίας του κόµβου 5: DF(5) = { 4, 5, 12, 13} Γιατί ο κόµβος 5 βρίσκεται στο DF(5); Peking University

27 Αλγόριθμος Μετατροπής σε SSA Σε γενικές γραμμές, η μετατροπή ενός κώδικασεμορφήssaγίνεταισετρίαβήματα: Βήμα 1. Ξεκινώντας από το CFG, βρίσκουμε τα σύνορα κυριαρχίας όλων των κόμβων. Βήμα 2. Χρησιμοποιώντας τα σύνορα κυριαρχίας, καθορίζουμε τις θέσεις όπου θα εισαχθούν συναρτήσεις φ() για κάθε μεταβλητή του προγράμματος. Βήμα 3. Μετονομάζουμε τις μεταβλητές, αντικαθιστώντας κάθε αναφορά μιας μεταβλητής V με την κατάλληλη δεικτοδοτούμενη αναφορά μιας νέαςμεταβλητήςv i

28 Γράφος Ροής Ελέγχου (Control Flow Graph) CFG = (V, E), όπου V οι κόμβοι και Ε οι ακμές Το σύνολο V περιέχει και τους ειδικούς κόμβους START και END: Κάθε κόμβος είναι προσβάσιμος από τον κόμβο START Ο κόμβος END είναι προσβάσιμος από κάθε κόμβο του CFG. ΟκόμβοςSTARTδενέχειπρογόνους ΟκόμβοςENDδενέχειαπογόνους

29 Δέντρο Κυριαρχίας (Dominator Tree) Αν ο κόμβος X υπάρχει σε κάθε μονοπάτι μεταξύ START και Y, τότε ο X κυριαρχεί τονy. Η σχέση κυριαρχίας είναι ανακλαστική και μεταβατική. idom(y): άμεσος κυρίαρχος τουy Δέντρο Κυριαρχίας ΟκόμβοςSTARTαποτελείτηρίζα Κάθε κόμβος Υ εκτός του START έχει γονέα τον κόμβο idom(y)

30 Παράδειγμα Δέντρου Κυριαρχίας START START a b c d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

31 Παράδειγμα Δέντρου Κυριαρχίας START START a a b c d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

32 Παράδειγμα Δέντρου Κυριαρχίας START START a a b c b c d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

33 Παράδειγμα Δέντρου Κυριαρχίας START START a a b c b c d d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

34 Παράδειγμα Δέντρου Κυριαρχίας START START a a END b c b c d d CFG END DT Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

35 Παράδειγμα Συνόρων Κυριαρχίας START START a a END b c b c d DT d CFG END DF(c) =? DF(a) =? Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

36 Παράδειγμα Συνόρων Κυριαρχίας START START a a END b c b c d DT d CFG END DF(c) = {d} DF(a) =? Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

37 Παράδειγμα Συνόρων Κυριαρχίας START START a a END b c b c d DT d CFG END DF(c) = {d} DF(a) = {END} Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

38 Υπολογισμός Συνόρων Κυριαρχίας Σύνορο κυριαρχίας DF(X) του κόμβου X Σχέση 1: DF(X) ={Y P Pred(Y): X domp and X!sdomY } Σχέση 2: DF(X) = DF local (X) Z Παιδιά(X) DF up (Z) DF local (X) = {Y Παιδιά(X) X!sdomY} = {Y Παιδιά(X) idom(y) X} DF up (Z) = {Y DF(Z) idom(z)!sdomy}

39 Υπολογισμός Συνόρων Κυριαρχίας Γιατί οι προηγούμενες σχέσεις 1 και 2 είναι ισοδύναμες; Είναιεύκολοναπάμεαπότησχέση1στησχέση2. Άρα πρέπει να δείξουμε ότι η σχέση 2 βρίσκει κάθε κόμβο του DF(X). Έστω Y DF(X) και U->Y ακμή τέτοια, ώστεοχκυριαρχεί τον U αλλά δεν κυριαρχεί αυστηρά τονy. ΑνU=X,τότεY DF local (X) ΑνU X,τότευπάρχειμονοπάτιμεταξύΧκαιUστοΔέντρο Κυριαρχίας κάτι που σημαίνει ότι υπάρχει παιδί Ζ του Χ το οποίονακυριαρχείτονu. ΟZ δενκυριαρχείαυστηράτονυ, επειδήοχδενκυριαρχείαυστηράτονy.άραy DF up (Z).

40 Συναρτήσεις φ() και Σύνορο Κυριαρχίας Διαισθητικά καταλαβαίνουμε ότι η σχέση Y DF(X) σημαίνει: ΟY έχει πολλαπλούς προγόνους Ο X κυριαρχεί κάποιον από αυτούς, έστω τον U, οπότε ο U κληρονομεί όλες τις σχέσεις του κόμβου X ΟιορισμοίχρήσηςτουΥπροέρχονταιαπότον U και άλλους προγόνους Άρα ο Y είναι ακριβώς μια θέση όπου πρέπει να μπει συνάρτηση φ()

41 Εισαγωγή Συναρτήσεων φ() Αλγόριθμος: Για κάθε μεταβλητή V Βάλε σε μια λίστα εργασίας W όλους τους κόμβουςμεανάθεσηστηv ΌσουπάρχειXστηλίσταWεπανάλαβε ΓιακάθεκόμβοYστοDF(X)κάνε Εάνδενυπάρχειφ()στονYτότε Πρόσθεσε(V=φ(V,,V))στονY ΕάνοYδενέχειξανασυναντηθεί,βάλτονστηλίσταW.

42 Μετονομασία Μεταβλητών Αναδρομικά για κάθε μεταβλητή, ξεκινώντας με τον κόμβο START, χρησιμοποιώντας στοίβα ΓιατονκόμβοX Γιακάθεανάθεση(V= )τουx Μετονόμασε τις χρήσεις της μεταβλητής V με το όνομα στην κορυφή της στοίβας ΒάλετονέοόνομαV i στηστοίβα i=i+1 Μετονόμασε τα ορίσματα της συνάρτησης φ() μέσω τωνακμώντουcfg Εφάρμοσε αναδρομικά για όλα τα παιδιά του Χ στο δέντρο κυριαρχίας Γιακάθεανάθεση(V= )τουx ΒγάλετοV i απότηστοίβα

43 Παράδειγμα Μετονομασίας a 1 = TOS a= a 1 +5 Rename a = a= φ(a 1,a) a+5 a+5 Stanford University Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

44 Παραγωγή Κώδικα από SSA Απλοϊκή λύση: Μια συνάρτηση φ() με k ορίσματα, που βρίσκεται στην αρχή ενός κόμβου Χ, μπορεί να αντικατασταθεί α- πό k απλές αναθέσεις, στο τέλος κάθε πατρικούκόμβουτουχστοcfg. Πρόβλημα αποδοτικότητας κώδικα;

45 Παραγωγή Κώδικα από SSA Επιλογή 1: χρωματισμός Υπολόγισε τις διάρκειες ζωής των μεταβλητών και δώσε ένα μοναδικό όνομα μεταβλητής για κάθε διάρκεια ζωής Όπως κάνουμε στη δέσμευση καταχωρητών! Επιλογή 2: απλή διαγραφή όλων των συναρτήσεων φ() Οι βελτιστοποιήσεις με βάση τη μορφή SSA πρέπει να μη δημιουργούν επικαλυπτόμενες διάρκειες ζωής

46 Απαλοιφή Άχρηστου Κώδικα Για ποιο λόγο ένας κώδικας είναι άχρηστος; Ανάθεση χωρίς επόμενη χρήση Μέθοδος απαλοιφής άχρηστου κώδικα Σημείωσε όλες τις εντολές ως άχρηστες Σημείωσε κάποιες εντολές ως χρήσιμες (ζωντανές) με βάση κάποια κριτήρια Έτσι όμως δημιουργείς και άλλες χρήσιμες εντολές Πραγματικά άχρηστος κώδικας είναι εκείνος που έμεινε σημειωμένος ως άχρηστος Peking University

47 Παράδειγμα Χρήσης SSA Διαισθητική απαλοιφή άχρηστου κώδικα (dead code elimination) Εφόσον για κάθε μεταβλητή υπάρχει μόνο ένας ορισμός, αν η λίστα χρήσεων της μεταβλητής είναι κενή, τότε ο ορισμός είναι άχρηστος Ότανμιαεντολήv xopyαπαλείφεταιεπειδή δεν υπάρχει χρήση της v, τότε η εντολή πρέπει να απαλειφτεί και από τις χρήσεις των x και y, κάτι που μπορεί να αχρηστεύσει και τους ορισμούς αυτών των μεταβλητών, κοκ

48 Παράδειγμα Χρήσης SSA Διαισθητική διάδοση σταθερής τιμής (constant propagation) Αν υπάρχει εντολή v c, όπου c είναι σταθερά, τότε όλες οι χρήσεις της v μπορούν να αντικατασταθούν με c Μιαεντολήτηςμορφήςv φ(c1,c2,,cn) όπου όλα τα ci είναι ταυτόσημα μπορεί να απλοποιηθείσεv c. Χρησιμοποιώντας αλγόριθμο με λίστα εργασίας σε ένα πρόγραμμα που βρίσκεται σε μορφή SSA, υλοποιούμε διάδοση σταθεράς σε γραμμικό χρόνο

49 Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 B3 j i k k+1 B7 B2 B1 if j<20 i 1 j 1 k 0 if k<100 j k k k+2 return j B6 B4 Peking University

50 Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 B3 j i k3 k+1 B7 B1 B2 if j<20 i 1 j 1 k1 0 if k<100 return j j k k5 k+2 B6 B4

51 Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j i k3 k+1 B7 B3 B1 B2 if j<20 i 1 j 1 k1 0 if k<100 return j j k k5 k+2 k4 φ(k3,k5) B6 B4

52 Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j i k3 k+1 B7 B3 B2 B1 if j<20 i 1 j 1 k1 0 k2 φ(k4,k1) if k<100 return j j k k5 k+2 k4 φ(k3,k5) B6 B4

53 Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j i k3 k2+1 B7 B3 B2 B1 if j<20 i 1 j 1 k1 0 k2 φ(k4,k1) if k2<100 return j j k2 k5 k2+2 k4 φ(k3,k5) B6 B4

54 Παράδειγμα i=1; j=1; k=0; while(k<100) { if(j<20) { j=i; k=k+1; } else { j=k; k=k+2; } } return j; } B5 j3 i1 k3 k2+1 B7 B3 B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4,j1) k2 φ(k4,k1) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

55 B5 j3 i1 k3 k2+1 B7 B3 Διάδοση Σταθεράς B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4,j1) k2 φ(k4,k1) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 j3 1 k3 k2+1 B7 B3 B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4, 1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

56 B5 j3 1 k3 k2+1 B7 B3 Απαλοιφή Άχρηστου Κώδικα B2 if j2<20 B1 j4 φ(j3,j5) k4 φ(k3,k5) i1 1 j1 1 k1 0 j2 φ(j4, 1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 B3 j3 1 k3 k2+1 B7 B2 if j2<20 j4 φ(j3,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

57 B5 j3 1 k3 k2+1 B7 B3 Συνέχεια B2 if j2<20 j4 φ(j3,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 B3 j3 1 k3 k2+1 B7 B2 if j2<20 j4 φ(1,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4

58 B5 Κι Άλλη Βελτιστοποίηση k3 k2+1 B7 B3 B2 if j2<20 j4 φ(1,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 Μπορούµε να δούµε ότι το µπλοκ Β6 δεν εκτελείται ποτέ! Πώς µπορούµε να το καταλάβουµε αυτό και να απλοποιήσουµε τον κώδικα; Χρησιµοποιώντας τη διάδοση σταθεράς υπό συνθήκη, η οποία βρίσκει ότι το j2 δεν αλλάζει τιµή και έτσι επιτρέπει περαιτέρω απαλοιφή άχρηστου κώδικα

59 k3 k2+1 B7 Περαιτέρω Απαλοιφή Άχρηστου Κώδικα B3 B2 if j2<20 j4 φ(1,j5) k4 φ(k3,k5) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 j5 k2 k5 k2+2 B6 B4 B5 k3 k2+1 B7 B2 j4 φ(1) k4 φ(k3) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 B4

60 B5 k3 k2+1 B7 Απαλοιφή Συναρτήσεων φ B2 j4 φ(1) k4 φ(k3) j2 φ(j4,1) k2 φ(k4,0) if k2<100 return B4 j2 B4 B5 k3 k2+1 B7 B2 j4 1 k4 k3 j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 B4

61 B5 k3 k2+1 B7 Διάδοση Σταθεράς και Αντιγράφου B2 j4 1 k4 k3 j2 φ(j4,1) k2 φ(k4,0) if k2<100 return j2 B4 B5 k3 k2+1 B7 B2 j4 1 k4 k3 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4

62 B5 k3 k2+1 B7 Κι Άλλος Άχρηστος Κώδικας B2 j4 1 k4 k3 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4 B5 k3 k2+1 B2 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4

63 B5 k3 k2+1 Κι Άλλη Απλοποίηση Συνάρτησης φ B2 j2 φ(1,1) k2 φ(k3,0) if k2<100 return j2 B4 B5 k3 k2+1 B2 j2 1 k2 φ(k3,0) if k2<100 return j2 B4

64 B5 Κι Άλλη Διάδοση Σταθεράς B2 j2 1 k2 φ(k3,0) if k2<100 B2 j2 1 k2 φ(k3,0) if k2<100 return j2 B4 return 1 k3 k2+1 B5 k3 k2+1 B4 Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

65 B5 Τελικός Κώδικας! B2 j2 1 k2 φ(k3,0) if k2<100 return 1 B4 return 1 B4 k3 k2+1 Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 3 η : Ενδιάμεση Αναπαράσταση / SSA Ενδιάμεση Αναπαράσταση (IR) Η ενδιάμεση αναπαράσταση αποθηκεύει τη συγκεντρωμένη πληροφορία από την ανάλυση ενός προγράμματος Από την ενδιάμεση

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 7 η : Περιοχές: Εναλλακτική Μέθοδος Ανάλυσης Ροής Δεδομένων Περιοχές (Regions) Σε κάποιες περιπτώσεις βρόχων η ανάλυση ροής δεδομένων με τον επαναληπτικό αλγόριθμο συγκλίνει αργά

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 12 ο Βελτιστοποίηση Μετασχηματισμός κώδικα σε άλλον πιο αποδοτικό Ασφάλεια βελτιστοποίησης Ορθότητα μετασχηματισμών! Πολυπλοκότητα μετασχηματισμών Εντοπισμός πιθανά προβληματικού

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο Γιώργος Δημητρίου Μάθημα 9 ο Ενδιάμεσος Κώδικας Απεικόνιση ανάμεσα στον αρχικό και στον τελικό κώδικα Γραμμικές αναπαραστάσεις: Ενδιάμεσος κώδικας πλησιέστερα στον τελικό ευκολότερη παραγωγή τελικού κώδικα

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 6 η : Αλγεβρικά Πλαίσια Ανάλυσης Ροής Δεδομένων Αναπαράσταση Προγράμματος Γράφος Ροής Ελέγχου (Control Flow Graph CFG) Κόμβοι N εντολές Ακμές E ροή ελέγχου pred(n) = σύνολο άμεσων

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 9 η : Θέματα Δρομολόγησης Εντολών ILP Παραλληλισμός επιπέδου εντολής Εξαρτήσεις δεδομένων Εξαρτήσεις ελέγχου (διαδικασιακές) Με διαθέσιμους πόρους, οι εντολές μπορούν να εκτελεστούν

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Κανονικές Εκφράσεις (1.3) Τυπικός Ορισμός Ισοδυναμία με κανονικές γλώσσες Μη Κανονικές

Διαβάστε περισσότερα

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση

Διαβάστε περισσότερα

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 5: Κανονικές Εκφράσεις Τι θα κάνουμε σήμερα Κλειστότητα Κανονικών Πράξεων (1.2.3) Εισαγωγή στις Κανονικές Εκφράσεις Τυπικός ορισμός της κανονικής

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού,

Διαβάστε περισσότερα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 11 ο Γεννήτορας Τελικού Κώδικα Ο γεννήτορας τελικού κώδικα είναι το πιο κρίσιμο τμήμα του μεταγλωττιστή και αντιμετωπίζει πολύπλοκα προβλήματα Βέλτιστη χρήση της αρχιτεκτονικής

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα (2) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Αυτόµατα Στοίβας Pushdown utomata Ισοδυναµία µε τις Γλώσσες χωρίς Συµφραζόµενα:

Διαβάστε περισσότερα

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες Κατευθυνόμενο γράφημα Συνάρτηση χωρητικότητας 12 16 2 Ροή δικτύου Συνάρτηση αφετηρίακός κόμβος 13 1 με τις ακόλουθες ιδιότητες 4 14 9 7 4 τερματικός κόμβος Περιορισμός χωρητικότητας: Αντισυμμετρία: Διατήρηση

Διαβάστε περισσότερα

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 10 η : Βελτιστοποιήσεις Τοπικότητας και Παραλληλισμού: Εξαρτήσεις και Μετασχηματισμοί Βρόχων Επεξεργασία Πινάκων Παραλληλισμός επιπέδου βρόχου Λόγω παραλληλισμού δεδομένων Επιτυγχάνεται

Διαβάστε περισσότερα

Σημειωματάριο Τετάρτης 29 Νοε. 2017

Σημειωματάριο Τετάρτης 29 Νοε. 2017 Σημειωματάριο Τετάρτης 29 Νοε. 2017 Γραφήματα (γράφοι), η αναπαράστασή τους στον υπολογιστή και μερικά προβλήματα σε αυτά Είδαμε σήμερα λίγα πράγματα για γραφήματα (ή γράφους). Γράφημα είναι, στην απλούστερή

Διαβάστε περισσότερα

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ÌïëëÜ Ì. Á μýô Á.Ì. : 5 moll@moll.r ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΜΑΘΗΜΑ : ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΤΥΟ (ΕΡΓΑΣΤΗΡΙΟ) Ε ΕΞΑΜΗΝΟ ΕΙΣΗΓΗΤΕΣ: Χαϊδόγιαννος Χαράλαμπος ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ

Διαβάστε περισσότερα

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Βελτιστοποίηση (i) Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη,

Διαβάστε περισσότερα

1 Διάσχιση κατευθυνόμενων γραφημάτων

1 Διάσχιση κατευθυνόμενων γραφημάτων ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010 11 Ιστοσελίδα μαθήματος: http://eclass.teilam.gr/di288 5ο ΕΡΓΑΣΤΗΡΙΟ

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 10: Αυτόματα Στοίβας II Τι θα κάνουμε σήμερα Ισοδυναμία αυτομάτων στοίβας με ασυμφραστικές γραμματικές (2.2.3) 1 Ισοδυναμία PDA με CFG Θεώρημα: Μια

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες () Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Πεπερασμένα Αυτόματα (Κεφάλαιο., Sipser) Ορισμός πεπερασμένων αυτομάτων και ορισμός του

Διαβάστε περισσότερα

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου Ανάλυση αλγορίθμων Παράμετροι απόδοσης ενός αλγόριθμου: Χρόνος εκτέλεσης Απαιτούμενοι πόροι, π.χ. μνήμη, επικοινωνία (π.χ. σε κατανεμημένα συστήματα) Προσπάθεια υλοποίησης Ανάλυση της απόδοσης Θεωρητική

Διαβάστε περισσότερα

Συνδετικότητα γραφήματος (graph connectivity)

Συνδετικότητα γραφήματος (graph connectivity) Συνδετικότητα γραφήματος (graph connectivity) Συνδετικότητα γραφήματος (graph connectivity) Υπάρχει μονοπάτι μεταξύ α και β; α Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές ενός

Διαβάστε περισσότερα

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i. Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ

ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ Συνεκτικότητα Γραφημάτων 123 ΚΕΦΑΛΑΙΟ 4 ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ 4.1 Τοπική και Ολική Συνεκτικότητα Γραφημάτων 4.2 Συνεκτικότητα Μη-κατευθυνόμενων Γραφημάτων 4.3 Συνεκτικότητα Κατευθυνόμενων Γραφημάτων

Διαβάστε περισσότερα

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα Από τον ενδιάμεσο κώδικα στον τελικό (1/2) Τα ορίσματα των εντολών ενδιάμεσου κώδικα είναι του τύπου expr*. Αυτές οι εκφράσεις θα πρέπει

Διαβάστε περισσότερα

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Γραφήματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Γραφήματα Κατευθυνόμενο Γράφημα Ένα κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 2 ο Αλφάβητα και Γλώσσες Αλφάβητο: Ένα μη κενό και πεπερασμένο σύνολο συμβόλων Γλώσσα: Ένα οποιοδήποτε υποσύνολο των συμβολοσειρών ενός αλφαβήτου (οι προτάσεις της γλώσσας, πχ.

Διαβάστε περισσότερα

3η Σειρά Γραπτών Ασκήσεων

3η Σειρά Γραπτών Ασκήσεων 1/48 3η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 2/48 1 Άσκηση 1: Πομποί και Δέκτες 2 Άσκηση 2: Διακοπές στην Ικαρία 3 Άσκηση 3: Επιστροφή στη Γη 4 Άσκηση

Διαβάστε περισσότερα

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

Πολλοί τρόποι περιγραφής αλγορίθμων. Όλοι είναι μηχανιστικά ισοδύναμοι και ειδικά ισοδύναμοι με μερικές αναδρομικές συναρτήσεις. Θέση Church-Turing I Πολλοί τρόποι περιγραφής αλγορίθμων. Όλοι είναι μηχανιστικά ισοδύναμοι και ειδικά ισοδύναμοι με μερικές αναδρομικές συναρτήσεις Θέση Church-Turing: Όλες οι υπολογίσιμες συναρτήσεις

Διαβάστε περισσότερα

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 8 ο Μερική Επικάλυψη Κίνδυνοι στη Μερική Επικάλυψη Αδυναμία ιδανικής εκτέλεσης με μερική επικάλυψη Εξαρτήσεις μεταξύ εντολών Ανάγκη εκτέλεσης λειτουργιών σε συγκεκριμένη σειρά

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει δύο βασικές λειτουργίες : Εισαγωγή στοιχείου με δεδομένο κλειδί. Επιστροφή ενός στοιχείου με μέγιστο (ή ελάχιστο) κλειδί και διαγραφή

Διαβάστε περισσότερα

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 1 2 3 4 5 πλήθος κορυφών πλήθος ακμών Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από

Διαβάστε περισσότερα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 7-9 Ενότητα 7: Ενδιάμεσος κώδικας Άσκηση 7-1: Θεωρήστε τη γλώσσα προγραμματισμού C με τη γνωστή γραμματική

Διαβάστε περισσότερα

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες Κατευθυνόμενο γράφημα Συνάρτηση χωρητικότητας 2 6 20 Ροή δικτύου Συνάρτηση αφετηρίακός κόμβος 0 με τις ακόλουθες ιδιότητες 9 7 τερματικός κόμβος Περιορισμός χωρητικότητας: Αντισυμμετρία: Διατήρηση ροής:

Διαβάστε περισσότερα

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 22: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης - Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ασυμφραστικές Γραμματικές (2.1) Τυπικός Ορισμός Σχεδιασμός Ασυμφραστικών Γραμματικών

Διαβάστε περισσότερα

Κεφάλαιο 10 Ψηφιακά Λεξικά

Κεφάλαιο 10 Ψηφιακά Λεξικά Κεφάλαιο 10 Ψηφιακά Λεξικά Περιεχόμενα 10.1 Εισαγωγή... 213 10.2 Ψηφιακά Δένδρα... 214 10.3 Υλοποίηση σε Java... 222 10.4 Συμπιεσμένα και τριαδικά ψηφιακά δένδρα... 223 Ασκήσεις... 225 Βιβλιογραφία...

Διαβάστε περισσότερα

Σειρά Προβλημάτων 5 Λύσεις

Σειρά Προβλημάτων 5 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 5 Λύσεις Να δείξετε ότι οι πιο κάτω γλώσσες είναι διαγνώσιμες. (α) { R η R είναι μια κανονική έκφραση η οποία παράγει μια μη πεπερασμένη γλώσσα} (β) { G η G είναι μια CFG η οποία

Διαβάστε περισσότερα

Σειρά Προβλημάτων 5 Λύσεις

Σειρά Προβλημάτων 5 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 5 Λύσεις Να δείξετε ότι οι πιο κάτω γλώσσες είναι διαγνώσιμες. (α) ({ G η G είναι μια ασυμφραστική γραμματική που δεν παράγει καμιά λέξη με μήκος μικρότερο του 2 } (β) { Μ,w

Διαβάστε περισσότερα

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Βοηθητικές έννοιες (i) Σύνολα FIRST Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Αν a τότε a FIRST Αν τότε FIRST Νίκος Παπασπύρου,

Διαβάστε περισσότερα

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα

Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα Αλγόριθμοι πολυωνυμικού χρόνου Ένας αλγόριθμος πολυωνυμικού χρόνου έχει χρόνο εκτέλεσης όπου είναι μία (θετική) σταθερά Κλάση πολυπλοκότητας : περιλαμβάνει τα προβλήματα που επιδέχονται λύση σε πολυωνυμικό

Διαβάστε περισσότερα

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Ουρά Προτεραιότητας (priority queue)

Ουρά Προτεραιότητας (priority queue) Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει τις ακόλουθες λειτουργίες PQinsert : εισαγωγή στοιχείου PQdelmax : επιστροφή του στοιχείου με το μεγαλύτερο* κλειδί και διαγραφή του

Διαβάστε περισσότερα

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Ενότητα 9 (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 1 Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j µε i j και S 1 S k = U. Λειτουργίες q MakeSet(X): επιστρέφει

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων Τι θα κάνουμε σήμερα Εισαγωγή Πολυταινιακές Μηχανές Turing (3.2.1) Μη Ντετερμινιστικές Μηχανές

Διαβάστε περισσότερα

Σειρά Προβλημάτων 3 Λύσεις

Σειρά Προβλημάτων 3 Λύσεις Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) {0 n 1 n n > 0} {0 n 1 2n n > 0} (β) {w {a,b} * η w ξεκινά και τελειώνει με το ίδιο σύμβολο

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Μια ανασκόπηση στους Μεταγλωττιστές Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Α. Γλώσσα -Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση

Διαβάστε περισσότερα

9. Συστολικές Συστοιχίες Επεξεργαστών

9. Συστολικές Συστοιχίες Επεξεργαστών Κεφάλαιο 9: Συστολικές συστοιχίες επεξεργαστών 208 9. Συστολικές Συστοιχίες Επεξεργαστών Οι συστολικές συστοιχίες επεξεργαστών είναι επεξεργαστές ειδικού σκοπού οι οποίοι είναι συνήθως προσκολλημένοι σε

Διαβάστε περισσότερα

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

Διαβάστε περισσότερα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Ικανοποίηση Περιορισμών Κατηγορία προβλημάτων στα οποία είναι γνωστές μερικές

Διαβάστε περισσότερα

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ Γιώργος Δημητρίου Μάθημα 7 ο ΠΜΣ Εφαρμοσμένη Πληροφορική ΔΙΑΔΟΧΙΚΕΣ ΔΙΑΔΙΚΑΣΙΕΣ Σειριακή εκτέλεση, χωρίς καμία επικάλυψη: 50ns 100ns Δ1 Χρόνος Δ2 Δ3 Συνολικός χρόνος ολοκλήρωσης

Διαβάστε περισσότερα

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων Λουκάς Γεωργιάδης loukas@cs.uoi.gr www.cs.uoi.gr/~loukas Βασικές έννοιες και εφαρμογές Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή

Διαβάστε περισσότερα

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π. Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων CO.RE.LAB. ΣΗΜΜΥ - Ε.Μ.Π. Άσκηση 1 η : Παιχνίδι επιλογής ακμών Έχουμε ένα ακυκλικό κατευθυνόμενο γράφο, μια αρχική κορυφή και δυο παίκτες. Οι παίκτες διαδοχικά

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 17 Σωροί (Heaps) έκδοση 10 1 / 19 Heap Σωρός Ο σωρός είναι μια μερικά ταξινομημένη δομή δεδομένων που υποστηρίζει

Διαβάστε περισσότερα

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους k πρόβλημα μεγέθους Ν-k Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση επιλύουμε αναδρομικά τα υποπροβλήματα πρόβλημα μεγέθους k πρόβλημα

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ AM: Δοµές Δεδοµένων Πτυχιακή Εξεταστική Ιούλιος 2014 Διδάσκων : Ευάγγελος Μαρκάκης 09.07.2014 ΥΠΟΓΡΑΦΗ ΕΠΟΠΤΗ: Διάρκεια εξέτασης : 2 ώρες

Διαβάστε περισσότερα

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 26: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας -Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra

Διαβάστε περισσότερα

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Παναγιώτα Παναγοπούλου 11η Διάλεξη 12 Ιανουαρίου 2017 1 Ανεξάρτητο σύνολο Δοθέντος ενός μη κατευθυνόμενου γραφήματος G = (V, E), ένα ανεξάρτητο σύνολο (independent set) είναι ένα

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ 1. Έστω ότι ο καθηγητής σας δίνει δύο αριθμούς και σας ζητάει να του πείτε πόσο είναι το άθροισμά τους. Διατυπώστε

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ 1. Ποιες από τις παρακάτω εντολές είναι σωστές; α) if A + B

Διαβάστε περισσότερα

Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο. Δίκτυα Ροής Ελάχιστου Κόστους (Minimum Cost Flow Networks)

Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο. Δίκτυα Ροής Ελάχιστου Κόστους (Minimum Cost Flow Networks) Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο Ορισμοί Παραδείγματα Δικτυακή Simplex (προβλήματα με και χωρίς φραγμούς). Δίκτυα Ροής Ελάχιστου Κόστους (Minimum ost Flow Networks) Ένα δίκτυο μεταφόρτωσης αποτελείται

Διαβάστε περισσότερα

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων. ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΑ ΕΙΔΙΚΟΤΗΤΑΣ ΤΕΤΑΡΤΗ 19/04/2017 - ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΠΕΝΤΕ (5) Α1. Να χαρακτηρίσετε τις προτάσεις που

Διαβάστε περισσότερα

Σειρά Προβλημάτων 3 Λύσεις

Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a i b j c k d m i, j, k, m 0 και i + j = k + m } (β) { uxvx rev u,v,x {0,1,2} + και όλα

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός... 1 Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Διάρκεια 3 ώρες Στοιχεία Μαθητή: Όνομα... Επώνυμο... Βαθμός... 2 Θεμα Α (30%) Α1 ΣΩΣΤΟ - ΛΑΘΟΣ 1. Ένα υποπρόγραμμα δεν μπορεί να κληθεί περισσότερες

Διαβάστε περισσότερα

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

Διαβάστε περισσότερα

Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα

Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα ΘΕ4 Αναδρομή και Επαγωγή για Γραφήματα Επαγωγή και αναδρομή για άκυκλα συνεκτικά γραφήματα Επαγωγή για άκυκλα συνεκτικά γραφήματα (με αφαίρεση κορυφής) Η αρχή της επαγωγής, με αφαίρεση κορυφής, για δεδομένη

Διαβάστε περισσότερα

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή.

Η NTM αποδέχεται αν µονοπάτι στο δέντρο που οδηγεί σε αποδοχή. Μη ντετερµινιστικές Μηχανές Turing - NTMs (1/6) Μηχανές Turing: Μη ντετερµινισµός, Επιλύσιµα Προβλήµατα Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς 10 εκεµβρίου 2016

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

Διαβάστε περισσότερα

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Άσκηση 1 Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e Υπάρχουν τρία μαύρα τετραγωνάκια (b), τρία άσπρα (w) και ένα κενό (e). Η σπαζοκεφαλιά έχει τις ακόλουθες

Διαβάστε περισσότερα

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 4: Μη Ντετερμινιστικά (Αντιαιτιοκρατικά) Πεπερασμένα Αυτόματα (ΝFA)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 4: Μη Ντετερμινιστικά (Αντιαιτιοκρατικά) Πεπερασμένα Αυτόματα (ΝFA) ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 4: Μη Ντετερμινιστικά (Αντιαιτιοκρατικά) Πεπερασμένα Αυτόματα (ΝFA) Τι θα κάνουμε σήμερα Εισαγωγή στα Μη Ντετερμινιστικά Πεπερασμένα Αυτόματα Τυπικός

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

Διαβάστε περισσότερα

Θεωρία Γραφημάτων και Εφαρμογές - Διακριτά Μαθηματικά ΙΙ Σεπτέμβριος 2017

Θεωρία Γραφημάτων και Εφαρμογές - Διακριτά Μαθηματικά ΙΙ Σεπτέμβριος 2017 Θεωρία Γραφημάτων και Εφαρμογές - Διακριτά Μαθηματικά ΙΙ Σεπτέμβριος 2017 Όλα τα γραφήματα είναι μη-κατευθυνόμενα, αν δεν αναφέρεται κάτι άλλο. ΕΓΘΑ : Σ. Κοσμαδάκης, «Εισαγωγή στα Γραφήματα, Θεωρία-Ασκήσεις».

Διαβάστε περισσότερα

Βασικές Έννοιες Θεωρίας Γραφημάτων

Βασικές Έννοιες Θεωρίας Γραφημάτων Βασικές Έννοιες Θεωρίας Γραφημάτων Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Γραφήματα Μοντελοποίηση πολλών σημαντικών προβλημάτων

Διαβάστε περισσότερα

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών

Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών Κεφ. 7: Συνήθεις διαφορικές εξισώσεις (ΣΔΕ) - προβλήματα αρχικών τιμών 7. Εισαγωγή (ορισμός προβλήματος, αριθμητική ολοκλήρωση ΣΔΕ, αντικατάσταση ΣΔΕ τάξης n με n εξισώσεις ης τάξης) 7. Μέθοδος Euler 7.3

Διαβάστε περισσότερα

Επίλυση 1 ης Εργασίας. Παραδόθηκαν: 11/12 15%

Επίλυση 1 ης Εργασίας. Παραδόθηκαν: 11/12 15% Επίλυση 1 ης Εργασίας Παραδόθηκαν: 11/12 15% ΘΕΜΑ 1 ΑΠΑΝΤΗΣΗ Α) Συνθήκη συντήρησης της αρχικής ροής Το φορτίο που μεταφέρεται από τον r είναι 3 (r->1=1) + (r->3=0) + (r- >4=2) Το φορτίο που φθάνει στον

Διαβάστε περισσότερα

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

Διαβάστε περισσότερα

Διερεύνηση γραφήματος

Διερεύνηση γραφήματος Διερεύνηση γραφήματος Διερεύνηση γραφήματος Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος ή κατά βάθος. Καθοδική διερεύνηση

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

Διαβάστε περισσότερα

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Περίληψη Αλγόριθµοι Τύπου Μείωσης Προβλήµατος ( Decrease and Conquer ) Μείωση κατά µια σταθερά (decrease by a constant) Μείωση κατά ένα ποσοστό (decrease by a constant

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Άσκηση 6: Ασκήσεις Εξαμήνου Μέρος Β Νοέμβριος 2016 Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση ενός

Διαβάστε περισσότερα

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση Κεφάλαιο ο: Δικτυωτή Ανάλυση. Εισαγωγή Η δικτυωτή ανάλυση έχει παίξει σημαντικό ρόλο στην Ηλεκτρολογία. Όμως, ορισμένες έννοιες και τεχνικές της δικτυωτής ανάλυσης είναι πολύ χρήσιμες και σε άλλες επιστήμες.

Διαβάστε περισσότερα