Θεωρία υπολογισμού: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
JohnMad (συζήτηση | συνεισφορές)
JohnMad (συζήτηση | συνεισφορές)
μΧωρίς σύνοψη επεξεργασίας
Γραμμή 1:
Η '''θεωρία υπολογισμού''' είναι ο κλάδος της [[επιστήμη υπολογιστών|επιστήμης υπολογιστών]] που πραγματεύεται με το εάν, και το πόσο αποδοτικά μπορούν να λυθεί κάποιο πρόβλημα σε ένα [[υπολογιστικό μοντέλο]], με χρήση ενός [[αλγόριθμος|αλγορίθμου]]. Ο τομέας διαιρείται σε δύο κύριους κλάδους: την [[θεωρία υπολογισιμότητας]] και τη [[θεωρία πολυπλοκότητας]], αλλά και οι δύο αφορούν τα [[μοντέλο υπολογισμού|μοντέλα υπολογισμού]].
 
Για να πραγματοποιήσουν μια εξονυχιστική μελέτη των υπολογισμών, οι επιστήμονες υπολογιστών αντιμετωπίζουν τον υπολογιστή ως μια αφηρημένη μαθηματική έννοια, που λέγεται μοντέλο υπολογισμού. Υπάρχουν διάφορες διατυπώσεις που χρησιμοποιούνται, αλλά η πιο συχνή είναι η [[μηχανή Τούρινγκ]]. Μπορεί κανείς να θεωρήσει τη μηχανή Τούρινγκ σαν ένα [[προσωπικός υπολογιστής|προσωπικό υπολογιστή]] με άπειρη μνήμη, αν και μπορεί να την προσπελάσει μόνο σε μικρά διακριτά κομμάτια. Οι επιστήμονες υπολογιστών μελετούν τη μηχανή Τούρινγκ γιατί έχει απλή διατύπωση και μπορούν να την αναλύσουν, να την χρησιμοποιήσουν σε αποδείξεις, και λόγω του ότι κατά πολλούς αντιπροσωπεύει το πιο ισχυρό εφικτό μοντέλο υπολογισμού. Αν και η άπειρη μνήμη μπορεί να θεωρηθεί ανέφικτη, στην πραγματικότητα κάθε πρόβλημα που λύνει η μηχανή Τούρινγκ χρειάζεται πάντα πεπερασμένη μνήμη, άρα κάθε πρόβλημα που μπορεί να λυθεί από μια μηχανή Τούρινγκ, θα μπορούσε να λυθεί από έναν προσωπικό υπολογιστή που έχειμε αρκετήεπαρκή μνήμη.
 
== Τυπική Γραμματική ==
Γραμμή 24:
:* εφαρμόζεται επαγωγική (bottom-up) προσέγγιση, από το μερικό προς το γενικό.
 
== Βασικές Αρχέςαρχές ==
Kleen[[Αστέρι StarΚλέινι]] Κλειστότηταή κλειστότητα Κλέινι (Kleene Star) ενός αλφαβήτου Σ ονομάζουμε το σύνολο Σ* όλων των δυνατών συμβολοσειρών που προκύπτουν από αυτό το αλφάβητο. Πρόκειται για ένα [[μετρήσιμο [[σύνολο|απειροσύνολο]] (''Συμπέρασμα 1''). Γλώσσα ονομάζουμε ένα υποσύνολο του Σ* για δεδομένο αλφάβητο Σ. Το [[σύνολο]] όλων των γλωσσών που προκύπτουν από ένα αλφάβητο Σ είναι το [[δυναμοσύνολο]] (το σύνολο όλων των δυνατών υποσυνόλων) του Σ* και είναι μη μετρήσιμο απειροσύνολο (''Συμπέρασμα 2''). Μπορούμε να καταλήξουμε σε διάφορους πεπερασμένους τρόπους αναπαράστασης γλωσσών (ασχέτως του αν οι ίδιες οι γλώσσες είναι πεπερασμένες ή άπειρες), όμως όλοι οδηγούν σε μία συμβολοσειρά ως τρόπο αναπαράστασης μίας γλώσσας. Όμως, δεδομένου ενός αλφαβήτου αναπαράστασης Σ, υπάρχουν μετρήσιμα άπειρες συμβολοσειρές αναπαράστασης (Συμπέρασμα 1) και μη μετρήσιμα άπειρες γλώσσες (Συμπέρασμα 2). Επομένως, αφού υπάρχουν περισσότερες γλώσσες απ' ότι αναπαραστάσεις, αναπόφευκτα θα υπάρχουν πάντα γλώσσες που δεν μπορούμε να αναπαραστήσουμε με πεπερασμένο τρόπο.
 
Υπάρχουν δύο ισοδύναμοι τρόποι περιγραφής μίας γλώσσας: είτε μέσω ενός παραγωγού γλώσσας, ενός εκφραστικού μηχανισμού που περιγράφει τις έγκυρες συμβολοσειρές της συγκεκριμένης γλώσσας, είτε μέσω ενός αναγνώστη γλώσσας, ενός μαθηματικού μοντέλου-μηχανής που αποδέχεται συμβολοσειρές της συγκεκριμένης γλώσσας (τερματίζοντας θετικά αν η είσοδος του είναι συμβολοσειρά που ανήκει στη γλώσσα). Υπάρχουν διάφορες κλάσεις παραγωγών και των αντίστοιχων αναγνωστών, με την κάθε κλάση να καλύπτει ένα υπερσύνολο των γλωσσών που καλύπτει η προηγούμενη. Κατηγοριοποιούνται με την ιεραρχία [[Νόαμ Τσόμσκι|Τσόμσκι]], από τις πιο περιορισμένες ως τις πιο ευρείες:
Γραμμή 36:
2)Γραμματικές Χωρίς Συμφραζόμενα| Αυτόματα Στοίβας
 
3) Γραμματικές Με Συμφραζόμενα |Γραμμικά Περιορισμένες Μηχανές TuringΤούρινγκ
 
