Di perguruan tinggi kami telah belajar tentang teori komputasi secara umum dan mesin Turing lebih khusus. Salah satu hasil teoretis yang hebat adalah bahwa dengan mengorbankan alfabet (simbol) yang berpotensi besar, Anda dapat mengurangi jumlah status menjadi hanya 2.
Saya mencari contoh Mesin Turing yang berbeda dan contoh umum yang disajikan adalah pencocokan / pemeriksa Parenthesis. Pada dasarnya ia memeriksa apakah sebuah tanda kurung, misalnya (()()()))()()()
seimbang (contoh sebelumnya akan mengembalikan 0 untuk tidak seimbang).
Cobalah semaksimal mungkin saya hanya bisa menjadikan ini mesin tiga keadaan. Saya ingin tahu jika ada yang bisa mengurangi ini ke minimum 2 teoritis dan apa pendekatan / negara / simbol mereka!
Hanya untuk memperjelas, tanda kurung "terjepit" di antara pita kosong sehingga dalam contoh di atas
- - - - - - - (()()()))()()() - - - - - - -
akan menjadi input pada pita. Alfabet akan mencakup (
, )
, 1
, 0
, -
, dan *halt*
negara tidak dihitung sebagai sebuah negara.
Untuk referensi pendekatan tiga negara yang saya miliki adalah sebagai berikut: Deskripsi negara:
State s1: Looks for Closing parenthesis
State s2: Looks for Open parenthesis
State s3: Checks the tape to ensure everything is matched
Symbols: ),(,X
Transisi Terdaftar sebagai:
Action: State Symbol NewState WriteSymbol Motion
// Termination behavior
Action: s2 - *halt* 0 -
Action: s1 - s3 - r
//Transitions of TM
Action: s1 ( s1 ( l
Action: s1 ) s2 X r
Action: s1 X s1 X l
Action: s2 ( s1 X l
Action: s2 X s2 X r
Action: s3 ( *halt* 0 -
Action: s3 X s3 X r
Action: s3 - *halt* 1 -
Maafkan cara informal menuliskan semua ini. Saya masih belajar teori konstruksi di balik ini.