Θεωρία Υπολογισμού Αλγόριθμοι και Μηχανές Turing Υπολογισιμότητα
Δομικές συνιστώσες υπολογισιμότητας ΜΤ Μοντελοποίηση υπολογιστή λ-Calculus Φορμαλισμός αλγορίθμων σαν συναρτήσεις Church-Turing Thesis Ένα πρόβλημα μπορεί να επιλυθεί με έναν αλγόριθμο ανν μπορεί να επιλυθεί από μια ΜΤ
Αλγόριθμοι και ΜΤ Αλγόριθμος είναι μια σαφής πεπερασμένη ακολουθία εντολών οι οποίες αν ακολουθηθούν επιτυγχάνεται κάποιο επιθυμητό αποτέλεσμα. Το 10 ο πρόβλημα του Hilbert Να επινοηθεί ένας αλγόριθμος που να ελέγχει αν ένα πολυώνυμο (με ακέραιους συντελεστές) έχει ακέραια ρίζα. Να επινοηθεί μια Μηχανή Turing που να ελέγχει αν ένα πολυώνυμο έχει ακέραια ρίζα. Είναι η D = {p | το p είναι ένα πολυώνυμο με ακέραια ρίζα} διαγνώσιμη; Υπάρχει ΜΤ που να διαγιγνώσκει την D;
D1= {p | το p είναι ένα πολυώνυμο μιας μεταβλητής με ακέραια ρίζα} Μ1 = ‘ Για είσοδο ένα πολυώνυμο p της μεταβλητής x: Θέτουμε διαδοχικά την x ίση με 0,1,-1,2,-2,3,-3,... και για κάθε τιμή υπολογίζουμε την αντίστοιχη τιμή του πολυωνύμου. Εάν το p γίνει 0, αποδεχόμαστε. ’ Η Μ1 αναγνωρίζει την D1 Περίπτωση 1: Έστω υπάρχει ρίζα k. Θα την εντοπίσουμε μετά από το πολύ 2k + 1 επαναλήψεις Περίπτωση 2: Έστω ότι δεν υπάρχει ρίζα. Τότε η ΤΜ δεν θα τερματίσει ποτέ. Η Μ αναγνωρίζει την D
Διαγνωσιμότητα
Διαγνώσιμα προβλήματα Προβλήματα που λύνονται αλγοριθμικά Που βρίσκονται τα όρια της αλγοριθμικής επιλυσιμότητας; Γιατί μελετούμε την ανεπιλυτότητα; Για να μπορούμε να γνωρίζουμε αν είναι εφικτή μια αλγοριθμική λύση για κάποιο πρόβλημα Για να γνωρίσουμε τις δυνατότητες και αδυναμίες των υπολογιστών Για να αποκτήσουμε μια σφαιρική άποψη της έννοιας του υπολογισμού
Προβλήματα σχετικά με Κανονικές Γλώσσες Υπολογιστικά προβλήματα που αφορούν πεπερασμένα αυτόματα. Το πρόβλημα της αποδοχής Έλεγχος κατά πόσο κάποιο αυτόματο αποδέχεται μια λέξη Το πρόβλημα της κενότητας Έλεγχος κατά πόσο η γλώσσα που αναγνωρίζει ένα αυτόματο είναι κενή Το πρόβλημα της ισοδυναμίας Έλεγχος κατά πόσο δύο αυτόματα αναγνωρίζουν τις ίδιες γλώσσες Θα αναπαραστήσουμε τα προβλήματα ως γλώσσες.
Πρόβλημα: Να καταστρώσουμε ένα αλγόριθμο ο οποίος, με δεδομένα εισόδου ένα ΝΠΑ B και μια λέξη w να αποφασίζει κατά πόσο τo B αποδέχεται τη w; Παράδειγμα: Aποδέχεται το παρακάτω αυτόματο την λέξη abb; Το ερώτημα αυτό μπορεί να διατυπωθεί μέσω μιας γλώσσας: A ΝΠΑ = { : το B είναι ένα ΝΠΑ που αποδέχεται την λέξη w} Είναι η γλώσσα A ΝΠΑ διαγνώσιμη; Το Πρόβλημα της Αποδοχής σε ΝΠΑ (1/3)
Το Πρόβλημα της Αποδοχής σε ΝΠΑ (2/3) Το ερώτημα συνίσταται στην κατασκευή μιας ΜT η οποία με δεδομένο ένα αυτόματο Β και μια λέξη w να αποδέχεται αν και μόνο αν το Β αποδέχεται τη w. Παράδειγμα: B: w = abb Αναζητούμε ΜΤ η οποία, με δεδομένο εισόδου θα οδηγήσει σε αποδοχή
Το Πρόβλημα της Αποδοχής σε ΝΠΑ A ΝΠΑ = { : το B είναι ένα ΝΠΑ που αποδέχεται την λέξη w}
Το Πρόβλημα της Αποδοχής σε ΝΠΑ A ΝΠΑ = { : το B είναι ένα ΝΠΑ που αποδέχεται την λέξη w}