Τεχνολογίες Υλοποίησης Αλγορίθµων

Σχετικά έγγραφα
Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

Στοιχεία Θεωρίας Γραφηµάτων (1)

Κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Πολυγραφήµατα (Multigraphs)

Τεχνολογίες Υλοποίησης Αλγορίθµων

Υπολογιστικό Πρόβληµα

Μονοπάτια και Κυκλώµατα Euler. Στοιχεία Θεωρίας Γραφηµάτων (3,4) Παραδείγµατα. Κριτήρια Υπαρξης.

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

Μη κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Υπογραφήµατα.

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι έχουµε δει µέχρι τώρα. Υπογράφηµα Γράφοι

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Εισαγωγή στους Αλγορίθμους

ΠΛΗ 20, 5 η ΟΣΣ: Θεωρία Γραφημάτων

Εισαγωγή στους Αλγορίθμους Ενότητα 7η

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

ιακριτά Μαθηµατικά και Μαθηµατική Λογική ΠΛΗ20 Ε ρ γ α σ ί α 3η Θεωρία Γραφηµάτων

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Εισαγωγή στους Αλγορίθμους Ενότητα 10η

Τεχνολογίες Υλοποίησης Αλγορίθµων

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

ιακριτά Μαθηµατικά και Μαθηµατική Λογική ΠΛΗ20 Ε ρ γ α σ ί α 3η Θεωρία Γραφηµάτων

Θεωρία Γραφημάτων 6η Διάλεξη

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Στοιχεία Θεωρίας Γραφηµάτων (3)

Απαρίθµηση Μονοπατιών. Στοιχεία Θεωρίας Γραφηµάτων (3) Μονοπάτια και Κυκλώµατα Euler. Ορέστης Τελέλης

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι είναι οι γράφοι; Εφαρµογές των γράφων Γράφοι

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

ΠΛΗ 20, 5 η ΟΣΣ: Θεωρία Γραφημάτων

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

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

Παράδειγµα (4) Στοιχεία Θεωρίας Γραφηµάτων (2) Ορέστης Τελέλης. Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς. v 2. u 3.

Υπολογιστική Πολυπλοκότητα Εξέταση Ιουνίου 2017 Σελ. 1 από 5

jτο πλήθος των ταξιδιών που κάνει η αεροσυνοδός µέχρι την j ηµέρα. Σχηµατίζω µία ακολουθία που αποτελείται από τα a.

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι είναι οι γράφοι; Εφαρµογές των γράφων Γράφοι

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Τεχνολογίες Υλοποίησης Αλγορίθµων

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 5: ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΙΚΩΝ ΠΡΟΒΛΗΜΑΤΩΝ-ΑΝΑΓΩΓΗ

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 2: Γραφήματα

Στοιχεία Θεωρίας Γραφηµάτων (2)

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Αλγόριθµοι Γραφηµάτων

Θεωρία Γραφημάτων 11η Διάλεξη

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

ΠΛΗ 20, 5 η ΟΣΣ: Θεωρία Γραφημάτων

Σχεδίαση και Ανάλυση Αλγορίθμων

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

ΚΕΦΑΛΑΙΟ 12: Θεωρία υπολογισµών

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

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

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

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

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 8

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

11.1 Συναρτήσεις. ΚΕΦΑΛΑΙΟ 11: Θεωρία υπολογισµών

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων / γραφήματα. Τι έχουμε δει μέχρι τώρα. Υπογράφημα. 24 -Γράφοι

Εισαγωγή στην πληροφορική

... a b c d. b d a c

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

Φροντιστήριο 11 Λύσεις

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

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

Αναζήτηση Κατά Πλάτος

Επίπεδα Γραφήματα (planar graphs)

Δοµές Δεδοµένων & Ανάλυση Αλγορίθµων 3ο Εξάµηνο. Γραφήµατα. (Graphs)

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 6

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

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Μέθοδοι Μηχανών Μάθησης για Ευφυή Αναγνώριση και ιάγνωση Ιατρικών εδοµένων

Τεχνολογία Λογισµικού Ι Κεφάλαιο 6

Αλγόριθμοι Γραφημάτων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

