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

Σχετικά έγγραφα
Θέματα Μεταγλωττιστών

Δρ. Βασίλειος Γ. Καμπουρλάζος Δρ. Ανέστης Γ. Χατζημιχαηλίδης

Δρ. Βασίλειος Γ. Καμπουρλάζος Δρ. Ανέστης Γ. Χατζημιχαηλίδης

Υπολογιστικά & Διακριτά Μαθηματικά

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο

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

K15 Ψηφιακή Λογική Σχεδίαση 4+5: Άλγεβρα Boole

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

Ηλεκτρονικοί Υπολογιστές ΙΙ

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

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών

Σχέση Μερικής ιάταξης Σχέση Μερικής ιάταξης (ή µερική διάταξη): ανακλαστική, αντισυµµετρική, και µεταβατική. Αριθµοί: α β (αλλά όχι α < β), α β, Σύνολ

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

ΑΛΓΕΒΡΙΚΕΣ ΟΜΕΣ Ι. Προτεινοµενες Ασκησεις - Φυλλαδιο 1

Σχέσεις Μερικής ιάταξης

Pascal, απλοί τύποι, τελεστές και εκφράσεις

a. a + b = 3. b. a διαιρεί τ ο b. c. a - b = 0. d. ΜΚΔ(a, b) = 1. e. ΕΚΠ(a, b) = 6.

Σχέσεις Μερικής ιάταξης

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

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

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

Σχέσεις Μερικής ιάταξης

Λύσεις 4ης Σειράς Ασκήσεων

Ισοδυναµίες, Μερικές ιατάξεις

β) 3 n < n!, n > 6 i i! = (n + 1)! 1, n 1 i=1

ΗΥ118: Διακριτά Μαθηματικά Εαρινό εξάμηνο 2016 Λύσεις ασκήσεων προόδου

HY118-Διακριτά Μαθηματικά

HY Λογική Διδάσκων: Δ. Πλεξουσάκης Εαρινό Εξάμηνο. Φροντιστήριο 6

Σχέσεις. Διμελής Σχέση. ΣτοΊδιοΣύνολο. Αναπαράσταση

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

Δύο λόγια από τη συγγραφέα

Υπολογιστικά & Διακριτά Μαθηματικά

Τα παρακάτω σύνολα θα τα θεωρήσουμε γενικά γνωστά, αν και θα δούμε πολλές από τις ιδιότητές τους: N Z Q R C

Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός συγκρίσεων π

Περιεχόμενα. Πρόλογος 3

Σχέσεις Μερικής Διάταξης

Διδάσκοντες: Δ. Φωτάκης, Δ. Σούλιου Επιμέλεια διαφανειών: Δ. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ (Τ.Ε.Ι.) ΚΡΗΤΗΣ Τμήμα Εφαρμοσμένης Πληροφορικής & Πολυμέσων. Ψηφιακή Σχεδίαση. Κεφάλαιο 2: Συνδυαστικά Λογικά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

(ii) X P(X). (iii) X X. (iii) = (i):

Εισαγωγή στους Υπολογιστές

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

Δρ. Βασίλειος Γ. Καμπουρλάζος Δρ. Ανέστης Γ. Χατζημιχαηλίδης

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Μαθηματική Ανάλυση Ι

ΛΥΣΕΙΣ ΦΥΛΛΑΔΙΟΥ 3/ΣΕΜΦΕ/ y x= ( ) ( ) .( ) , τότε

ιµελής Σχέση ιατεταγµένο ζεύγος (α, β): ύο αντικείµενα (όχι κατ ανάγκη διαφορετικά) σε καθορισµένη σειρά. Γενίκευση: διατεταγµένη τριάδα (α, β, γ), δι

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

Σύνοψη Προηγούµενου. Ισοδυναµίες, Μερικές ιατάξεις. Σχέσεις Ισοδυναµίας. Σχέσεις, Ιδιότητες, Αναπαράσταση. Ανακλαστικές (a, a) R

ΕΡΩΤΗΣΕΙΣ ΜΑΘΗΤΩΝ. Ερώτηση 1. Αν το x o δεν ανήκει στο πεδίο ορισμού μιας συνάρτησης f, έχει νόημα να μιλάμε για παράγωγο της f. στο x = x o?

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

Σχέσεις. ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ι. ΠΡΑΞΕΙΣ. Ορισµός 2 A. ΕΣΩΤΕΡΙΚΗ ΠΡΑΞΗ. Έστω E ένα µη κενό σύνολο. Κάθε απεικόνιση f: E x E E λέγεται εσωτερική πράξη επί του E.

