Video: Rahasia Spek Mesin CB Agar Mudah Wheelie 2024
Pada tahun 1936, ahli matematik Alan Turing jenis Mesin pengkomputeran yang mudah dipanggil Mesin Turing . Turing tidak pernah membina Mesin Turing. Sebaliknya, ia adalah alat hipotesis yang dia bantu untuk membantu dalam kajian tentang kebolehkomputeran - iaitu, sama ada masalah kompleks boleh diselesaikan dengan langkah-langkah pengiraan dan sama ada mesin boleh dibuat yang boleh menyelesaikan sebarang masalah yang boleh dikira. (Jika anda berminat untuk mengetahui lebih lanjut mengenai sejarah atau aplikasi mesin Turing, anda boleh menemui banyak artikel tentangnya di Internet. Hanya gunakan mana-mana penyedia carian untuk mencari "mesin Turing".
Pengendalian Mesin Turing adalah mudah. Ia merangkumi hanya beberapa konsep asas:
-
Jantung Mesin Turing adalah pita panjang yang panjang yang dibahagikan kepada sel ke mana maklumat dapat ditulis.
Dalam amalan sebenar, tentu saja, tiada peranti fizikal boleh mempunyai bilangan sel tak terhingga. Tetapi dalam teori Mesin Turing, pita tidak terbatas.
-
Maklumat yang boleh ditulis pada setiap sel adalah terhad kepada simbol tunggal, seperti 0 atau 1. Namun, maklumat boleh diwakili oleh gabungan nilai-nilai sel-sel berturut-turut.
Sebagai contoh, anda boleh mewakili nilai angka dengan kejadian berturut-turut simbol 1 diikuti oleh 0. Oleh itu, 1110 mewakili nilai 3 kerana terdapat tiga 1; 111111011110 mungkin mewakili nilai 6 dan 4 (enam 1 diikuti oleh sifar, diikuti dengan empat 1 diikuti oleh sifar lain).
-
Mesin Turing mengandungi kepala baca tulis yang selalu diposisikan lebih dari satu (dan hanya satu) sel pita.
Kepala baca tulis ini boleh membaca simbol yang terdapat di dalam sel. Ia juga boleh memadam simbol dan, jika dikehendaki, tulis simbol baru di tempatnya. Sel di mana kepala baca tulis diletakkan dirujuk sebagai sel semasa atau sel .
-
Pita itu bermotor supaya ia dapat dipindahkan ke kiri atau ke kanan di bawah satu kepala baca tulis satu sel pada satu masa.
-
Mesin ini mempunyai keadaan , yang diwakili oleh simbol seperti huruf abjad.
Seperti mana-mana komputer, Mesin Turing boleh diprogramkan. Walau bagaimanapun, satu program untuk Mesin Turing tidak jauh menyerupai program Java.
Sebaliknya, program Mesin Turing hanyalah satu set peraturan yang dinilai untuk menentukan tindakan yang harus dilakukan oleh mesin. Setiap peraturan mengenalpasti tindakan yang akan diambil apabila sel semasa mengandungi simbol yang diberikan dan mesin berada dalam keadaan tertentu.Sebagai contoh, peraturan mungkin menentukan apa yang harus dilakukan jika sel semasa mengandungi 1 dan keadaan mesin adalah "a".
Setiap peraturan boleh menentukan salah satu daripada tiga tindakan:
-
Hapus sel semasa atau tulis nilai baru ke sel.
-
Pindahkan pita satu sel ke kiri atau satu sel ke kanan.
-
Tukar keadaan mesin ke keadaan baru.
Sebagai contoh, peraturan mungkin menyatakan bahawa jika sel semasa mengandungi 1 dan keadaan mesin adalah "a," Mesin Turing perlu menulis 0 dalam sel semasa, memajukan pita satu sel ke kanan, dan menukar keadaan mesin kepada "b. "
Selain program, pita Mesin Turing dapat memiliki nilai awal.
Itu sahaja; itu adalah definisi keseluruhan Mesin Turing. Walaupun kesederhanaannya, Mesin Turing boleh mengira apa-apa dari 2 + 2 hingga trajektori roket ke Marikh.
Untuk cabaran ini, anda mesti membuat mesin Turing yang sangat mudah. Untuk mempermudah masalah, terima keterbatasan berikut pada versi Mesin Turing ini:
-
Pita tidak perlu tak terbatas. Anda boleh menggunakan sebarang ciri Java - array, rentetan, atau koleksi - untuk mewakili pita.
(Perhatikan bahawa walaupun pita itu tidak perlu tak terbatas, anda mesti dapat bergerak dengan mudah ke kiri atau kanan dari sel semasa. Jika anda memilih menggunakan array, jangan bermula dengan sel semasa pada elemen 0 kerana anda tidak boleh bergerak ke kiri dari sana.)
-
Sel boleh kosong atau ia boleh mengandungi sebarang huruf atau angka. Suatu sel kosong diwakili oleh watak garis bawah.
-
Keadaan ini boleh menjadi watak alfanumerik tunggal.
-
Program untuk Mesin Turing akan dibaca dari fail teks. Fail teks ini mengandungi satu peraturan per baris. Setiap peraturan mengandungi lima aksara, dipisahkan oleh ruang, yang memberikan butiran untuk setiap peraturan, seperti berikut:
-
Sel semasa: Nilai yang akan dipadankan untuk sel semasa.
-
Keadaan semasa: Nilai yang hendak dipadankan untuk keadaan mesin semasa.
-
Sel baru: Nilai untuk menulis ke sel baru. _ untuk memadamkan sel, * untuk meninggalkan sel tidak berubah.
-
Pergerakan: L atau R untuk menggerakkan pita ke kiri atau ke kanan; H untuk menghentikan program ini; mana-mana watak lain untuk tidak menggerakkan pita itu.
-
New state: Nilai baru untuk keadaan mesin. Sebagai contoh, berikut menyatakan bahawa apabila sel semasa adalah 1 dan keadaan adalah "a," sel semasa perlu ditetapkan kepada 0, pita itu bergerak satu sel ke kiri, dan keadaan harus ditetapkan kepada " b: "
-
-
1 a 0 L b
Baris pertama fail teks harus mengandungi rentetan yang mewakili nilai awal untuk pita.
-
Baris kedua fail teks harus mengandungi status awal.
-
Angka berikut menunjukkan antara muka pengguna untuk penyelesaian sampel, tetapi anda bebas menggunakan sebarang reka bentuk antara muka pengguna yang anda mahukan untuk projek ini.
-
Potensi antara muka Mesin Turing.
Berikut adalah beberapa pertimbangan untuk mewujudkan antara muka:Nilai dan sel semasa:
-
Sekurang-kurangnya, anda harus menunjukkan nilai pita dan menonjolkan sel semasa. Peralatan dan paparan:
-
Anda juga harus menyediakan kemampuan untuk memulakan, menghentikan, atau memulakan semula pelaksanaan program, dan anda harus memaparkan hasil dari setiap langkah program. Pelaksanaan program:
-
Anda boleh menyediakan cara untuk pengguna menjalankan program yang dimuat dari awal hingga akhir, serta cara untuk pengguna melangkah melalui program dengan mengklik butang untuk melaksanakan setiap langkah daripada program ini. Memuatkan program
-
: Anda perlu memberikan butang yang membolehkan pengguna memuatkan mesin Turing Machine dari fail teks dan yang membiarkan pengguna menetapkan semula mesin untuk menjalankan program itu lagi. Berikut tip untuk melaksanakan pita tak terhingga: Gunakan tiga pemboleh ubah rentetan untuk memegang nilai-nilai pita, satu untuk watak tunggal yang disimpan dalam sel semasa, satu saat untuk aksara di sebelah kiri sel semasa, dan satu pertiga untuk aksara di sebelah kanan sel semasa. Anda kemudiannya boleh dengan mudah menggerakkan sel semasa ke kiri atau ke kanan dengan menggunakan gabungan yang tepat dari operasi penggabungan dan substring.
Anda boleh mencari penyelesaian untuk cabaran ini pada tab Muat Turun dari halaman produk
Java All-in-One Untuk Dummies, Edisi ke-4. Nasib baik!