Συντομότερες Διαδρομές

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

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

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Γραµµική Αλγεβρα. Ενότητα 3 : ιανυσµατικοί Χώροι και Υπόχωροι. Ευστράτιος Γαλλόπουλος Τµήµα Μηχανικών Η/Υ & Πληροφορικής

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

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

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

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

HY118-Διακριτά Μαθηματικά. Θεωρία γράφων/ γραφήματα. Τι έχουμε δει μέχρι τώρα. Ισομορφισμός γράφων: Μία σχέση ισοδυναμίας μεταξύ γράφων.

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

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

Ελαφρύτατες διαδρομές

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

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

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιμότητα. Παύλος Εφραιμίδης V1.1,

Transcript:

Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 3 1 / 25

Ενότητα 3 οκιµή Προγραµµάτων (Program Testing) Ελεγχος Ορθότητας Προγραµµάτων (Program Correctness Checking) 2 / 25

οκιµή Προγράµµατος 3 / 25

οκιµή Προγράµµατος εκτέλεση του προγράµµατος σε υπολογιστή χρησιµοποιώντας δεδοµένα δοκιµής ( test data) 3 / 25

οκιµή Προγράµµατος εκτέλεση του προγράµµατος σε υπολογιστή χρησιµοποιώντας δεδοµένα δοκιµής ( test data) Σύγκριση µεταξύ πραγµατικής και αναµενόµενης (ϑεωρητικής) συµπεριφοράς του 3 / 25

οκιµή Προγράµµατος Στόχος 4 / 25

οκιµή Προγράµµατος Στόχος οκιµή (testing) Ελεγχος ορθότητας (correctness checking) αριθµός των διαφορετικών εισόδων µπορεί να είναι γενικά πολύ µεγάλος η δοκιµή περιορίζεται συχνά σε ένα µικρό υποσύνολο όλων των δυνατών εισόδων σύνολο δοκιµής (test set) σύνολο δοκιµής δεν µπορεί να µας δώσει ορθότητα προγράµµατος 4 / 25

οκιµή Προγράµµατος Στόχος οκιµή (testing) Ελεγχος ορθότητας (correctness checking) αριθµός των διαφορετικών εισόδων µπορεί να είναι γενικά πολύ µεγάλος η δοκιµή περιορίζεται συχνά σε ένα µικρό υποσύνολο όλων των δυνατών εισόδων σύνολο δοκιµής (test set) σύνολο δοκιµής δεν µπορεί να µας δώσει ορθότητα προγράµµατος Στόχος οκιµής: όχι η εξασφάλιση ορθότητας, αλλά ο εντοπισµός των λαθών Program testing can be used to show the presence of bugs, but never to show their absence! [Dijkstra, 1972] 4 / 25

οκιµή Προγράµµατος Σχεδιασµός δεδοµένων δοκιµής 5 / 25

οκιµή Προγράµµατος Σχεδιασµός δεδοµένων δοκιµής Μέθοδοι Black-Box Λαµβάνουν υπόψιν τη λειτουργία του αλγορίθµου και όχι του κώδικα ιαχωρισµός δεδοµένων εισόδου σε διαφορετικές οµάδες που η κάθε µία αντιπροσωπεύει µια ποιοτικά διαφορετική συµπεριφορά 5 / 25

οκιµή Προγράµµατος Σχεδιασµός δεδοµένων δοκιµής Μέθοδοι Black-Box Λαµβάνουν υπόψιν τη λειτουργία του αλγορίθµου και όχι του κώδικα ιαχωρισµός δεδοµένων εισόδου σε διαφορετικές οµάδες που η κάθε µία αντιπροσωπεύει µια ποιοτικά διαφορετική συµπεριφορά Μέθοδοι White-Box Σχεδιασµός δεδοµένων δοκιµής µετά από λεπτοµερή εξέταση του κώδικα, προκειµένου να καλύψουν όλες τις εντολές του προγράµµατος και όλες τις πιθανές «διαδροµές» εκτέλεσης 5 / 25

Ελεγχος Ορθότητας Προγραµµάτων 6 / 25

