ในวิทยาลัยเราได้เรียนรู้เกี่ยวกับทฤษฎีการคำนวณโดยทั่วไปและเครื่องทัวริงโดยเฉพาะ ผลลัพธ์ทางทฤษฎีที่ยอดเยี่ยมอย่างหนึ่งคือค่าใช้จ่ายของตัวอักษรขนาดใหญ่ (สัญลักษณ์) คุณสามารถลดจำนวนสถานะลงเหลือเพียง 2
ฉันกำลังมองหาตัวอย่างของเครื่องจักรทัวริงที่แตกต่างกันและตัวอย่างที่นำเสนอโดยทั่วไปคือเครื่องมือจับคู่วงเล็บ / ตัวตรวจสอบ โดยพื้นฐานแล้วมันจะตรวจสอบว่าสตริงของวงเล็บเช่น(()()()))()()()
สมดุลหรือไม่ (ตัวอย่างก่อนหน้านี้จะคืนค่า 0 สำหรับการไม่สมดุล)
ลองเป็นฉันฉันจะได้รับสิ่งนี้เป็นเครื่องสามรัฐ ฉันชอบที่จะรู้ว่าถ้าใครสามารถลดสิ่งนี้ลงให้เหลือน้อยที่สุดในทางทฤษฎีของ 2 และสิ่งที่วิธี / รัฐ / สัญลักษณ์ของพวกเขาเป็นอย่างไร
เพียงเพื่อชี้แจงวงเล็บคือ "แซนวิช" ระหว่างเทปเปล่าดังนั้นในตัวอย่างข้างต้น
- - - - - - - (()()()))()()() - - - - - - -
จะเป็นอินพุตบนเทป ตัวอักษรจะรวมถึง(
, )
, 1
, 0
, -
และ*halt*
รัฐไม่นับเป็นของรัฐ
สำหรับการอ้างอิงสามสถานะของฉันมีดังนี้: คำอธิบายของรัฐ:
State s1: Looks for Closing parenthesis
State s2: Looks for Open parenthesis
State s3: Checks the tape to ensure everything is matched
Symbols: ),(,X
การเปลี่ยนสถานะเป็น:
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 -
ยกโทษให้อย่างไม่เป็นทางการในการเขียนทั้งหมดนี้ลง ฉันยังคงเรียนรู้โครงสร้างทางทฤษฎีที่อยู่เบื้องหลังสิ่งนี้