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

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Polyvios (συζήτηση | συνεισφορές)
μ interwiki additions
JohnMad (συζήτηση | συνεισφορές)
μΧωρίς σύνοψη επεξεργασίας
Γραμμή 1:
Η '''θεωρία υπολογισμού''' είναι ο κλάδος της [[επιστήμη υπολογιστών|επιστήμης υπολογιστών]] που πραγματεύεται το εάν και το πόσο αποδοτικά μπορεί να λυθεί κάποιο πρόβλημα σε ένα [[υπολογιστικό μοντέλο]], με χρήση ενός [[αλγόριθμος|αλγορίθμου]]. Ο τομέας διαιρείται σε δύο κύριους κλάδους: τηντη [[θεωρία υπολογισιμότητας]] και τη [[θεωρία πολυπλοκότητας]], αλλά και οι δύο αφορούν τα [[μοντέλο υπολογισμού|μοντέλα υπολογισμού]].
 
Για να πραγματοποιήσουν μια εξονυχιστική μελέτη των υπολογισμών, οι επιστήμονες υπολογιστών αντιμετωπίζουν τον [[υπολογιστής|υπολογιστή]] ως μια αφηρημένη [[μαθηματικά|μαθηματική]] έννοια, το ''μοντέλο υπολογισμού''. Υπάρχουν διάφορες διατυπώσεις που χρησιμοποιούνται, αλλά η πιο συχνή είναι η [[μηχανή Τούρινγκ]]. Μπορεί κανείς να θεωρήσει τη μηχανή Τούρινγκ σαν έναν [[προσωπικός υπολογιστής|προσωπικό υπολογιστή]] με άπειρη [[μνήμη]], αν και η μνήμη αυτή είναι προσβάσιμη μόνο σεκατά μικρά διακριτά τμήματα. Οι επιστήμονες υπολογιστών μελετούν τη μηχανή Τούρινγκ γιατί έχει απλή μαθηματική διατύπωση και μπορούν να την αναλύσουν, να τη χρησιμοποιήσουν σε αποδείξεις, ενώ κατά πολλούς αντιπροσωπεύει το πιο ισχυρό εφικτό μοντέλο υπολογισμού. Αυτό σημαίνει ότι ένα πρόβλημα μπορεί να λυθεί αλγοριθμικά μόνο αν υπάρχει μηχανή Τούρινγκ που το επιλύει. Αν και η άπειρη μνήμη μπορεί να θεωρηθεί ανέφικτη, στην πραγματικότητα κάθε πρόβλημα που λύνει η μηχανή Τούρινγκ χρειάζεται πάντα πεπερασμένη μνήμη, άρα κάθε πρόβλημα που μπορεί να λυθεί από μια μηχανή Τούρινγκ θα μπορούσε να λυθεί από έναν προσωπικό υπολογιστή με επαρκή μνήμη.
 
Η θεωρία υπολογισμού για να φτάσει στα συμπεράσματασυμπεράσματά της αξιοποιεί το γνωστικό πεδίο των [[τυπική γλώσσα|τυπικών γλωσσών]], καθώς κάθε πρόβλημα δυνάμενο να επιλυθεί αλγοριθμικά μπορεί να εκφραστεί ως πρόβλημα ανάγνωσης ή παραγωγής μίας τυπικής γλώσσας. Αυτή η επικάλυψη της [[επιστήμη υπολογιστών|επιστήμης υπολογιστών]] με τη [[γλωσσολογία]] είχε ως αποτέλεσμα την ανάπτυξη [[συντακτική ανάλυση (υπολογιστές)|συντακτικών]] και [[λεκτική ανάλυση (υπολογιστές)|λεκτικών]] αναλυτών για την εύκολη κατασκευή [[μεταγλωττιστής|μεταγλωττιστών]].
 
== Τυπικές γραμματικές ==
{{Κύριο|Τυπική γραμματική}}
 
