Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

สร้าง Turing Machine สำหรับภาษา L = {0n1n2n | n≥1}

คำอธิบายปัญหา

ที่นี่เราจะดูวิธีสร้าง Turing machine สำหรับภาษา L = {0n1n2n | n ≥ n} ดังนี้แสดงถึงภาษาประเภทหนึ่งที่เราจะใช้ตัวอักษรแค่สามตัวคือ 0, 1 และ 2 w คือสตริง เช่นถ้า w = 000111222 Turing machine จะยอมรับมัน

เพื่อแก้ปัญหานี้ เราจะใช้วิธีการนี้: แทนที่ 0 หนึ่งตัวจากหน้าด้วย x แล้วเคลื่อนที่ไปขวาเรื่อยๆ จนได้ 1 หนึ่งตัว และแทนที่ 1 นี้ด้วย y อีกครั้ง เคลื่อนที่ไปขวาเรื่อยๆ จนได้ 2 หนึ่งตัว แทนที่ด้วย z และเคลื่อนที่ซ้าย ตอนนี้เคลื่อนที่ซ้ายเรื่อยๆ จนกว่าจะพบ x หนึ่งตัว เมื่อเจอ ให้เคลื่อนที่ขวาหนึ่ง步 แล้วทำตามขั้นตอนเดียวกันด้านบน

เงื่อนไขหนึ่งเกิดขึ้นเมื่อเราพบ x ตามด้วย y ทันที ณ จุดนี้ เราเคลื่อนที่ขวาเรื่อยๆ และตรวจสอบว่า 1 และ 2 ทั้งหมดถูกแปลงเป็น y และ z แล้วหรือยัง ถ้าไม่ สตริงจะไม่被接受 ถ้าเราถึง $ สตริงจะ被接受

State Transition Diagram

สร้าง Turing Machine สำหรับภาษา L = {0n1n2n | n≥1}