HY118- ιακριτά Μαθηµατικά

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

Αριθμοθεωρητικοί Αλγόριθμοι

Ψηφιακή Σχεδίαση Εργαστήριο Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜ. ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ

Θεωρία Υπολογισμού και Πολυπλοκότητα

Διακριτά Μαθηματικά Ι

Μερικές διατάξεις. HY118- ιακριτά Μαθηµατικά. Μερικές διατάξεις, παράδειγµα. ιαγράµµατα Hasse: Αναπαράσταση σχέσεων µερικής διάταξης

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

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

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

ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 118 ερωτήσεις θεωρίας με απάντηση ασκήσεις για λύση. 20 συνδυαστικά θέματα εξετάσεων

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

Θεωρία και Αλγόριθμοι Γράφων

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

Σχέσεις, Ιδιότητες, Κλειστότητες

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

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

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

Ασυμπτωτικός Συμβολισμός

ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΗΥ118: Διακριτά Μαθηματικά Εαρινό εξάμηνο 2019 Λύσεις ασκήσεων προόδου

ΘΕΜΑ 1: Αλγόριθμος Ford-Fulkerson

Δέντρα Απόφασης (Decision(

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

Φροντιστήριο #9 Λυμένες Ασκήσεις σε Γράφους

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

Παράσταση αριθμών «κινητής υποδιαστολής» floating point

ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ. Η συνεπαγωγή. Η Ισοδυναμία ή διπλή συνεπαγωγή. Ο σύνδεσμος «ή» Ο σύνδεσμος «και»

ΕΥΦΥΗΣ ΕΛΕΓΧΟΣ. Ενότητα #3: Αρχή της Επέκτασης - Ασαφείς Σχέσεις. Αναστάσιος Ντούνης Τμήμα Μηχανικών Αυτοματισμού Τ.Ε.

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Ανάλυση Ι και Εφαρμογές Σημειώσεις από τις παραδόσεις Α. Γιαννόπουλος Τμήμα Φυσικής Πανεπιστήμιο Αθηνών Αθήνα 2018

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

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

(a 1, b 1 ) (a 2, b 2 ) = (a 1 a 2, b 1 b 2 ).

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

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

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

4.3 Ορθότητα και Πληρότητα

Transcript:

Γιώργος Δημητρίου Ενότητα 6 η : Αλγεβρικά Πλαίσια Ανάλυσης Ροής Δεδομένων

Αναπαράσταση Προγράμματος Γράφος Ροής Ελέγχου (Control Flow Graph CFG) Κόμβοι N εντολές Ακμές E ροή ελέγχου pred(n) = σύνολο άμεσων προγόνων του κόμβου n succ(n) = σύνολο άμεσων απογόνων του κόμβου n Κόμβος εκκίνησης n 0 Πιθανά νέος κόμβος ENTRY Σύνολο κόμβων τερματισμού N final Πιθανά συνδεμένοι σε έναν κοινό κόμβο EXIT

Σημεία Προγράμματος Ένα σημείο πριν και ένα σημείο μετά από κάθε κόμβο Σημείο σύγκλισης (join point) σημείο με πολλαπλούς άμεσους προγόνους Σημείο διακλάδωσης (split point) σημείο με πολλαπλούς άμεσους απογόνους

Βασική Ιδέα Η πληροφορία που μας ενδιαφέρει κάθε φορά αναπαρίσταται ως τιμές μιας αλγεβρικής δομής που ονομάζεται πλέγμα (lattice) Η ανάλυση παράγει τιμές πλέγματος για κάθε σημείο προγράμματος Κατεύθυνση ανάλυσης Προς τα εμπρός (forward) Προς τα πίσω (backward)

Ανάλυση προς τα Εμπρός Η ανάλυση διαδίδει τιμές προς τα εμπρός σύμφωνα με τη ροή ελέγχου που περιγράφει ο CFG Για κάθε κόμβο ορίζεται μια συνάρτηση διάδοσης f: Είσοδος τιμή σημείου πριν τον κόμβο Έξοδος τιμή σημείου μετά τον κόμβο Οι τιμές ρέουν από σημεία που έπονται προγόνων προς σημεία που προηγούνται απογόνων Στα σημεία σύγκλισης οι τιμές συνδυάζονται με βάση κάποια συνάρτηση συγχώνευσης Παράδειγμα που είδαμε: Ορισμοί χρήσεων

Ανάλυση προς τα Πίσω Η ανάλυση διαδίδει τιμές προς τα πίσω αντίστροφα με τη ροή ελέγχου που περιγράφει ο CFG Για κάθε κόμβο ορίζεται μια συνάρτηση διάδοσης f: Είσοδος τιμή σημείου μετά τον κόμβο Έξοδος τιμή σημείου πριν τον κόμβο Οι τιμές ρέουν από σημεία που προηγούνται απογόνων προς σημεία που έπονται προγόνων Στα σημεία διακλάδωσης οι τιμές συνδυάζονται με βάση κάποια συνάρτηση συγχώνευσης Παράδειγμα που είδαμε: Ζωντάνια μεταβλητών

Αλγεβρικές Δομές Σύνολα στοιχείων Πράξεις μεταξύ στοιχείων Πράξη διάζευξης ( - join) πχ πρόσθεση, έ- νωση Πράξη σύζευξης ( - meet) πχ πολλαπλασιασμός, τομή Πράξεις και ιδιότητες πράξεων Συγκεκριμένες πράξεις και ιδιότητες για διαφορετικές δομές

Μερική Διάταξη Σύνολο P Ορίζουμε τη μερική διάταξη στο Ρ έτσι ώστε x,y,z P να ισχύουν οι ιδιότητες: x x x y και y x x y x y και y z x z (ανακλαστική) (αντισυμμετρική) (μεταβατική) Με βάση τη μερική διάταξη ορίζουμε: Άνω και κάτω φράγματα Ελάχιστο άνω φράγμα (lub) Μέγιστο κάτω φράγμα (glb)

Άνω Φράγματα Εάν S P τότε Ένα στοιχείο x P αποτελεί άνω φράγμα του S, εάν y S: y x Ένα στοιχείο x P είναι το ελάχιστο άνω φράγμα του S εάν το x αποτελεί άνω φράγμα του S, και x y για όλα τα άνω φράγματα y του S - πράξη join και ελάχιστο άνω φράγμα (lub, sup) S είναι το lub του S x y είναι το lub του {x,y}

Κάτω Φράγματα Εάν S P τότε Ένα στοιχείο x P αποτελεί κάτω φράγμα του S, εάν y S: x y Ένα στοιχείο x P είναι το μέγιστο κάτω φράγμα του S εάν το x αποτελεί κάτω φράγμα του S, και y x για όλα τα κάτω φράγματα y του S - πράξη meet και μέγιστο κάτω φράγμα (glb, inf) S είναι το glb του S x y είναι το glb του {x,y}

Μερικά Διατεταγμένα Σύνολα Μερικά διατεταγμένο σύνολο (partially ordered set poset) είναι ένα σύνολο εφοδιασμένο με μια σχέση μερικής διάταξης που να ικανοποιεί τις προαναφερθείσες ιδιότητες: (Ρ, )

Πλέγματα (Lattices) Πλέγμα (Lattice) είναι ένα μερικά διατεταγμένο σύνολο (poset), όπου κάθε ζεύγος στοιχείων του έχει ελάχιστο άνω φράγμα (lub) και μέγιστο κάτω φράγμα (glb) Hμιπλέγμα (semilattice) είναι το poset όπου κάθε ζεύγος στοιχείων έχει είτε μόνο lub (join-semilattice) είτε μόνο glb (meet-semilattice)

Κάλυψη Ορίζουμε x y εάν x y και x y Το x καλύπτεται από το y (ή αλλιώς το y καλύπτει το x) εάν x y, και x z y x z Αυτό σημαίνει ότι το y καλύπτει το x εάν δεν υπάρχουν άλλα στοιχεία μεταξύ των x και y

Παράδειγμα P = { 000, 001, 010, 011, 100, 101, 110, 111} (κλασικό πλέγμα Boolean, γνωστό ως hypercube) x y εάν (x & y) = x 011 001 111 101 010 110 100 Διάγραμμα Hasse Εάν το y καλύπτει το x το y συνδέεται με το x το y είναι πάνω από το x 000

Πλέγματα ως Αλγεβρικές Δομές Μια αλγεβρική δομή P ονομάζεται πλέγμα, εάν σε αυτήν ορίζονται οι πράξεις x y και x y, x,y P ώστε να ισχύουν οι ιδιότητες: x ο x = x x ο y = y ο x (ταυτοδυναμία), (αντιμεταθετικότητα), (x ο y) ο z = x ο (y ο z) (προσεταιριστικότητα), όπου ο ή, και επιπλέον: x (x y) x (απορρόφηση του από το ) x (x y) x (απορρόφηση του από το ) x,y,z P

Πλήρη Πλέγματα Εάν S P ορίζονται τα S και S, τότε το P αποτελεί πλήρες πλέγμα Κάθε πεπερασμένο πλέγμα είναι πλήρες

Πλήρη Πλέγματα Εάν S P ορίζονται τα S και S, τότε το P αποτελεί πλήρες πλέγμα Κάθε πεπερασμένο πλέγμα είναι πλήρες Παράδειγμα μη πλήρους πλέγματος Σύνολο ακεραίων Ν x, y Ν, x y = max(x,y), x y = min(x,y) Όμως δεν ορίζονται τα Ν και Ν Το Ν {, } είναι πλήρες πλέγμα

Κορυφή και Βάση Πλέγματος Το μέγιστο στοιχείο του Ρ εφόσον υπάρχει είναι η κορυφή του Ρ ( ) Το ελάχιστο στοιχείο του P εφόσον υπάρχει είναι η βάση του Ρ ( )

Σχέση μεταξύ,, και Οι παρακάτω 3 ιδιότητες είναι ισοδύναμες: x y x y y x y x Πρέπει να δείξουμε ότι: x y x y y και x y x x y y x y x y x x y Οπότε θα έχουμε και: x y y x y x x y x x y y

Αποδείξεις x y x y y : x y y αποτελεί άνω φράγμα του συνόλου {x,y} Για κάθε άνω φράγμα z του {x,y} πρέπει y z Άρα το y είναι το lub του {x,y} οπότε x y y x y x y x : x y x αποτελεί κάτω φράγμα του συνόλου {x,y} Για κάθε κάτω φράγμα z του {x,y} πρέπει z x Άρα το x είναι το glb του {x,y} οπότε x y x

Αποδείξεις (συνέχεια) x y y x y Το y αποτελεί άνω φράγμα του {x,y} x y x y x x y Το x αποτελεί κάτω φράγμα του {x,y} x y

Ισοδυναμία Ορισμών Με βάση τα προηγούμενα, ένα πλέγμα (ή ημιπλέγμα) ορίζεται ισοδύναμα Είτε ως αλγεβρική δομή Είτε ως μερικά διατεταγμένο σύνολο Μπορούμε εύκολα να αποδείξουμε τις ι- διότητες των πράξεων και με βάση τη σχέση μερικής διάταξης, όπως και τις ι- διότητες της σχέσης με βάση τις πράξεις και

Μονότονες Συναρτήσεις και Σταθερά Σημεία Έστω το πλέγμα L. Η συνάρτηση f : L L ονομάζεται μονότονη αν x, y S : x y f (x) f (y) Έστω A ένα σύνολο, f : A A μια συνάρτηση, και a A. Εάν f (a) = a, τότε το a ονομάζεται σταθερό σημείο της f στο σύνολο A

Ύπαρξη Σταθερών Σημείων Ορίζουμε ύψος ενός πλέγματος το μήκος του μακρύτερου μονοπατιού από τη βάση μέχρι την κορυφή του πλέγματος Σε ένα πλήρες πλέγμα L με πεπερασμένο ύψος, κάθε μονότονη συνάρτηση f : L L έχει μοναδικό ελάχιστο σταθερό σημείο: fix (f ) =

Εναλλακτικό Θεώρημα Μια συνάρτηση f : L L σε κάποιο πλήρες πλέγμα L ονομάζεται συνεχής, εάν για οποιοδήποτε υποσύνολο X του L, f ( X) = f (X). Έστω L ένα πλήρες πλέγμα. Εάν f : L L είναι μονότονη και συνεχής, τότε η f έχει μοναδικό ελάχιστο σταθερό σημείο: fix (f ) =

Θεώρημα Σταθερού Σημείου Knaster-Tarski Έστω (L, ) ένα πλήρες πλέγμα, και έστω f: L L μια μονότονη συνάρτηση. Τότε ένα σταθερό σημείο m της f μπορεί να οριστεί ως: m = x L f x x }

Υπολογισμός Σταθερού Σημείου Η πολυπλοκότητα στο χρόνο υπολογισμού ενός σταθερού σημείου εξαρτάται από τρεις παράγοντες: Το ύψος του πλέγματος, εφόσον αυτό αποτελεί ένα φράγμα για το i. Το κόστος υπολογισμού της f. Το κόστος ελέγχου ισότητας. Ο υπολογισμός ενός σταθερού σημείου μπορεί να αναπαρασταθεί ως μια διαπέραση του πλέγματος από τη βάση προς τα επάνω:

Επίλυση Συστήματος Εξισώσεων Έστω L ένα πλέγμα πεπερασμένου ύψους. Θεωρήστε ένα σύστημα εξισώσεων της μορφής: x 1 = F 1 (x 1,..., x n ) x 2 = F 2 (x 1,..., x n )... x n = F n (x 1,..., x n ) όπου x i μεταβλητές και F i : L n L ένα σύνολο από μονότονες συναρτήσεις. Η λύση του συστήματος αυτού λαμβάνεται ως το ελάχιστο σταθερό σημείο της ακόλουθης συνάρτησης F : L n L n : F(x 1,...,x n ) = (F 1 (x 1,...,x n ),..., F n (x 1,...,x n ))

Αλγόριθμος Απλοϊκός αλγόριθμος υπολογισμού σταθερού σημείου: x = (,..., ); do { t = x; x = F(x); } while (x t); Λίγο καλύτερα: x1 = ;... xn = ; do { t1 = x1;... tn = xn; x1 = F1(x1,..., xn);... xn = Fn(x1,..., xn); } while (x1 t1 or... or xn tn)

Αλυσίδες Ένα σύνολο S ονομάζεται αλυσίδα εάν x,y S: y x ή x y Το πλέγμα P ικανοποιεί τη συνθήκη αύξουσας αλυσίδας, εάν για όλες τις ακολουθίες x 1 x 2 υπάρχει n, τέτοιο ώστε x n = x n+1 =

Ανάλυση Ροής Δεδομένων (DFA) Η πληροφορία που μας ενδιαφέρει απεικονίζεται ως τιμές πλέγματος Οι συναρτήσεις διάδοσης εφαρμόζονται σε τιμές πλέγματος Ο αλγόριθμος επίλυσης παράγει αύξουσα ακολουθία τιμών για κάθε σημείο του προγράμματος Η συνθήκη αύξουσας αλυσίδας εξασφαλίζει τον τερματισμό του αλγορίθμου Η πράξη meet ( ) χρησιμοποιείται για τη συγχώνευση τιμών στα σημεία σύγκλισης του CFG

Συναρτήσεις Διάδοσης Συνάρτηση διάδοσης f: P P για κάθε κόμβο του CFG Η f μοντελοποιεί την επίδραση του κόμβου στη ροής πληροφορίας του προγράμματος

Συναρτήσεις Διάδοσης Σε κάθε πρόβλημα ανάλυσης ροής δεδομένων ορίζουμε ένα σύνολο F συναρτήσεων διάδοσης f: P P, τέτοιο ώστε: Η ταυτοτική συνάρτηση I x.x F Το F πρέπει να είναι κλειστό στη σύνθεση συναρτήσεων: f,g F: h x.f(g(x)) F Κάθε f F πρέπει να είναι μονότονη: x y f(x) f(y)

Μονοτονία και Επιμεριστικότητα Μια επιμεριστική συνάρτηση είναι μονότονη Απόδειξη: Έστω f(x y) = f(x) f(y) Τότε: Αν x y θα δείξουμε ότι f(x) f(y) Όμως x y x y = x, και άρα Αλλά f(x) = f(x y) = f(x) f(y) f(x) = f(x) f(y) f(x) f(y)

Πλαίσιο Ανάλυσης προς τα Εμπρός Προσομοίωση εκτέλεσης του προγράμματος σύμφωνα με τη ροή ελέγχου Για κάθε κόμβο n: in n τιμή ροής δεδομένων αμέσως πριν τον n out n τιμή ροής δεδομένων αμέσως μετά τον n f n συνάρτηση διάδοσης του κόμβου n (με είσοδο in n, υπολογίζει την τιμή out n ) Η λύση πρέπει να ικανοποιεί τις συνθήκες: n: out n = f n (in n ) n n 0 : in n = { out m m pred(n) } in n0 = I όπου I η πληροφορία τιμών στην αρχή του προγράμματος

Εξισώσεις Ροής Δεδομένων Ο μεταγλωττιστής επεξεργάζεται το πρόγραμμα ώστε να βρει το σύνολο των εξισώσεων ροής δεδομένων out n := f n (in n ) in n := { out m m pred(n) }

Αλγόριθμος με Λίστα Εργασίας for each n do out n := f n ( ) in n0 := I; out n0 := f n0 (I) worklist := N - { n 0 } while worklist do remove a node n from worklist in n := { out m m in pred(n) } out n := f n (in n ) if out n changed then worklist := worklist succ(n)

Ορθότητα Αλγόριθμου Γιατί το αποτέλεσμα ικανοποιεί τις εξισώσεις ροής δεδομένων; 1) Από την εφαρμογή της συνάρτησης f n σε κάποιον κόμβο n προκύπτει κατ ανάγκη ότι out n = f n (in n ) 2) Οποτεδήποτε αλλάζει η τιμή out m, οι κόμβοι του succ(m) μπαίνουν στη λίστα εργασίας. Έτσι, κάθε κόμβος n succ(m) θα βγει κάποια στιγμή από τη λίστα και ο αλγόριθμος θα υπολογίσει το in n έτσι ώστε να ισχύει η σχέση in n = { out m m pred(n) } Επομένως η λύση θα ικανοποιεί τις εξισώσεις