Ελεγχος Ορθότητας Προγραµµάτων ιαδικασία που µας ϐοηθά να αυξήσουµε σηµαντικά την εµπιστοσύνη µας σε µια υλοποίηση 6 / 25

Ελεγχος Ορθότητας Προγραµµάτων Εστω P ένα πρόγραµµα το οποίο υπολογίζει µια συνάρτηση f P x f y 7 / 25

Ελεγχος Ορθότητας Προγραµµάτων Εστω P ένα πρόγραµµα το οποίο υπολογίζει µια συνάρτηση f P x f y Πώς µπορούµε να ϐεβαιωθούµε ότι το P, µε είσοδο x, όντως υπολογίζει y = f(x) ; 7 / 25

Ελεγχος Ορθότητας Προγραµµάτων Αρνητικά Παραδείγµατα Ο αλγόριθµος ελέγχου γραφήµατος ως προς το αν είναι επίπεδο ήταν εσφαλµένος στην LEDA 2.0 Το σύστηµα (CAD) Rhino3d αποτυγχάνει να υπολογίσει σωστά την τοµή δύο κυλίνδρων και δύο σφαιρών Ο επιλυτής γραµµικών προγραµµάτων CPLEX αποτυγχάνει στο πρόβληµα δοκιµής επιδόσεων (benchmark problem) etamacro 8 / 25

Ελεγχος Ορθότητας Προγραµµάτων όγµα Τα προγράµµατα πρέπει να δικαιολογούν (αποδεικνύουν) την έξοδό τους µε έναν τρόπο που να µπορεί εύκολα να επαληθευθεί από κάποιον χρήστη 9 / 25

Ελεγχος Ορθότητας Προγραµµάτων Προγράµµατα Πιστοποίησης (Certifying Programs) Ενα πρόγραµµα P καλείται πρόγραµµα πιστοποίησης (ή ελέγξιµο) αν είσοδο x επιστρέφει y, την ϕερόµενη τιµή της f(x), και ένα πιστοποιητικό (ή πληροφορία επιβεβαίωσης) I το οποίο καθιστά εύκολα επαληθεύσιµο ότι όντως y = f(x) x P y=f(x) I 10 / 25

Ελεγχος Ορθότητας Προγραµµάτων Προγράµµατα Πιστοποίησης Εύκολα επαληθεύσιµο απλό πρόγραµµα C, ο ελεγκτής, το οποίο δεδοµένων των x, y, και I ελέγχει αν όντως y = f(x) Το C πρέπει να είναι τόσο απλό που η ορθότητά του να είναι προφανής x y C I y=f(x)? true : false 11 / 25

Ελεγχος Ορθότητας Προγραµµάτων Προγράµµατα Πιστοποίησης Εύκολα επαληθεύσιµο απλό πρόγραµµα C, ο ελεγκτής, το οποίο δεδοµένων των x, y, και I ελέγχει αν όντως y = f(x) Το C πρέπει να είναι τόσο απλό που η ορθότητά του να είναι προφανής x y C I y=f(x)? true : false Ο χρόνος εκτέλεσης (πραγµατικός ή ασυµπτωτικός) του C µε είσοδο x, y και I δεν πρέπει να είναι µεγαλύτερος από εκείνον του P µε είσοδο x 11 / 25

Ελεγχος Ορθότητας Προγραµµάτων Παραδείγµατα Επίλυση γραµµικών συστηµάτων Εύρεση συντοµότερων αποστάσεων Ελεγχος επιπεδότητας γραφηµάτων Ελεγχος διµερότητας γραφηµάτων 12 / 25

Ελεγχος Ορθότητας Προγραµµάτων Επίλυση γραµµικών συστηµάτων Θεωρήστε ένα πρόγραµµα P 1 το οποίο παίρνει σαν είσοδο ένα µητρώο A m n και ένα διάνυσµα b m 1 και εξετάζει αν το γραµµικό σύστηµα A x = b έχει λύση ή όχι, επιστρέφοντας µια λογική τιµή true ή false 13 / 25