Στην [[επιστήμη υπολογιστών]] μια τυπική γραμματική (formal grammar) είναι μια [[αφηρημένη δομή]] που περιγράφει μια [[τυπική γλώσσα]] επακριβώς, δηλαδή είναι ένα σύνολο κανόνων που απεικονίζουν μαθηματικώς το [[σύνολο|σύνολο]], (συνήθως [[σύνολο|απειροσύνολο]]), των πεπερασμένου μήκους [[Στοιχειοσειρά|στοιχειοσειρών]] / συμβολοσειρών που σχηματίζονται με διακριτά στοιχεία / σύμβολα (π.χ. γράμματα), τα οποία ανήκουν σε ένα σύνολο, συνήθως πεπερασμένο, που το λέμε ''αλφάβητο''. Οι τυπικές γραμματικές ονομάστηκαν έτσι κατ’ αναλογία των [[γραμματική|γραμματικών]] των γλωσσών που μιλούν οι άνθρωποι, αλλά τα αλφάβητααλφάβητά τους δεν περιέχουν κατ’ ανάγκη γράμματα. Οι τυπικές γραμματικές διαχωρίζονται σε δυο κύριες κατηγορίες: ''γενετικές'' (generative) και ''αναλυτικές'' (analytic).
 
Μια [[γενετική γραμματική]], η οποία θα μπορούσε να ονομάζεται ''γεννητική'' ή ''παραγωγική γραμματική'', είναι ένα σύνολο κανόνων με το οποίο όλες οι συμβολοσειρές που μπορούν να υπάρξουν σε μια γλώσσα μπορούν να παραχθούν με διαδοχικά [[Στοιχειοσειρά#Συναλύσωση|επιθέματα]] ξεκινώντας από ένα προκαθορισμένο ''αρχικό σύμβολο δημιουργίας στοιχειοσειράς''. Μια γενετική γραμματική ουσιαστικά είναι η τυπική μορφή του [[αλγόριθμος|αλγορίθμου]] παραγωγής στοιχειοσειρών που ανήκουν στηνστη γλώσσα.
 
:Συνοπτικά για την γενετική γραμματική :
:* λειτουργεί ως δημιουργός στοιχειοσειρών της γλώσσας, δηλαδή ''γράφει τηντη γλώσσα'',
:* η πορεία είναι από τηντη γραμματική προς τις λέξεις της γλώσσας,
:* εφαρμόζεται παραγωγική (top-down) προσέγγιση, από το γενικό προς το μερικό.
 
Μια [[αναλυτική γραμματική]], αντιθέτως, είναι ένα σύνολο κανόνων που υποθέτουν ότι μία αυθαίρετη στοιχειοσειρά δίνεται προς επεξεργασία και με διαδοχικά βήματα ανάλυσης προκύπτει ως αποτέλεσμα η τιμή μιας [[μεταβλητή (υπολογιστές)#Λογικές μεταβλητές|λογικής μεταβλητής]]:
* ΑΛΗΘΗΣ, αν η στοιχειοσειρά ανήκει στηνστη γλώσσα που περιγράφει η αναλυτική γραμματική
* ΨΕΥΔΗΣ, αν η στοιχειοσειρά δεν ανήκει στηνστη γλώσσα που περιγράφει η αναλυτική γραμματική.
 
:Συνοπτικά για την αναλυτική γραμματική :
:* σαρώνει τηντη στοιχειοσειρά, τεχνολογεί τα μέρη που την αποτελούν και τα αναγνωρίζει, (είναι [[Συντακτική ανάλυση (υπολογιστές)|συντακτικός αναλυτής]] (parser)), δηλαδήο οποίος ''διαβάζει τηντη γλώσσα''),
:* η πορεία είναι από τις λέξεις της γλώσσας προς τηντη γραμματική της,
:* εφαρμόζεται επαγωγική (bottom-up) προσέγγιση, από το μερικό προς το γενικό.
 
== Βασικές αρχές ==
''[[Αστέρι Κλέινι]]'' ή ''κλειστότητα Κλέινι'' (Kleene Star) ενός αλφαβήτου Σ ονομάζουμε το σύνολο Σ* όλων των δυνατών [[συμβολοσειρά|συμβολοσειρών]] που προκύπτουν από αυτό το αλφάβητο. Πρόκειται για ένα μετρήσιμο [[σύνολο|απειροσύνολο]] (''Συμπέρασμα 1''). Γλώσσα ονομάζουμε ένα [[υποσύνολο]] του Σ* για δεδομένο αλφάβητο Σ. Το σύνολο όλων των γλωσσών που προκύπτουν από ένα αλφάβητο Σ είναι το [[δυναμοσύνολο]] (το σύνολο όλων των δυνατών υποσυνόλων) του Σ* και είναι μη μετρήσιμο απειροσύνολο (''Συμπέρασμα 2''). Μπορούμε να καταλήξουμε σε διάφορους πεπερασμένους τρόπους αναπαράστασης γλωσσών (ασχέτως του αν οι ίδιες οι γλώσσες είναι πεπερασμένες ή άπειρες), όμως όλοι οδηγούν σε μία συμβολοσειρά ως τρόπο αναπαράστασης μίας γλώσσας. Όμως, δεδομένου ενός αλφαβήτου αναπαράστασης Σ, υπάρχουν μετρήσιμα άπειρες συμβολοσειρές αναπαράστασης (Συμπέρασμα 1) και μη μετρήσιμα άπειρες γλώσσες (Συμπέρασμα 2). Επομένως, αφού υπάρχουν περισσότερες γλώσσες απ' ότι αναπαραστάσεις, αναπόφευκτα θα υπάρχουν πάντα γλώσσες που δεν μπορούμε να αναπαραστήσουμε με πεπερασμένο τρόπο.
 
Υπάρχουν δύο ισοδύναμοι τρόποι περιγραφής μίας γλώσσας: είτε μέσω ενός παραγωγού γλώσσας, ενός εκφραστικού μηχανισμού που περιγράφει τις έγκυρες συμβολοσειρές της συγκεκριμένης γλώσσας, είτε μέσω ενός αναγνώστη γλώσσας, ενός μαθηματικού μοντέλου-μηχανής που αποδέχεται συμβολοσειρές της συγκεκριμένης γλώσσας (τερματίζοντας θετικά αν η είσοδοςείσοδός του είναι συμβολοσειρά που ανήκει στη γλώσσα). Υπάρχουν διάφορες ''κλάσεις'' παραγωγών και των αντίστοιχων αναγνωστών, με την κάθε κλάση να καλύπτει ένα υπερσύνολο των γλωσσών που καλύπτει η προηγούμενη. Κατηγοριοποιούνται με την [[ιεραρχία Τσόμσκι]], από τις πιο περιορισμένες ως τις πιο ευρείες:
 
:{| border="1" cellpadding="3" cellspacing="0"
Γραμμή 38:
|2||Γραμματικές χωρίς συμφραζόμενα || Αυτόματα στοίβας
|-
|3|| Γραμματικές με συμφραζόμενα || ΓραμμικάΓραμμικώς περιορισμένες μηχανές Τούρινγκ
|-
|4|| Γενικές γραμματικές || Μηχανές Τούρινγκ
Γραμμή 46:
Κάποιες από αυτές τις καταστάσεις είναι τελικές, δηλαδή αν η είσοδος εξαντληθεί όσο το αυτόματο είναι σε κάποια από αυτές η συμβολοσειρά είναι αποδεκτή. Υπάρχει ένας πίνακας μεταβάσεων που καθορίζει το σε ποια κατάσταση θα εισέλθει για κάθε περίπτωση.
 
Μία γλώσσα η οποία ''γίνεται αποδεκτή'' από κάποια Μηχανή Τούρινγκ, δηλαδή η τελευταία είναι βέβαιο ότι τερματίζει μόνο όταν δέχεται ως είσοδο συμβολοσειρά που ανήκει στη γλώσσα (διαφορετικά μπορεί να μπει σε ατέρμονα βρόχο), ονομάζεται ''MT-αποδεκτή''. Μία γλώσσα η οποία ''αποφασίζεται'' από κάποια Μηχανή Τούρινγκ, δηλαδή η τελευταία τερματίζει για κάθε είσοδο και δίνει θετικό αποτέλεσμα αν η συμβολοσειρά ανήκει στη γλώσσα και αρνητικό αν δεν ανήκει, ονομάζεται ''ΜΤ-αποφασίσιμη''. Επίσης η Μηχανή Τούρινγκ μπορεί να γράφει σύμβολα στην ταινία εισόδου της (σε αντίθεση με τα αυτόματα) οπότε μπορεί να υπολογίζει και [[συνάρτηση|συναρτήσεις]], -δεχόμενη μία συμβολοσειρά εισόδου και παράγοντας την αντίστοιχη συμβολοσειρά εξόδου.
 
Τόσο στα αυτόματα όσο και στις Μηχανές Τούρινγκ υπάρχει μία παραλλαγή τους που διαθέτει ένα πανίσχυρο αλλά αντιρεαλιστικό μαθηματικό χαρακτηριστικό: τοτον ''μη [[ντετερμινισμός|ντετερμινισμό]]'', τη δυνατότητα δηλαδή σε κάθε βήμα της λειτουργίας τους να «μαντεύουν» τοτη σωστή διαδρομή που πρέπει να ακολουθήσουν στη συνέχεια από ένα πλήθος δυνατών διαδρομών. Τα μη ντετερμινιστικά αυτόματα συνήθως έχουν εκθετικά λιγότερες καταστάσεις από τα ρεαλιστικά αντίστοιχα ντετερμινιστικά, ενώ οι μη ντετερμινιστικές Μηχανές Τούρινγκ ολοκληρώνουν τη λειτουργία τους σε εκθετικά λιγότερο χρόνο από τις αντίστοιχες ρεαλιστικές ντετερμινιστικές. Ώστόσο κάθε [[μη ντετερμινιστικό πεπερασμένο αυτόματο]] μπορεί να μετασχηματιστεί σε ένα ισοδύναμο ντετερμινιστικό που αναγνωρίζει την ίδια γλώσσα (έστω και με πολύ περισσότερες καταστάσεις), καθώς και κάθε μη ντετερμινιστική Μηχανή Τούρινγκ μπορεί να μετασχηματιστεί σε μία ισοδύναμη ντετερμινιστική (έστω και με πολύ μεγαλύτερη χρονική πολυπλοκότητα). Αυτή η ισοδυναμία δεν ισχύει στα αυτόματα στοίβας, αφού υπάρχουν γλώσσες χωρίς συμφραζόμενα που γίνονται αποδεκτές μόνο από μη ντετερμινιστικά αυτόματα στοίβας για τα οποία δεν υπάρχουν αντίστοιχα ντετερμινιστικά. Ειδικά για τις Μηχανές Τούρινγκ έχουν προταθεί και διάφορες άλλες παραλλαγές (πιο ρεαλιστικές, όπως π.χ. με ταινία διπλής κατεύθυνσης ή πολλαπλές κεφαλές ανάγνωσης συμβόλων) οι οποίες όμως έχει αποδειχθεί ότι επίσης είναι ισοδύναμες με την πρότυπη ντετερμινιστική Μηχανή Turing και μάλιστα με την ίδια χρονική πολυπλοκότητα.
 
== Υπολογισιμότητα και πολυπλοκότητα ==
Παγκόσμια Μηχανή Τούρινγκ ονομάζεται μία Μηχανή Τούρινγκ που δέχεται ως είσοδο κατάλληλα κωδικοποιημένες συμβολοσειρές που συμβολίζουν άλλες Μηχανές Τούρινγκ (Μ) και μία είσοδο γι' αυτές (w) και προσομοιώνει τη λειτουργία της Μ με είσοδο w. Με αυτόν τον τρόπο κωδικοποίησης ένα οποιοδήποτε υπολογιστικό πρόβλημα μπορεί να εκφραστεί ως ένα σύνολο συμβολοσειρών, δηλαδή μία γλώσσα, και να επιλυθεί από μία κατάλληλη Μηχανή Τούρινγκ που αποφασίζει αυτήναυτή τη γλώσσα· -δηλαδή τερματίζει με βεβαιότητα για όλες τις εισόδους της. Σύμφωνα λοιπόν με τη '''Θέση Τσερτς-Τούρινγκ''' η ντετερμινιστική Μηχανή Τούρινγκ που αποφασίζει μία γλώσσα είναι το έσχατο και πιο ευρύ υπολογιστικό μοντέλο, -μία αυστηρή μαθηματική περιγραφή της άτυπης έννοιας του αλγορίθμου! Αν για ένα υπολογιστικό πρόβλημα δεν μπορεί να βρεθεί μία Μηχανή Τούρινγκ που να αποφασίζει την αντίστοιχη γλώσσα, τότε το πρόβλημα αυτό είναι ''μη επιλύσιμο'', -δεν μπορεί δηλαδή να υπάρξει αλγόριθμος που το επιλύει. Ένα διάσημο μη επιλύσιμο πρόβλημα είναι το πρόβλημα του τερματισμού (η εύρεση μίας Μηχανής Τούρινγκ που αποφασίζει αν μία άλλη Μηχανή Τούρινγκ θα τερματίσει με συγκεκριμένη είσοδο ή θα πέσει σε ατέρμονα βρόχο), το οποίο χρησιμεύει ώστε να ανάγονται άλλα προβλήματα σε αυτό και να αποδεικνύεται έτσι ότι είναι μη επιλύσιμα. Η Μηχανή Τούρινγκ είναι το πιο ισχυρό μοντέλου υπολογισμού γιατί διαθέτει άπειρη μνήμη (την ταινία εισόδου / εξόδου), ενώ τα πεπερασμένα αυτόματα και τα αυτόματα στοίβας έχουν σοβαρούς περιορισμούς μνήμης (στα πρώτα η μνήμη τους είναι κωδικοποιημένη στις καταστάσεις τους ενώ τα δεύτερα έχουν επιπλέον και μια πεπερασμένη στοίβα).
 
Παρόλο που κάποια προβλήματα είναι επιλύσιμα, δεν έχει βρεθεί μέχρι στιγμής αλγόριθμος που να τα επιλύει σε λογικά χρονικά όρια· -δηλαδή με πολυωνυμική και όχι εκθετική χρονική πολυπλοκότητα. Σε αυτό το σημείο συνεισφέρει η Θεωρίαθεωρία Πολυπλοκότηταςπολυπλοκότητας: P ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή ντετερμινιστική Μηχανή Τούρινγκ που τα επιλύει σε πολυωνυμικό χρόνο. NP ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή μη ντετερμινιστική Μηχανή Τούρινγκ που τα επιλύει σε πολυωνυμικό χρόνο αλλά όχι ντετερμινιστική (οι ισοδύναμες ντετερμινιστικές Μηχανές Τούρινγκ έχουν αυξημένη εκθετική πολυπλοκότητα). E ονομάζεται το σύνολο των γλωσσών που αναπαριστούν υπολογιστικά προβλήματα για τα οποία είναι γνωστή είτε μη/ ντετερμινιστική είτε ντετερμινιστική Μηχανή Τούρινγκ που τα επιλύει σε εκθετικό χρόνο. Αυτή τη στιγμή γνωρίζουμε ότι το P είναι υποσύνολο του NP και ότι το NP είναι υποσύνολο του Ε. Ωστόσο δεδεν γνωρίζουμε κατά πόσοπόσον αυτές οι σχέσεις είναι γνήσιου υποσυνόλου, αν και υποψιαζόμαστε ότι αυτό ισχύει. Αν αποδειχτεί ότι το P δεν είναι γνήσιο υποσύνολο του NP τότε σημαίνει ότι υπάρχουν ντετερμινιστικές Μηχανές Τούρινγκ που επιλύουν όλα τα προβλήματα του NP σε πολυωνυμικό χρόνο και απλάαπλώς δεν έχουν επινοηθεί μέχρι στιγμής. -όμωςΣήμερα κανείςωστόσο αυτό δεν το θεωρείθεωρείται πιθανό και κατάοι πάσαπερισσότεροι πιθανότηταεπιστήμονες εικάζουν ότι η εκθετική πολυπλοκότητα είναι εγγενής σε αυτά τα προβλήματα.
 
Τα προβλήματα του NP που δεδεν φαίνεται να ανήκουν στο P έχουν την ιδιότητα να ανάγονται όλα σε ένα μικρό σύνολο βασικών και καλά μελετημένων προβλημάτων. Αυτή η ιδιότητα ονομάζεται ''πληρότητα'' και αυτά τα εν λόγω προβλήματα ονομάζονται ''NP-πλήρη''. Έχει αποδειχθεί ότι αν ανακαλυφθεί κάποτε Μηχανή Τούρινγκ που να επιλύει κάποιο από αυτά ντετερμινιστικά σε πολυωνυμικό χρόνο (οπότε αυτό θα ανήκει στο P), τότε όλα τα NP-πλήρη προβλήματα θα ανήκουν στο P. Όπως προαναφέρθηκε ωστόσο αυτό δεδεν θεωρείται πιθανό.
 
Οι υπολογιστές [[αρχιτεκτονική φον Νόιμαν|φον Νόιμαν]] αλλά και άλλα μοντέλα υπολογισμού (π.χ. ορισμένα [[νευρωνικό δίκτυο|τεχνητά νευρωνικά δίκτυα]]) ισοδυναμούν μαθηματικώς με Παγκόσμιες Μηχανές Τούρινγκ και γι' αυτό μπορεί σε αυτά να εκτελεστεί, με κατάλληλη κωδικοποίηση, οποιοσδήποτε αλγόριθμος.
 
== Βιβλιογραφία ==