Τερματισμός Αλγόριθμου Γιατί ο αλγόριθμος τερματίζεται; Η ακολουθία τιμών που λαμβάνουν τα in n ή out n αποτελεί αλυσίδα. Αν οι τιμές παύουν να αυξάνονται, η λίστα αδειάζει και ο αλγόριθμος τερματίζεται. Άρα αν το πλέγμα ικανοποιεί τη συνθήκη της αύξουσας αλυσίδας, ο αλγόριθμος τερματίζεται

Ορισμοί Χρήσεων P = δυναμοσύνολο του συνόλου των ορισμών του προγράμματος = (μερική διάταξη με τη σχέση ) = I = in n0 = F = οι συναρτήσεις f της μορφής f(x) = a (x-b) Το b είναι το σύνολο ορισμών που παύονται στον κόμβο Το a είναι το σύνολο ορισμών που παράγονται στον κόμβο Γενική μορφή πολλών συναρτήσεων διάδοσης: f(x) = GEN (x-kill)

Πλαίσιο Ανάλυσης Η σχέση ικανοποιεί τις ιδιότητες μερικής διάταξης : x x x y και y z x z x y και y x y = x (ανακλαστική) (μεταβατική) (αντισυμμετρική) Το σύνολο F ικανοποιεί τους περιορισμούς των συναρτήσεων διάδοσης: x. (x- ) = x.x F f(x y) = f(x) f(y) (επιμεριστικότητα) f(x) f(y) = (a (x b)) (a (y b)) = a (x b) (y b) = a ((x y) b) = f(x y)