Ελεγχος Ορθότητας Προγραµµάτων Επίλυση γραµµικών συστηµάτων Θεωρήστε ένα πρόγραµµα P 1 το οποίο παίρνει σαν είσοδο ένα µητρώο A m n και ένα διάνυσµα b m 1 και εξετάζει αν το γραµµικό σύστηµα A x = b έχει λύση ή όχι, επιστρέφοντας µια λογική τιµή true ή false Είναι το P 1 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; 13 / 25

Ελεγχος Ορθότητας Προγραµµάτων Επίλυση γραµµικών συστηµάτων Θεωρήστε ένα πρόγραµµα P 1 το οποίο παίρνει σαν είσοδο ένα µητρώο A m n και ένα διάνυσµα b m 1 και εξετάζει αν το γραµµικό σύστηµα A x = b έχει λύση ή όχι, επιστρέφοντας µια λογική τιµή true ή false Είναι το P 1 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; Αν όχι, τότε πώς µπορεί να γίνει ; 13 / 25

Ελεγχος Ορθότητας Προγραµµάτων Επίλυση γραµµικών συστηµάτων Το P 1, ως έχει, δεν είναι πρόγραµµα πιστοποίησης Για να γίνει, πρέπει να επεκταθεί η διασύνδεσή του 14 / 25

Ελεγχος Ορθότητας Προγραµµάτων Επίλυση γραµµικών συστηµάτων Το P 1, ως έχει, δεν είναι πρόγραµµα πιστοποίησης Για να γίνει, πρέπει να επεκταθεί η διασύνδεσή του Με είσοδο A και b ένα πρόγραµµα πιστοποίησης P 1 επιστρέφει είτε «το σύστηµα έχει λύση» και ένα διάνυσµα x τέτοιο ώστε A x = b είτε «το σύστηµα δεν έχει λύση» και ένα διάνυσµα c τέτοιο ώστε c T A = 0 και c T b 0 14 / 25

Ελεγχος Ορθότητας Προγραµµάτων Επίλυση γραµµικών συστηµάτων Το P 1, ως έχει, δεν είναι πρόγραµµα πιστοποίησης Για να γίνει, πρέπει να επεκταθεί η διασύνδεσή του Με είσοδο A και b ένα πρόγραµµα πιστοποίησης P 1 επιστρέφει είτε «το σύστηµα έχει λύση» και ένα διάνυσµα x τέτοιο ώστε A x = b είτε «το σύστηµα δεν έχει λύση» και ένα διάνυσµα c τέτοιο ώστε c T A = 0 και c T b 0 Τώρα το P 1 είναι εύκολα επαληθεύσιµο: απαιτούνται το πολύ δύο (απλοί και εύκολα ελέγξιµοι) πολλαπλασιασµοί µητρώου µε διάνυσµα και διάνυσµα µε διάνυσµα 14 / 25

Ελεγχος Ορθότητας Προγραµµάτων Εύρεση συντοµότερων αποστάσεων Θεωρήστε ένα πρόγραµµα P 2 που δέχεται ως είσοδο ένα κατευθυνόµενο γράφηµα G = (V, E), µε κόστη στις πλευρές του wt : E IR >0 και µε µια κορυφή αφετηρίας s V, και το οποίο υπολογίζει (µόνο) τις συντοµότερες αποστάσεις d(v), v V, από την s 15 / 25

Ελεγχος Ορθότητας Προγραµµάτων Εύρεση συντοµότερων αποστάσεων Θεωρήστε ένα πρόγραµµα P 2 που δέχεται ως είσοδο ένα κατευθυνόµενο γράφηµα G = (V, E), µε κόστη στις πλευρές του wt : E IR >0 και µε µια κορυφή αφετηρίας s V, και το οποίο υπολογίζει (µόνο) τις συντοµότερες αποστάσεις d(v), v V, από την s Είναι το P 2 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; 15 / 25

Ελεγχος Ορθότητας Προγραµµάτων Εύρεση συντοµότερων αποστάσεων Θεωρήστε ένα πρόγραµµα P 2 που δέχεται ως είσοδο ένα κατευθυνόµενο γράφηµα G = (V, E), µε κόστη στις πλευρές του wt : E IR >0 και µε µια κορυφή αφετηρίας s V, και το οποίο υπολογίζει (µόνο) τις συντοµότερες αποστάσεις d(v), v V, από την s Είναι το P 2 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; Αν όχι, τότε πώς µπορεί να γίνει ; 15 / 25

