Σπίτι Προσωπικά Οικονομικά Προγραμματισμός < < Java Προγραμματισμός Πρόκληση: Δημιουργία απλής μηχανής Turing - dummies

Προγραμματισμός < < Java Προγραμματισμός Πρόκληση: Δημιουργία απλής μηχανής Turing - dummies

Βίντεο: Leap Motion SDK 2024

Βίντεο: Leap Motion SDK 2024
Anonim

Το 1936, ο μαθηματικός Alan Turing σχεδίασε ένα παραπλανητικά απλό τύπο υπολογιστικής μηχανής που ονομάζεται Turing Machine . Ο Τούρινγκ δεν έχτισε ποτέ μηχανή Turing. Αντ 'αυτού, ήταν μια υποθετική συσκευή που σχεδίαζε να βοηθήσει στη μελέτη της υπολογιστικής ικανότητας - δηλαδή, αν πολύπλοκα προβλήματα μπορούν να επιλυθούν με υπολογιστικά βήματα και αν μπορεί να επινοηθεί μια μηχανή που να μπορεί να λύσει οποιοδήποτε αξιόπιστο πρόβλημα. (Εάν ενδιαφέρεστε να μάθετε περισσότερα για την ιστορία ή την εφαρμογή των μηχανών Turing, μπορείτε να βρείτε πολλά άρθρα σχετικά με αυτά στο Διαδίκτυο. Απλά χρησιμοποιήστε οποιονδήποτε πάροχο αναζήτησης για να αναζητήσετε τη μηχανή Turing.)

Η λειτουργία μιας μηχανής Turing είναι απλή. Περιέχει μόνο μερικές βασικές έννοιες:

  1. Η καρδιά μιας μηχανής Turing είναι μια απείρως μεγάλη ταινία που χωρίζεται σε κελιά πάνω στα οποία μπορούν να γραφτούν πληροφορίες.

    Στην πράξη, φυσικά, καμία φυσική συσκευή δεν μπορεί να έχει άπειρο αριθμό κυττάρων. Αλλά στη θεωρία μιας μηχανής Turing, η ταινία είναι άπειρη.

  2. Οι πληροφορίες που μπορούν να γραφτούν σε κάθε κελί περιορίζονται σε ένα μόνο σύμβολο, όπως το 0 ή το 1. Ωστόσο, οι πληροφορίες μπορούν να αναπαρασταθούν από τις συνδυασμένες τιμές διαδοχικών κυττάρων.

    Η μηχανή Turing περιέχει μια κεφαλίδα ανάγνωσης και εγγραφής

  3. που βρίσκεται πάντα πάνω από ένα (και μόνο) από τα κελιά της ταινίας.

    Αυτή η κεφαλή ανάγνωσης-εγγραφής μπορεί να διαβάσει το σύμβολο που περιέχεται στο κελί. Μπορεί επίσης να διαγράψει το σύμβολο και, αν το επιθυμεί, να γράψει ένα νέο σύμβολο στη θέση του. Το κελί πάνω από το οποίο είναι τοποθετημένη η κεφαλή ανάγνωσης-εγγραφής αναφέρεται ως το τρέχον κελί

    ή το κύριο κελιού

    . Η ταινία είναι μηχανοκίνητη έτσι ώστε να μπορεί να μετακινηθεί αριστερά ή δεξιά κάτω από την κεφαλή ανάγνωσης-εγγραφής μία κυψέλη τη φορά. Το μηχάνημα έχει κατάσταση

  4. , το οποίο αντιπροσωπεύεται από ένα σύμβολο όπως ένα γράμμα του αλφαβήτου.

  5. Όπως κάθε υπολογιστή, μπορεί να προγραμματιστεί μια μηχανή Turing. Ωστόσο, ένα πρόγραμμα για μια μηχανή Turing δεν θυμίζει από μακριά ένα πρόγραμμα Java. Αντ 'αυτού, ένα πρόγραμμα Turing Machine είναι απλά ένα σύνολο κανόνων που αξιολογούνται για να καθορίσουν ποιες ενέργειες θα πρέπει να λάβει η μηχανή. Κάθε κανόνας προσδιορίζει μια ενέργεια που πρέπει να ληφθεί όταν το τρέχον κελί περιέχει ένα δεδομένο σύμβολο και το μηχάνημα βρίσκεται σε δεδομένη κατάσταση.Για παράδειγμα, ένας κανόνας μπορεί να υπαγορεύει τι πρέπει να κάνει εάν το τρέχον κελί περιέχει 1 και η κατάσταση του μηχανήματος είναι "a". Κάθε κανόνας μπορεί να καθορίσει οποιαδήποτε από τις τρεις ενέργειες:

Διαγράψτε το τρέχον κελί ή γράψτε μια νέα τιμή στο κελί.

Μετακινήστε την ταινία ένα κύτταρο προς τα αριστερά ή ένα κελί προς τα δεξιά.

Αλλάξτε την κατάσταση του μηχανήματος σε νέα κατάσταση.

  • Για παράδειγμα, ένας κανόνας μπορεί να καθορίζει ότι αν το τρέχον κελί περιέχει 1 και η κατάσταση του μηχανήματος είναι "a", η μηχανή Turing πρέπει να γράψει ένα 0 στο τρέχον κελί, να προωθήσει την ταινία ένα κελί προς τα δεξιά και να αλλάξει η κατάσταση του μηχανήματος σε "b. "

  • Εκτός από ένα πρόγραμμα, η ταινία του Turing Machine μπορεί να έχει μια αρχική τιμή.

  • Αυτό είναι; αυτός είναι ο ολόκληρος ορισμός μιας μηχανής Turing. Παρά την απλότητα του, μια μηχανή Turing μπορεί να υπολογίσει οτιδήποτε από 2 + 2 στην τροχιά ενός πυραύλου προς τον Άρη.

Για αυτή την πρόκληση, πρέπει να δημιουργήσετε μια πολύ απλή μηχανή Turing. Για να απλοποιήσετε το πρόβλημα, αποδεχτείτε τους ακόλουθους περιορισμούς σε αυτή την έκδοση του μηχανήματος Turing:

Η ταινία δεν χρειάζεται να είναι άπειρη.

Μπορείτε να χρησιμοποιήσετε οποιαδήποτε λειτουργία Java - έναν πίνακα, μια συμβολοσειρά ή μια συλλογή - για να αναπαριστάτε την κασέτα.

(Σημειώστε ότι παρόλο που η ταινία δεν χρειάζεται να είναι άπειρη, πρέπει να μπορείτε εύκολα να μετακινηθείτε αριστερά ή δεξιά από την τρέχουσα κελιά. Εάν επιλέξετε να χρησιμοποιήσετε έναν πίνακα, μην ξεκινήσετε με το τρέχον κελί στο στοιχείο 0 επειδή δεν θα μπορείτε να μετακινηθείτε αριστερά από εκεί.)

  • Ένα κελί μπορεί να είναι άδειο ή μπορεί να περιέχει οποιοδήποτε γράμμα ή αριθμό. Ένα κενό κελί αντιπροσωπεύεται από ένα χαρακτήρα υπογράμμισης.

    Η κατάσταση μπορεί να είναι κάθε άλλος αλφαριθμητικός χαρακτήρας.

  • Το πρόγραμμα για το Turing Machine θα διαβαστεί από ένα αρχείο κειμένου. Αυτό το αρχείο κειμένου περιέχει έναν κανόνα ανά γραμμή. Κάθε κανόνας περιέχει πέντε χαρακτήρες, χωρισμένους με κενά, που παρέχουν τις λεπτομέρειες για κάθε κανόνα ως εξής:

  • Τρέχουσα κελιά:

  • Η τιμή που πρέπει να αντιστοιχιστεί για το τρέχον κελί. Τρέχουσα κατάσταση:

    • Η τιμή που πρέπει να αντιστοιχιστεί για την τρέχουσα κατάσταση του μηχανήματος. Νέο κελί:

    • Η τιμή για εγγραφή στο νέο κελί. _ για να διαγράψετε το κελί, * για να αφήσετε το κελί αμετάβλητο. Κίνηση:

    • L ή R για να μετακινήσετε την ταινία αριστερά ή δεξιά. H για να σταματήσει το πρόγραμμα. οποιοδήποτε άλλο χαρακτήρα για να μην μετακινήσετε την ταινία. Νέα κατάσταση:

    • Η νέα τιμή για την κατάσταση του μηχανήματος. Για παράδειγμα, το παρακάτω λέει ότι όταν το τρέχον κελί είναι 1 και η κατάσταση είναι "a", το τρέχον κελί θα πρέπει να ρυθμιστεί σε 0, η ταινία μετακινήθηκε ένα κύτταρο προς τα αριστερά και η κατάσταση θα πρέπει να ρυθμιστεί σε " b: "

    • 1 a 0 L b Η πρώτη γραμμή του αρχείου κειμένου θα πρέπει να περιέχει μια συμβολοσειρά που να αντιπροσωπεύει τις αρχικές τιμές της ταινίας.

  • Η δεύτερη γραμμή του αρχείου κειμένου πρέπει να περιέχει την αρχική κατάσταση.

    Το παρακάτω σχήμα δείχνει τη διεπαφή χρήστη για τη λύση δείγματος, αλλά είστε ελεύθεροι να χρησιμοποιήσετε οποιοδήποτε σχέδιο διεπαφής χρήστη που θέλετε για αυτό το έργο.
    
    • Μια πιθανή διεπαφή Turing Machine.

    • Ακολουθούν μερικές σκέψεις για τη δημιουργία της διεπαφής:

Τιμή και τρέχον κελί:

Τουλάχιστον, θα πρέπει να εμφανίσετε την τιμή της ταινίας και να επισημάνετε το τρέχον κελί.

Εργαλεία και οθόνη:

  • Θα πρέπει επίσης να παρέχετε τη δυνατότητα εκκίνησης, διακοπής ή επανεκκίνησης της εκτέλεσης του προγράμματος και θα πρέπει να εμφανίσετε τα αποτελέσματα κάθε βήματος του προγράμματος. Εκτέλεση προγράμματος:

  • Μπορείτε να δώσετε στον χρήστη τη δυνατότητα να εκτελέσει το πρόγραμμα που έχει φορτωθεί από την αρχή μέχρι το τέλος, καθώς και έναν τρόπο με τον οποίο ο χρήστης μπορεί να κάνει ένα βήμα μέσω του προγράμματος κάνοντας κλικ σε ένα κουμπί για να εκτελέσει κάθε βήμα του προγράμματος. Φόρτωση του προγράμματος

  • : Θα πρέπει να δώσετε κουμπιά που επιτρέπουν στο χρήστη να φορτώσει ένα πρόγραμμα Turing Machine από ένα αρχείο κειμένου και να αφήσει τον χρήστη να επαναφέρει το μηχάνημα για να εκτελέσει ξανά το πρόγραμμα. Ακολουθεί μια συμβουλή για την υλοποίηση της άπειρης κασέτας: Χρησιμοποιήστε τρεις μεταβλητές συμβολοσειράς για να συγκρατήσετε τις τιμές της ταινίας, μία για τον μοναδικό χαρακτήρα που είναι αποθηκευμένο στο τρέχον κελί, ένα δεύτερο για τους χαρακτήρες αριστερά του τρέχοντος κελιού και ένα τρίτο για τους χαρακτήρες στα δεξιά του τρέχοντος κελιού. Στη συνέχεια, μπορείτε να μετακινήσετε εύκολα την τρέχουσα κελιά αριστερά ή δεξιά, χρησιμοποιώντας τον σωστό συνδυασμό των λειτουργιών συνένωσης και υποσέλιδου.

  • Μπορείτε να βρείτε τη λύση αυτής της πρόκλησης στην καρτέλα Downloads (Λήψεις) της σελίδας προϊόντος Java All-in-One For Dummies,

4η έκδοση.

Καλή τύχη!

Προγραμματισμός < < Java Προγραμματισμός Πρόκληση: Δημιουργία απλής μηχανής Turing - dummies

Η επιλογή των συντακτών

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Microsoft SharePoint Workspace είναι ο καλλιτέχνης παλαιότερα γνωστός ως Microsoft Office Groove desktop εφαρμογή προσαρμοσμένη για άτομα που θέλουν να συνεργάζονται σε έγγραφα online και offline. Προσφέρεται μαζί με το Office 2010 και παρέχει μια διεπαφή χρήστη παρόμοια με την Εξερεύνηση των Windows για προβολή και επεξεργασία αρχείων και λιστών από μια τοποθεσία του SharePoint. SharePoint Workspace ...

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Το Site δημοσίευσης του sharePoint 2010 παρέχει μια πλούσια εμπειρία επεξεργασίας καθιστά εύκολο για ένα μη τεχνικό πρόσωπο να δημιουργήσει ιστοσελίδες. Η προσθήκη του περιεχομένου σας στη σελίδα είναι γρήγορη. Το SharePoint παρέχει πολλά είδη δοχείων περιεχομένου που μπορείτε να χρησιμοποιήσετε κατά τη δημιουργία της σελίδας σας, συμπεριλαμβανομένων των πλαισίων κειμένου μιας γραμμής για την εισαγωγή μιας απλής γραμμής κειμένου ...