Πλαίσιο Ανάλυσης (συνέχεια) Σύνθεση συναρτήσεων: Αν f 1 (x) = a 1 (x-b 1 ) και f 2 (x) = a 2 (x-b 2 ) Πρέπει η σύνθεση f 1 (f 2 (x)) να μπορεί να γραφτεί στη μορφή a (x - b) f 1 (f 2 (x)) = a 1 ((a 2 (x-b 2 )) - b 1 ) = a 1 ((a 2 - b 1 ) ((x-b 2 ) - b 1 )) = (a 1 (a 2 - b 1 )) ((x-b 2 ) - b 1 ) = (a 1 (a 2 - b 1 )) (x-(b 2 b 1 )) Έστω a = (a 1 (a 2 - b 1 )) και b = b 2 b 1 Τότε f 1 (f 2 (x)) = a (x b)

Διαθέσιμες Εκφράσεις P = δυναμοσύνολο του συνόλου των εκφράσεων του προγράμματος = (μερική διάταξη με τη σχέση ) = P I = in n0 = F = οι συναρτήσεις f της μορφής f(x) = a (x-b) Το b είναι το σύνολο των εκφράσεων που παύονται στον κόμβο Το a είναι το σύνολο των εκφράσεων που παράγονται στον κόμβο Παρόμοια GEN/KILL μορφή των συναρτήσεων διάδοσης