4)Γραμματικές Χωρίς Περιορισμούς| Μηχανές TuringΤούρινγκ
 
 
Γραμμή 44:
Κάποιες από αυτές τις καταστάσεις είναι τελικές, δηλαδή αν η είσοδος εξαντληθεί όσο το αυτόματο είναι σε κάποια από αυτές η συμβολοσειρά είναι αποδεκτή. Υπάρχει ένας πίνακας μεταβάσεων που καθορίζει το σε ποια κατάσταση θα εισέλθει για κάθε περίπτωση.
 
Μία γλώσσα η οποία γίνεται αποδεκτή από κάποια Μηχανή TuringΤούρινγκ, δηλαδή η τελευταία είναι βέβαιο ότι τερματίζει μόνο όταν δέχεται ως είσοδο συμβολοσειρά που ανήκει στη γλώσσα (διαφορετικά μπορεί να μπει σε ατέρμονα βρόχο), ονομάζεται MT-αποδεκτή. Μία γλώσσα η οποία αποφασίζεται από κάποια Μηχανή Turing, δηλαδή η τελευταία τερματίζει για κάθε είσοδο και δίνει θετικό αποτέλεσμα αν η συμβολοσειρά ανήκει στη γλώσσα και αρνητικό αν δεν ανήκει, ονομάζεται ΜΤ-αποφασίσιμη. Επίσης η Μηχανή Turing μπορεί να γράφει σύμβολα στην ταινία εισόδου της (σε αντίθεση με τα αυτόματα) οπότε μπορεί να υπολογίζει και συναρτήσεις -δεχόμενη μία συμβολοσειρά εισόδου και παράγοντας την αντίστοιχη συμβολοσειρά εξόδου.
 