Ελεγχος Ορθότητας Προγραµµάτων Εύρεση συντοµότερων αποστάσεων Θεωρήστε ένα πρόγραµµα P 2 που δέχεται ως είσοδο ένα κατευθυνόµενο γράφηµα G = (V, E), µε κόστη στις πλευρές του wt : E IR >0 και µε µια κορυφή αφετηρίας s V, και το οποίο υπολογίζει (µόνο) τις συντοµότερες αποστάσεις d(v), v V, από την s Είναι το P 2 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; Αν όχι, τότε πώς µπορεί να γίνει ; Το P 2, ως έχει, είναι όντως πρόγραµµα πιστοποίησης (u, v) E: d(v) d(u) + wt(u, v), µε την ισότητα να ισχύει για τουλάχιστον n 1 ακµές (n = V ) 15 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος επιπεδότητας γραφηµάτων Θεωρήστε ένα πρόγραµµα P 3 το οποίο δέχεται ως είσοδο ένα γράφηµα G και εξετάζει αν το G είναι επίπεδο ή όχι, επιστρέφοντας µια λογική τιµή true ή false 16 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος επιπεδότητας γραφηµάτων Θεωρήστε ένα πρόγραµµα P 3 το οποίο δέχεται ως είσοδο ένα γράφηµα G και εξετάζει αν το G είναι επίπεδο ή όχι, επιστρέφοντας µια λογική τιµή true ή false Είναι το P 3 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; 16 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος επιπεδότητας γραφηµάτων Θεωρήστε ένα πρόγραµµα P 3 το οποίο δέχεται ως είσοδο ένα γράφηµα G και εξετάζει αν το G είναι επίπεδο ή όχι, επιστρέφοντας µια λογική τιµή true ή false Είναι το P 3 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; Αν όχι, τότε πώς µπορεί να γίνει ; 16 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος επιπεδότητας γραφηµάτων Το P 3, ως έχει, δεν είναι πρόγραµµα πιστοποίησης Για να γίνει, πρέπει να επεκταθεί η διασύνδεσή του 17 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος επιπεδότητας γραφηµάτων Το P 3, ως έχει, δεν είναι πρόγραµµα πιστοποίησης Για να γίνει, πρέπει να επεκταθεί η διασύνδεσή του Με είσοδο G το πρόγραµµα πιστοποίησης P 3 επιστρέφει είτε «επίπεδο» µαζί µε µια επίπεδη απεικόνιση του G είτε «µη-επίπεδο» µαζί µε ένα υπογράφηµα του G οµοιοµορφικό µε το K 5 ή το K 3,3 (υπογραφήµατα Kuratowski) K 5 K 3,3 17 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Θεωρήστε ένα πρόγραµµµα P 4 που δέχεται ως είσοδο ένα γράφηµα G και εξετάζει αν το G είναι διµερές ή όχι, επιστρεφοντας µια λογική τιµή true ή false 18 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Θεωρήστε ένα πρόγραµµµα P 4 που δέχεται ως είσοδο ένα γράφηµα G και εξετάζει αν το G είναι διµερές ή όχι, επιστρεφοντας µια λογική τιµή true ή false Είναι το P 4 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; 18 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Θεωρήστε ένα πρόγραµµµα P 4 που δέχεται ως είσοδο ένα γράφηµα G και εξετάζει αν το G είναι διµερές ή όχι, επιστρεφοντας µια λογική τιµή true ή false Είναι το P 4 ένα πρόγραµµα πιστοποίησης (ελέγξιµο) ; Αν όχι, τότε πώς µπορεί να γίνει ; 18 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Το P 4, ως έχει, δεν είναι πρόγραµµα πιστοποίησης a b x y d c z 2-χρωµατισµός πιστοποιεί διµερότητα περιττός κύκλος πιστοποιεί µη-διµερότητα 19 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Το P 4, ως έχει, δεν είναι πρόγραµµα πιστοποίησης a b x y d c z 2-χρωµατισµός πιστοποιεί διµερότητα Πρόγραµµα (αλγόριθµος) πιστοποίησης P 4 : περιττός κύκλος πιστοποιεί µη-διµερότητα 19 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Το P 4, ως έχει, δεν είναι πρόγραµµα πιστοποίησης a b x y d c z 2-χρωµατισµός πιστοποιεί διµερότητα Πρόγραµµα (αλγόριθµος) πιστοποίησης P 4 : περιττός κύκλος πιστοποιεί µη-διµερότητα Κατασκευή γεννητικού δένδρου και χρήση του για χρωµατισµό κορυφών του G µε χρώµατα πράσινο και µπλε 19 / 25