Πλαίσιο Ανάλυσης προς τα Πίσω Προσομοίωση εκτέλεσης του προγράμματος αντίστροφα με τη ροή ελέγχου Για κάθε κόμβο n: in n τιμή ροής δεδομένων αμέσως πριν τον n out n τιμή ροής δεδομένων αμέσως μετά τον n f n συνάρτηση διάδοσης του κόμβου n (με είσοδο out n, υπολογίζει την τιμή in n ) Η λύση πρέπει να ικανοποιεί τις συνθήκες: n: in n = f n (out n ) n N final : out n = { in m m succ(n) } n N final : out n = O όπου O η πληροφορία τιμών στο τέλος του προγράμματος

Αλγόριθμος με Λίστα Εργασίας for each n do in n := f n ( ) for each n N final do out n := O; in n := f n (O) worklist := N - N final while worklist do remove a node n from worklist out n := { in m m succ(n) } in n := f n (out n ) if in n changed then worklist := worklist pred(n)

Ζωντάνια Μεταβλητών P = δυναμοσύνολο του συνόλου των μεταβλητών του προγράμματος = (μερική διάταξη με τη σχέση ) = O = F = οι συναρτήσεις f της μορφής f(x) = a (x-b) Το b είναι το σύνολο των μεταβλητών που παύονται στον κόμβο Το a είναι το σύνολο των μεταβλητών που διαβάζονται στον κόμβο