Τόσο στα αυτόματα όσο και στις Μηχανές TuringΤούρινγκ υπάρχει μία παραλλαγή τους που διαθέτει ένα πανίσχυρο αλλά αντιρεαλιστικό μαθηματικό χαρακτηριστικό: το μη ντετερμινισμό, τη δυνατότητα δηλαδή σε κάθε βήμα της λειτουργίας τους να μαντεύουν το σωστή διαδρομή που πρέπει να ακολουθήσουν στη συνέχεια από ένα πλήθος δυνατών διαδρομών. Τα μη ντετερμινιστικά αυτόματα συνήθως έχουν εκθετικά λιγότερες καταστάσεις από τα ρεαλιστικά αντίστοιχα ντετερμινιστικά, ενώ οι μη ντετερμινιστικές Μηχανές TuringΤούρινγκ ολοκληρώνουν τη λειτουργία τους σε εκθετικά λιγότερο χρόνο από τις αντίστοιχες ρεαλιστικές ντετερμινιστικές. Ώστόσο κάθε μη ντετερμινστικόντετερμινιστικό πεπερασμένο αυτόματο μπορεί να μετασχηματιστεί σε ένα ισοδύναμο ντετερμινιστικό που αναγνωρίζει την ίδια γλώσσα (έστω και με πολύ περισσότερες καταστάσεις), καθώς και κάθε μη ντετερμινιστική Μηχανή TuringΤούρινγκ μπορεί να μετασχηματιστεί σε μία ισοδύναμη ντετερμινιστική (έστω και με πολύ μεγαλύτερη χρονική πολυπλοκότητα). Αυτή η ισοδυναμία δεν ισχύει στα αυτόματα στοίβας, αφού υπάρχουν γλώσσες χωρίς συμφραζόμενα που γίνονται αποδεκτές μόνο από μη ντετερμινιστικά αυτόματα στοίβας για τα οποία δεν υπάρχουν αντίστοιχα ντετερμινιστικά. Ειδικά για τις Μηχανές TuringΤούρινγκ έχουν προταθεί και διάφορες άλλες παραλλαγές (πιο ρεαλιστικές, όπως π.χ. με ταινία διπλής κατεύθυνσης ή πολλαπλές κεφαλές ανάγνωσης συμβόλων) οι οποίες όμως έχει αποδειχθεί ότι επίσης είναι ισοδύναμες με την πρότυπη ντετερμινιστική Μηχανή Turing και μάλιστα με την ίδια χρονική πολυπλοκότητα.
 
== Υπολογισιμότητα και πολυπλοκότητα ==
Παγκόσμια Μηχανή TuringΤούρινγκ ονομάζεται μία Μηχανή TuringΤούρινγκ που δέχεται ως είσοδο κατάλληλα κωδικοποιημένες συμβολοσειρές που συμβολίζουν άλλες Μηχανές TuringΤούρινγκ (Μ) και μία είσοδο γι' αυτές (w) και προσομοιώνει τη λειτουργία της Μ με είσοδο w. Με αυτόν τον τρόπο κωδικοποίησης ένα οποιοδήποτε υπολογιστικό πρόβλημα μπορεί να εκφραστεί ως ένα σύνολο συμβολοσειρών, δηλαδή μία γλώσσα, και να επιλυθεί από μία κατάλληλη Μηχανή TuringΤούρινγκ που αποφασίζει αυτήν τη γλώσσα -δηλαδή τερματίζει με βεβαιότητα για όλες τις εισόδους της. Σύμφωνα λοιπόν με τη Θέση ChurchΤσερτς-TuringΤούρινγκ η ντετερμινιστική Μηχανή TuringΤούρινγκ που αποφασίζει μία γλώσσα είναι το έσχατο και πιο ευρύ υπολογιστικό μοντέλο -μία αυστηρή μαθηματική περιγραφή της άτυπης έννοιας του αλγορίθμου! Αν για ένα υπολογιστικό πρόβλημα δεν μπορεί να βρεθεί μία Μηχανή TuringΤούρινγκ που να αποφασίζει την αντίστοιχη γλώσσα, τότε το πρόβλημα αυτό είναι μη επιλύσιμο -δεν μπορεί δηλαδή να υπάρξει αλγόριθμος που το επιλύει. Ένα διάσημο μη επιλύσιμο πρόβλημα είναι το πρόβλημα του τερματισμού (η εύρεση μίας Μηχανής TuringΤούρινγκ που αποφασίζει αν μία άλλη Μηχανή TuringΤούρινγκ θα τερματίσει με συγκεκριμένη είσοδο ή θα πέσει σε ατέρμονα βρόχο), το οποίο χρησιμεύει ώστε να ανάγονται άλλα προβλήματα σε αυτό και να αποδεικνύεται έτσι ότι είναι μη επιλύσιμα. Η Μηχανή TuringΤούρινγκ είναι το πιο ισχυρό μοντέλου υπολογισμού γιατί διαθέτει άπειρη μνήμη (την ταινία εισόδου / εξόδου), ενώ τα πεπερασμένα αυτόματα και τα αυτόματα στοίβας έχουν σοβαρούς περιορισμούς μνήμης (στα πρώτα η μνήμη τους είναι κωδικοποιημένη στις καταστάσεις τους ενώ τα δεύτερα έχουν επιπλέον και μια στοίβα).
 