Για ιστότοπους SharePoint Online - dummies

Για ιστότοπους SharePoint Online - dummies

Μπορείτε να δημιουργήσετε και να αναπτύξετε τρεις κύριους τύπους σελίδων του SharePoint όχι λιγότερο!) - το καθένα με ξεχωριστή λειτουργία: περιεχόμενο, τμήματα Web και εκδόσεις σελίδων. Σελίδα περιεχομένου: Επίσης γνωστή ως σελίδα wiki, αυτό είναι το μαχαίρι ελβετικού στρατού των σελίδων του SharePoint. Μια σελίδα περιεχομένου παρέχει όχι μόνο μια θέση ...

Η επιλογή των συντακτών

Τι είναι ένας χάρτης Java; - ανδρείκελα

Τι είναι ένας χάρτης Java; - ανδρείκελα

Πίνακες και εξειδικευμένες λίστες καθιστούν δυνατή την εκτέλεση μιας εκπληκτικής σειράς εργασιών με την Java. Ωστόσο, υπάρχουν περιπτώσεις όπου μια εφαρμογή Java χρειάζεται κάτι που είναι περισσότερο παρόμοιο με μια βάση δεδομένων, χωρίς να έχει όντως όλες τις αποσκευές της βάσης δεδομένων (όπως η αγορά μιας ξεχωριστής εφαρμογής). Για παράδειγμα, μπορεί να θέλετε να είστε σε θέση ...

Λίγα περίεργα πράγματα για το Java Math - dummies

Λίγα περίεργα πράγματα για το Java Math - dummies

- να έχουν ορισμένους περιορισμούς όταν πρόκειται για υπολογισμό μαθηματικών. Αυτοί οι περιορισμοί είναι συνήθως ασήμαντοι, αλλά μερικές φορές γλιστρίζουν και σας δαγκώνουν. Εδώ είναι τα πράγματα που πρέπει να προσέξετε όταν κάνετε μαθηματικά στην Java. Η

Η επιλογή των συντακτών

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Από τα τρία νέα φίλτρα Blur στο Photoshop CS6, θα έχετε επίσης πρόσβαση σε δύο σχετικούς πίνακες ελέγχου, Εργαλεία θόλωσης και Εφέ θόλωσης, τα οποία περιέχουν τις επιλογές σας. Και τα τρία φίλτρα σας επιτρέπουν να δημιουργήσετε ειδικά εφέ. Blur πεδίου: Δημιουργεί μια συνολική θόλωση στην εικόνα σας. Με την προσθήκη πρόσθετων σημείων ελέγχου ή καρφίτσες, ...

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

, αυτόνομο πλαίσιο Μάσκες στο Photoshop CS6 προς όφελος του πίνακα Ιδιότητες, ο οποίος περιλαμβάνει τώρα τις δυνατότητες των πλαισίων Μάσκες και Προσαρμογές. Δεν υπάρχουν όμως ανησυχίες. Κανένα από τα χαρακτηριστικά που παρείχε προηγουμένως ο πίνακας "Μάσκες" χάθηκε. Ο νέος πίνακας Ιδιότητες σάς δίνει τη δυνατότητα να προσθέσετε, να επεξεργαστείτε και να διαχειριστείτε το στρώμα σας, ...

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Μπορείτε να κάνετε ρεαλιστικές τροποποιήσεις σε εικόνες που έχουν προοπτικά επίπεδα. Με το Σημείο Εκκίνησης, καθορίζετε τα επίπεδα στις εικόνες σας και, στη συνέχεια, χρησιμοποιώντας μια ποικιλία τεχνικών, προσθέστε ή εξαλείψτε αντικείμενα σε αυτά τα αεροπλάνα. Ανοίξτε μια εικόνα που χρειάζεται επεξεργασία. Εάν θέλετε να επικολλήσετε ...