Νέα Εφαρμογή DFA: Πολυάσχολες Εκφράσεις Μια έκφραση ονομάζεται πολυάσχολη (very busy) ή αναμενόμενη (anticipated) εάν είναι βέβαιο ότι θα αποτιμηθεί ξανά πριν αλλάξει η τιμή της Δουλεύουμε στο ίδιο πλέγμα τιμών και συναρτήσεων όπως στις διαθέσιμες εκφράσεις Για κάθε κόμβο v του CFG ορίζουμε x v το σύνολο των εκφράσεων που είναι πολυάσχολες στο σημείο προγράμματος αμέσως πριν τον v

Εφαρμόζοντας τη Θεωρία P = δυναμοσύνολο του συνόλου των εκφράσεων του προγράμματος = (μερική διάταξη με τη σχέση ) = P I = in exit = F = οι συναρτήσεις f της μορφής f(x) = a (x-b) Το b είναι το σύνολο των εκφράσεων που παύονται στον κόμβο Το a είναι το σύνολο των εκφράσεων που αποτιμώνται στον κόμβο

Παράδειγμα 1 BB3 BB4 b = b * d; d = a + b; e = e + 1; BB1 BB2 BB6 a = 1; b = 2; c = a + b; d = c a; b = a + b; e = c a; a = b * d; b = a d; BB5 Inexit = In6 = {b*d,e+1} {b*d} In5 = {a+b,c-a,a-d} {a+b,c-a} In4 = {a+b,c-a,e+1} {a+b,e+1,c-a} In3 = {c-a,b*d,e+1,a-d} {b*d,c-a} In2 = {a+b,e+1} {a+b} In1 = {e+1} Out6 = {a+b,c-a,b*d,e+1,a-d} Out5 = {a+b,c-a,b*d,e+1,a-d} {e+1} Out4 = {a+b,c-a,b*d,e+1,a-d} {c-a,b*d,e+1,a-d} {b*d,c-a} Out3 = {a+b,c-a} {a+b,c-a,b*d,e+1,a-d} Out2 = {a+b,c-a,b*d,e+1,a-d} {c-a,a-d} {c-a} Out1 = {a+b,c-a,b*d,e+1,a-d} {a+b,e+1} {a+b} Outentry = {a+b,c-a,b*d,e+1,a-d} {e+1}