Παρόλο που κάποια προβλήματα είναι επιλύσιμα, δεν έχει βρεθεί μέχρι στιγμής αλγόριθμος που να τα επιλύει σε λογικά χρονικά όρια -δηλαδή με πολυωνυμική και όχι εκθετική χρονική πολυπλοκότητα. Σε αυτό το σημείο συνεισφέρει η Θεωρία Πολυπλοκότητας: P ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή ντετερμινιστική Μηχανή TuringΤούρινγκ που τα επιλύει σε πολυωνυμικό χρόνο. NP ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή μη ντετερμινιστική Μηχανή TuringΤούρινγκ που τα επιλύει σε πολυωνυμικό χρόνο αλλά όχι ντετερμινιστική (οι ισοδύναμες ντετερμινιστικές Μηχανές TuringΤούρινγκ έχουν αυξημένη εκθετική πολυπλοκότητα). E ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή μη/ντετερμινιστική Μηχανή TuringΤούρινγκ που τα επιλύει σε εκθετικό χρόνο. Αυτή τη στιγμή γνωρίζουμε ότι το P είναι υποσύνολο του NP και ότι το NP είναι υποσύνολο του Ε. Ωστόσο δε γνωρίζουμε κατά πόσο αυτές οι σχέσεις είναι γνήσιου υποσυνόλου, αν και υποψιαζόμαστε ότι αυτό ισχύει. Αν αποδειχτεί ότι το P δεν είναι γνήσιο υποσύνολο του NP τότε σημαίνει ότι υπάρχουν ντετερμινιστικές Μηχανές TuringΤούρινγκ που επιλύουν όλα τα προβλήματα του NP σε πολυωνυμικό χρόνο και απλά δεν έχουν επινοηθεί μέχρι στιγμής -όμως κανείς αυτό δεν το θεωρεί πιθανό και κατά πάσα πιθανότητα η εκθετική πολυπλοκότητα είναι εγγενής σε αυτά τα προβλήματα.
Παρόλο που κάποια προβλήματα είναι επιλύσιμα, δεν έχει βρεθεί μέχρι στιγμής αλγόριθμος που να τα επιλύει σε λογικά χρονικά όρια -δηλαδή με πολυωνυμική και όχι εκθετική χρονική πολυπλοκότητα. Σε αυτό το σημείο συνεισφέρει η Θεωρία Πολυπλοκότητας από τη Σχεδίαση και Ανάλυση Αλγορίθμων:
P ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή ντετερμινιστική Μηχανή Turing που τα επιλύει σε πολυωνυμικό χρόνο. NP ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή μη ντετερμινιστική Μηχανή Turing που τα επιλύει σε πολυωνυμικό χρόνο αλλά όχι ντετερμινιστική (οι ισοδύναμες ντετερμινιστικές Μηχανές Turing έχουν αυξημένη εκθετική πολυπλοκότητα). E ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή μη/ντετερμινιστική Μηχανή Turing που τα επιλύει σε εκθετικό χρόνο. Αυτή τη στιγμή γνωρίζουμε ότι το P είναι υποσύνολο του NP και ότι το NP είναι υποσύνολο του Ε. Ωστόσο δε γνωρίζουμε κατά πόσο αυτές οι σχέσεις είναι γνήσιου υποσυνόλου, αν και υποψιαζόμαστε ότι αυτό ισχύει. Αν αποδειχτεί ότι το P δεν είναι γνήσιο υποσύνολο του NP τότε σημαίνει ότι υπάρχουν ντετερμινιστικές Μηχανές Turing που επιλύουν όλα τα προβλήματα του NP σε πολυωνυμικό χρόνο και απλά δεν έχουν επινοηθεί μέχρι στιγμής -όμως κανείς αυτό δεν το θεωρεί πιθανό και κατά πάσα πιθανότητα η εκθετική πολυπλοκότητα είναι εγγενής σε αυτά τα προβλήματα.
 
Τα προβλήματα του NP που δε φαίνεται να ανήκουν στο P έχουν την ιδιότητα να ανάγονται όλα σε ένα μικρό σύνολο βασικών και καλά μελετημένων προβλημάτων. Αυτή η ιδιότητα ονομάζεται πληρότητα και αυτά τα προβλήματα ονομάζονται NP-πλήρη.Έχει αποδειχθεί ότι αν ανακαλυφθεί κάποτε Μηχανή TuringΤούρινγκ που να επιλύει κάποιο από αυτά ντετερμινιστικά σε πολυωνυμικό χρόνο (οπότε αυτό θα ανήκει στο P), τότε όλα τα NP-πλήρη προβλήματα θα ανήκουν στο P. Όπως ειπώθηκεπροαναφέρθηκε πριναυτό κανείςδε δεν το θεωρεί αυτόθεωρείται πιθανό.
 
== Βιβλιογραφία ==