Ελεγχος Ορθότητας Προγραµµάτων Ελεγχος διµερότητας γραφηµάτων Το P 4, ως έχει, δεν είναι πρόγραµµα πιστοποίησης a b x y d c z 2-χρωµατισµός πιστοποιεί διµερότητα Πρόγραµµα (αλγόριθµος) πιστοποίησης P 4 : περιττός κύκλος πιστοποιεί µη-διµερότητα Κατασκευή γεννητικού δένδρου και χρήση του για χρωµατισµό κορυφών του G µε χρώµατα πράσινο και µπλε για κάθε µη-δενδρική ακµή, έλεγχος αν τα άκρα της έχουν διαφορετικά χρώµατα Αν ναι, τότε το G είναι διµερές (και ο χρωµατισµός το αποδεικνύει) Αν όχι, τότε το G δεν είναι διµερές Εστω e = (x, y) µια µη-δενδρική ακµή µε άκρα ίδιου χρώµατος Η δενδρική διαδροµή x-y έχει άρτιο µήκος (x & y έχουν ίδιο χρώµα) Η ακµή e µε την δενδρική διαδροµή x-y είναι ένας περιττός κύκλος 19 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 20 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 1. Η απάντηση του προγράµµατος µπορεί να επαληθευθεί για κάθε ξεχωριστό στιγµιότυπο εισόδου επαλήθευση προγράµµατος (program verification) η οποία παρέχει εγγύηση για όλα τα στιγµιότυπα εισόδου 20 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 1. Η απάντηση του προγράµµατος µπορεί να επαληθευθεί για κάθε ξεχωριστό στιγµιότυπο εισόδου επαλήθευση προγράµµατος (program verification) η οποία παρέχει εγγύηση για όλα τα στιγµιότυπα εισόδου 2. Οι αλγόριθµοι πιστοποίησης είναι αξιόπιστοι Είτε δίνουν τη σωστή απάντηση Είτε παρέχουν ένδειξη ότι υπάρχει σφάλµα 20 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 1. Η απάντηση του προγράµµατος µπορεί να επαληθευθεί για κάθε ξεχωριστό στιγµιότυπο εισόδου επαλήθευση προγράµµατος (program verification) η οποία παρέχει εγγύηση για όλα τα στιγµιότυπα εισόδου 2. Οι αλγόριθµοι πιστοποίησης είναι αξιόπιστοι Είτε δίνουν τη σωστή απάντηση Είτε παρέχουν ένδειξη ότι υπάρχει σφάλµα 3. Υπολογισµός αυξηµένης εµπιστοσύνης Ο χρήστης µπορεί να αυξήσει την εµπιστοσύνη του στην ορθότητα του προγράµµατος καταβάλοντας πολύ µικρή διανοητική προσπάθεια ανάγκη να καταλάβει το πρόγραµµα αρκεί να καταλάβει την ιδιότητα του πιστοποιητικού και τον ελεγκτή ορθότητας Ο υλοποιητής ενός προγράµµατος µπορεί να δώσει µια πειστική ένδειξη της ορθότητάς του χωρίς να αποκαλύψει οποιαδήποτε λεπτοµέρεια της υλοποίησης 20 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 21 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 4. Ο έλεγχος ορθότητας επιτρέπει να χρησιµοποιούµε ένα πιθανώς µη-ορθό πρόγραµµα σαν να ήταν ορθό πολύ χρήσιµο κατά τη διαδικασία αποσφαλµάτωσης f f1 f2 21 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 4. Ο έλεγχος ορθότητας επιτρέπει να χρησιµοποιούµε ένα πιθανώς µη-ορθό πρόγραµµα σαν να ήταν ορθό πολύ χρήσιµο κατά τη διαδικασία αποσφαλµάτωσης f f1 f2 5. Ο έλεγχος ορθότητας υποστηρίζει τη δοκιµή προγράµµατος (testing) for (int n = 0; n < 100; n++) for (int m = 0; m < 100; m++) { random_graph(g,n,m); // random graph with n nodes and m edges list<edge> M = MAX_CARD_MATCHING(G,OSC); CHECK_MAX_CARD_MATCHING(G,M,OSC); } 21 / 25

Ελεγχος Ορθότητας Προγραµµάτων Πλεονεκτήµατα 6. Ενας ελεγκτής (πρόγραµµα ελέγχου ορθότητας) µπορεί να γραφεί αν υπάρχει αυστηρός ορισµός του προβλήµατος που επιλύει το πρόγραµµα που ελέγχει Π.χ. αν ένας αλγόριθµος επίλυσης ενός προβλήµατος γραφηµάτων υποθέτει ότι δεν υπάρχουν µεµονωµένοι κόµβοι στο γράφηµα, τότε η ίδια υπόθεση πρέπει να τηρηθεί και από τον ελεγκτή 22 / 25

Ελεγχος Ορθότητας Προγραµµάτων Αλλα Ϲητήµατα 23 / 25

Ελεγχος Ορθότητας Προγραµµάτων Αλλα Ϲητήµατα Καθολικότητα: Εχει κάθε πρόβληµα έναν αλγόριθµο πιστοποίησης ; Μπορεί κάθε πρόγραµµα να µετατραπεί σε πρόγραµµα πιστοποίησης ; 23 / 25

Ελεγχος Ορθότητας Προγραµµάτων Αλλα Ϲητήµατα Καθολικότητα: Εχει κάθε πρόβληµα έναν αλγόριθµο πιστοποίησης ; Μπορεί κάθε πρόγραµµα να µετατραπεί σε πρόγραµµα πιστοποίησης ; Κάθε αιτιοκρατικό πρόγραµµα µπορεί να µετατραπεί σε πρόγραµµα πιστοποίησης [McConnell, Mehlhorn, Naeher, Schweitzer, 2011] 23 / 25

Ελεγχος Ορθότητας Προγραµµάτων Αλλα Ϲητήµατα Καθολικότητα: Εχει κάθε πρόβληµα έναν αλγόριθµο πιστοποίησης ; Μπορεί κάθε πρόγραµµα να µετατραπεί σε πρόγραµµα πιστοποίησης ; Κάθε αιτιοκρατικό πρόγραµµα µπορεί να µετατραπεί σε πρόγραµµα πιστοποίησης [McConnell, Mehlhorn, Naeher, Schweitzer, 2011] Τυπική Επαλήθευση (formal verification): προσθέτει ένα επιπλέον επίπεδο εµπιστοσύνης Τυπικές αποδείξεις είναι ορθές και πλήρεις είναι µηχανικά ελεγχόµενες (από ένα πολύ απλό πρόγραµµα) επιτρέπουν τη δηµιουργία µεγάλων ϐιβλιοθηκών έµπιστων αλγορίθµων επιτρέπουν στον χρήστη να καταβάλλει ακόµα µικρότερη διανοητική προσπάθεια εµπιστευθειτε απλώς τον ελεγκτή απόδειξης! 23 / 25

Σύνοψη οκιµή προγραµµάτων Ελεγχος Ορθότητας Προγραµµάτων Αλγόριθµοι/προγράµµατα πιστοποίησης: ιδιαίτερα επωφελή... µπορούν να ελεγχθούν σε κάθε είσοδο είναι αξιόπιστα µπορούµε να τα εµπιστευθούµε χωρίς να γνωρίζουµε τον κώδικα υποστηρίζουν τον υπολογισµό αυξηµένης εµπιστοσύνης... και παρέχουν έναν νέο τρόπο ανάπτυξης αλγορίθµων 24 / 25

Ερωτήσεις ; 25 / 25