Παράδειγμα 2 var x,a,b; x = input; a = x-1; b = x-2; while (x>0) { output a*b-x; x = x-1; } output a*b; var x,a,b,atimesb; x = input; a = x-1; b = x-2; atimesb = a*b; while (x>0) { output atimesb-x; x = x-1; } output atimesb;

Παράδειγμα Ανάλυσης Προσήμου Ανάλυση προσήμου εύρεση προσήμου κάθε μεταβλητής v Βασικό πλέγμα: P = επίπεδο πλέγμα στο σύνολο {-,0,+} TOP (οποιοδήποτε πρόσημο) - 0 + Δημιουργούμε ένα πλέγμα με τις τιμές όλων των μεταβλητών Παράδειγμα σημείου: [a +, b 0, c -] BOT (άγνοια)

Συναρτήσεις Διάδοσης Εάν ο κόμβος n είναι η εντολή v = c, τότε: f n (x) = x[v +] εάν c > 0 f n (x) = x[v 0] εάν c = 0 f n (x) = x[v -] εάν c < 0 Εάν όμως ο κόμβος n είναι εντολή της μορφής v 1 = v 2 *v 3 f n (x) = x[v 1 x[v 2 ] x[v 3 ]] I = TOP (μη αρχικοποιημένες μεταβλητές μπορούν να έχουν οποιοδήποτε πρόσημο)

Πράξη Προσήμων στο Πλέγμα BOT - 0 + TOP BOT BOT BOT 0 BOT BOT - BOT + 0 - TOP 0 0 0 0 0 0 + BOT - 0 + TOP TOP BOT TOP 0 TOP TOP

