Cara memetakan kaset Turing Machine "k-tape" ke dalam satu tape Turing Machine "1-tape"

11

Saya membaca Sipser dan saya merasa sulit untuk memahami apa prosesnya sehingga jika Anda memberi saya mesin Turing dengan kaset k, saya dapat memuntahkan mesin Turing yang setara dengan hanya satu kaset. Sebuah contoh akan menyenangkan. Sebenarnya, contoh yang menunjukkan bagaimana untuk pergi dari TM yang memiliki kaset ke yang memiliki 1 kaset adalah apa yang saya benar-benar cari. Saya belum dapat menemukan satu sejauh ini. Saya juga tidak mencari bukti.k

pengguna678392
sumber
Apa yang Anda maksud dengan "mesin yang setara"? Apa input dan apa outputnya? (Mungkin maksud Anda satu mesin Turing dengan kaset ?)k
Yuval Filmus
Iya. Satu mesin pemutar dengan kaset k.
user678392

Jawaban:

17

Sebuah jawaban tanpa malu-malu disalin dari diri saya :

Mesin Turing multi-tape sebagian besar sama dengan mesin single-tape, kecuali kami memiliki fungsi transisi yang diperluas mana k adalah jumlah kaset. Jadi di setiap negara, fungsi transisi membaca isi dari setiap rekaman, pindah ke keadaan baru, (mungkin) menulis sesuatu di setiap pita dan menggerakkan setiap kepala - seperti TM biasa, kecuali sekarang kita memiliki lebih banyak hal untuk dibaca, tulis dan bergerak.Q×ΓkQ×Γk×{L,R}kk

Seperti pertanyaan Anda menyarankan, mesin seperti itu dapat disimulasikan oleh single-tape TM. Bahkan lebih baik, ini dapat dilakukan hanya dengan perlambatan kuadratik (jadi untuk kelas yang tertutup secara polinomi, itu sudah cukup untuk berbicara tentang mesin pita tunggal).

Buktinya, ini agak terlibat, dan mudah tersedia dengan pencarian web sederhana, jadi saya hanya akan membuat sketsa pemetaan kunci kaset ke satu kaset.k

Ide dasarnya sangat mudah; kami cukup menambahkan beberapa simbol baru dan melacak setiap rekaman dan kepala satu demi satu. Pada setiap langkah dalam perhitungan, kami hanya dapat mengunjungi sejumlah terbatas kaset mana pun, jadi kami hanya perlu menyimpan informasi sebanyak ini tentang setiap kaset. Jadi untuk setiap kami menambahkan simbol baru γ _ ke Γ yang akan menunjukkan di mana kepala (untuk setiap pita) berada pada setiap titik dalam perhitungan. Kami juga memperkenalkan karakter pemisah # ke Γ yang akan menunjukkan awal dan akhir dari kaset "virtual". Input yang diberikan ω = ω 1 ... ω nγΓγ_Γ#Γω=ω1ωn(kita dapat berasumsi bahwa bahkan pada mesin multi-tape semua input ada pada tape pertama - membuktikan mengapa latihan yang baik) pada mesin multi-tape, mesin single-tape kami akan memiliki input

#ω1_ωn#_#_##_#k sections, one per tape

k

Contoh mudah-mudahan:

Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:

Untuk membangun mesin single-tape gabungan, kita perlu menambahkan simbol baru ke alfabet tape:

  1. Kami membutuhkan simbol yang akan menunjukkan awal dan akhir dari kaset yang disimulasikan
  2. Γ

Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#
) dan kepala simulasi dari 3 kaset simulasi (karakter yang digarisbawahi). Tentu saja rekaman itu meluas tak terbatas ke kanan seperti biasa. Saya juga curang secara ringan dengan menggerakkan kepala kaset ke karakter pertama pada string pertama; ketat itu harus dimulai pada sel paling kiri, tetapi ini adalah teknis yang sepele.

#

1101

1

Tape 1:10101Tape 2:1Tape 3:

0

Tape 1:10101Tape 2:1Tape 3:1

Γ

#10_101#1_#_#

Setelah langkah kedua:

#101_01#1_#1_#

Tentu saja ini adalah pandangan tingkat tinggi dari proses - saya belum berusaha menjelaskan bagaimana membangun negara, atau bagaimana setiap kaset simulasi menjadi lebih lama (untuk ini, Anda perlu sedikit rutin yang memeriksa jika Anda telah mengalami akhir kaset simulasi, kemudian gerakkan semuanya ke kanan satu langkah dan peras dalam blank baru - yaitu hanya menambahkan sel-sel kaset simulasi ketika dibutuhkan).

Luke Mathieson
sumber
2
Atau, gunakan " trek " terpisah untuk menulis kaset terpisah di sebelah satu sama lain di ruang yang sama. Namun itu melibatkan pengenalan alfabet baru.
Hendrik Jan
2
@ user678392 Memeriksa konstruksi dengan detail penuh dan menuliskan semuanya di sini akan memakan waktu setidaknya beberapa jam. Jika Anda bahkan tidak akan menjelaskan bagian mana yang tidak Anda mengerti, mengapa orang harus melakukan banyak pekerjaan atas nama Anda? Dan bagaimana jika seseorang melakukannya? Apakah Anda hanya akan berkata, "Saya tidak mengerti. Orang lain melakukannya."?
David Richerby
1
@ user678392 Terima kasih. Dan, hanya untuk memperjelas, apakah itu bahasa Inggris yang Anda mengalami kesulitan (yaitu, pengulangan kata cenderung untuk membantu) atau apakah Anda perlu lebih detail dalam penjelasan?
David Richerby
1
@ user678392, saya telah menambahkan contoh tampilan tingkat tinggi dari langkah pertama konversi dan output praktis pada rekaman. Saya telah menghindari mendiskusikan bagaimana membangun set negara baru, karena itu sangat kompleks dan Anda tidak akan mendapatkan penjelasan yang lebih baik daripada apa yang ada di Sipser atau yang serupa - itu inheren fiddly dan matematika.
Luke Mathieson
1
@RomaKarageorgievich Tampaknya sejumlah bukti yang lebih jelas telah menghilang selama 5 tahun terakhir (jangan percayai internet: D). Yang paling jelas yang saya temukan ada di sini (peringatan, file .doc!). Bukti dalam "Pengantar Bahasa dan Teori Komputasi" Martin cukup bagus, jika Anda memiliki akses ke buku itu (hlm. 244 dalam edisi ke-4). Bukti dalam "Pengantar Teori Komputasi" Sipser sudah cukup (hlm. 177 dalam edisi ke-3).
Luke Mathieson