Παράδειγμα a = 1 [a +] [a +] b = -1 b = 1 [a +, b -] [a +, b +] [a +, b TOP] c = a*b [a +, b TOP,c TOP]

Έλλειψη Ακρίβειας Λόγω αφαιρετικότητας: Η τιμή [a 1] απεικονίζεται αφαιρετικά ως [a +] [a +] a = 1 [a +] b = -1 b = 1 [a +, b -] [a +, b +] [a +, b TOP] c = a*b Λόγω ροής ελέγχου: Η τιμή προσήμου [b TOP] συνδυάζει όλες τις εκτελέσεις, ενώ σε κάθε εκτέλεση η τιμή είναι συγκεκριμένη και TOP

Έλλειψη Ακρίβειας Παρόλο που δυσχεραίνει τις βελτιστοποιήσεις, η έλλειψη ακρίβειας είναι αποδεκτή όταν: Με ακρίβεια το πρόβλημα έχει εκθετική πολυπλοκότητα Το σύνολο τιμών είναι απεριόριστο οπότε δίνουμε αφαιρετικές τιμές μέσα από ένα πεπερασμένο πλέγμα Η εκτέλεση μπορεί να περάσει από απεριόριστο πλήθος καταστάσεων προγράμματος οπότε οι καταστάσεις υπολογίζονται αφαιρετικά με κατάλληλη πράξη σύγκλισης μονοπατιών

Συντηρητική Ανάλυση Οι ορισμοί χρήσεων χρησιμοποιούν την ένωση συνόλων ως πράξη σύγκλισης Οι σχετικές βελτιστοποιήσεις πρέπει να λάβουν υπόψη τους ορισμούς που φτάνουν από κάθε μονοπάτι Οι διαθέσιμες εκφράσεις χρησιμοποιούν την τομή συνόλων ως πράξη σύγκλισης Οι σχετικές βελτιστοποιήσεις απαιτούν τις εκφράσεις να φτάνουν από όλα τα μονοπάτια Οι βελτιστοποιήσεις πρέπει να λειτουργούν συντηρητικά και να λαμβάνουν υπόψη όλα τα πιθανά μονοπάτια εκτέλεσης!

Λύση «Meet-Over-Paths» (MOP) Ποια θα ήταν η ιδανική λύση σε ένα πρόβλημα DFA προς τα εμπρός; Έστω το μονοπάτι p = n 0, n 1,, n k, n προς έναν κόμβο n (όπου i n i pred(n i+1 )) Η λύση πρέπει να λάβει υπόψη το μονοπάτι: f p ( ) = (f nk (f nk-1 ( f n1 (f n0 ( )) )) in n Που σημαίνει ότι για τη λύση πρέπει να ισχύει: {f p ( ) p μονοπάτι προς το n} in n και ιδανικά: {f p ( ) p μονοπάτι προς το n} = in n

Ο Ρόλος της Επιμεριστικότητας Αν το πλαίσιο ανάλυσης είναι επιμεριστικό, τότε ο αλγόριθμος με λίστα εργασίας δίνει τη λύση MOP

Έλλειψη Επιμεριστικότητας Υπολογισμός σταθερών εκφράσεων Επίπεδο πλέγμα ακεραίων TOP -2-1 0 1 2 Το πλέγμα αποδίδει τιμές σε κάθε μεταβλητή Για παράδειγμα: [a 3, b 2, c 5] BOT

Συναρτήσεις Διάδοσης Αν ο κόμβος n είναι της μορφής v = c f n (x) = x[v c] Αν ο κόμβος n είναι της μορφής v 1 = v 2 +v 3 f n (x) = x[v 1 x[v 2 ] + x[v 3 ]]

Έλλειψη Επιμεριστικότητας [a 2, b 3] a = 2 b = 3 a = 3 b = 2 [a 3, b 2] [a TOP, b TOP] c = a+b [a TOP, b TOP, c TOP] Πρόβλημα έλλειψης επιμεριστικότητας: Η λύση [a TOP, b TOP, c 5] θα ήταν καλύτερη Ποια είναι εδώ η λύση ΜΟΡ;

Εφαρμογή Επιμεριστικότητας Διατήρησε όλους τους συνδυασμούς τιμών στα διαφορετικά μονοπάτια! a = 2 b = 3 {[a 2, b 3]} a = 3 b = 2 {[a 3, b 2]} {[a 2, b 3], [a 3, b 2]} c = a+b {[a 2, b 3,c 5], [a 3, b 2,c 5]}