ทำไมสัญลักษณ์ว่างเปล่าจึงไม่ถือว่าเป็นส่วนหนึ่งของตัวอักษรอินพุตของเครื่องทัวริง


12

คำจำกัดความของเครื่องจักรทัวริงมักจะชัดเจนเกี่ยวกับสัญลักษณ์ว่างเปล่าที่ไม่ได้เป็นส่วนหนึ่งของตัวอักษรอินพุต

ฉันสงสัยว่าสิ่งที่ผิดพลาดเมื่อคุณจะทำให้มันเป็นส่วนหนึ่งของตัวอักษรใส่ได้อย่างมีประสิทธิภาพเพราะสัญลักษณ์ว่างเปล่าอยู่แล้วน่าจะเป็นส่วนหนึ่งของการป้อนข้อมูล

ในการอธิบายว่า 'ดูเหมือน' ในประโยคสุดท้ายให้พิจารณาสิ่งต่อไปนี้

ในการตั้งค่าเริ่มต้นจำนวนสัญลักษณ์ว่างเปล่าปรากฏขึ้นทางด้านขวาของอินพุต เมื่อหัวเทปเลื่อนไปเหนือสัญลักษณ์ว่างอันแรกการคำนวณสามารถทำได้ต่อเนื่องจากไม่จำเป็นต้องเป็นสถานะยอมรับหรือปฏิเสธ

ตอนนี้สมมติว่าการคำนวณจะเขียนสัญลักษณ์จากตัวอักษรอินพุตไปทางขวาของสัญลักษณ์ว่างเปล่าแรกจากนั้นกลับไปที่ตำแหน่งซ้ายสุดในขณะที่กลับสู่สถานะเริ่มต้น จากนั้นจะ 'เริ่มต้นใหม่' ด้วยเทปอื่น อย่างมีประสิทธิภาพตอนนี้เริ่มต้นด้วยอินพุตที่แตกต่างกันซึ่งมีสัญลักษณ์อินพุตอยู่ทางด้านขวาของช่องว่างที่ไม่เคยมีมาก่อน ดูเหมือนว่าอินพุตจะมีสัญลักษณ์ว่างอย่างมีประสิทธิภาพ พฤติกรรมเพิ่มเติมของเครื่องในขณะนี้อาจแตกต่างกัน: หลังจากพบช่องว่างอีกครั้งตอนนี้จะพบสัญลักษณ์ที่แตกต่างกันไปทางขวา

สมมติว่าสถานการณ์นี้เป็นไปได้จริง ๆ ทำไมคุณไม่พิจารณาสัญลักษณ์ว่างเปล่าส่วนหนึ่งของตัวอักษรอินพุตและทำไมคุณไม่อนุญาตให้รวมมันเป็นส่วนหนึ่งของอินพุต 'เริ่มต้น'

บางทีมันอาจเป็นเพียงวิธีกำหนดอินพุตเช่นว่ามันจะไม่สิ้นสุดตลอดไปใช่ไหม


เมื่อฉันอยู่ในชั้นเรียนฉันได้ออกแบบเครื่องจักรทัวริงที่ใช้การอนุญาตβ (สัญลักษณ์ว่างในเครื่อง) ในอินพุตของพวกเขาเป็นตัวคั่นฟิลด์
Joshua

คำตอบ:


23

สาเหตุหลักคือทำให้เครื่องตรวจจับจุดสิ้นสุดของอินพุต: มัน (ตัวอักษรก่อนหน้า) ว่างเปล่าครั้งแรก หากคุณอนุญาตให้มีช่องว่างในอินพุตเครื่องจะไม่สามารถทราบได้ว่าอาจหาอินพุตเพิ่มเติมได้ด้วยการสแกนไปทางด้านขวา แน่นอนคุณสามารถแก้ปัญหาที่โดยมีพิเศษ "ในตอนท้ายของการป้อนข้อมูล" ตัวอักษร แต่แล้วคุณจะต้องยืนยันว่าที่ไม่สามารถปรากฏในการป้อนข้อมูลเพื่อให้คุณได้ขยับตัวเพียงระดับหนึ่งปัญหาลึก

นอกจากนี้ยังทำให้เงื่อนไขเริ่มต้นง่ายขึ้นในการระบุ: อินพุตเป็นส่วนที่ไม่ว่างของเทปเริ่มต้นซึ่งจะต้อง จำกัด และต่อเนื่องกัน และถ้าคุณต้องการให้อักขระว่างเป็นส่วนหนึ่งของตัวอักษรอินพุตคุณสามารถเพิ่มอักขระพิเศษ (เรียกว่า "ช่องว่าง" หรืออะไรก็ได้) และให้เครื่องทำงานตามที่คุณต้องการเมื่อเห็น


2
แน่นอนว่าหากไม่มีความสามารถในการกำหนดจุดสิ้นสุดของอินพุตเริ่มต้นการคำนวณบางอย่างอาจเป็นไปไม่ได้ แต่อย่างอื่นไม่มีอะไรพิเศษเกี่ยวกับสัญลักษณ์ และฉันคิดว่ามันเป็นเรื่องของเศรษฐกิจคำศัพท์ที่จะใช้สัญลักษณ์ว่างเปล่าเพราะคุณต้องการมันในตัวอักษรของคุณ ฉันคิดว่ามันจะชัดเจนกว่าสำหรับฉันเมื่อแรกกำหนดด้วยสัญลักษณ์สิ้นสุดการป้อนข้อมูลที่ชัดเจนและข้อสังเกตว่ามันไม่จำเป็นอย่างเคร่งครัดและมักจะถูกทิ้งไว้
ความสับสน

1
มีการเข้ารหัสอินพุตแบบง่ายที่ไม่ต้องการสัญลักษณ์พิเศษ ตัวอย่างเช่นเราสามารถจำลองอักขระสี่ตัวอักษรโดยพิจารณาคู่ของอักขระ 00, 01, 10 และ 11 แล้ว (ตัวอย่างเช่น) กำหนดการถอดรหัส . แต่มันช่วยลดความยุ่งยากในการอนุญาตให้ใช้ตัวละครตัวที่สามและทำให้ไม่มีข้อเสียอย่างแท้จริง {00}0,{11}1,{10,01}b
Yonatan

2
การมองว่าเป็นเครื่องทัวริงต้องการกฎที่ควบคุมสิ่งที่มันทำถ้ามันอ่านเปล่าและมันอาจมีกฎที่บอกให้เขียนเป็นช่องว่างนั่นไม่ได้หมายความว่าช่องว่างนั้นเป็นส่วนหนึ่งของตัวอักษรจริงหรือ ฉันไม่เห็นสาเหตุที่อินพุตอาจไม่มีช่องว่าง วิธีการเข้ารหัสรายการอินพุตโดยใช้อักขระที่ไม่ใช่ช่องว่างและช่องว่างเดียวเป็นตัวคั่น จากนั้นช่องว่างต่อเนื่องหลายช่องจะระบุจุดสิ้นสุดของอินพุต
Rosie F

3
@ YonatanN แน่นอน นั่นคือ "ง่าย" แต่การมีสัญลักษณ์ว่างเปล่านั้นง่ายกว่า
David Richerby

3
@RosieF ช่องว่างเป็นส่วนหนึ่งของตัวอักษรเทป ตัวอักษรที่ป้อนเข้าเป็นส่วนย่อยของที่ และแน่นอนคุณสามารถตั้งค่าการประชุมสำหรับวิธีการป้อนข้อมูลสามารถมีช่องว่างภายใต้สถานการณ์บางอย่าง (เช่นคุณ) แต่ที่ทำให้คำจำกัดความที่ซับซ้อนมากขึ้น คำจำกัดความที่ซับซ้อนยิ่งขึ้นหมายความว่าเป็นการยากที่จะพิสูจน์สิ่งต่าง ๆ เกี่ยวกับเครื่องจักรทัวริง และเนื่องจากเครื่องทัวริงใช้สำหรับการพิสูจน์สิ่งต่าง ๆ เท่านั้น (ถ้าคุณต้องการออกแบบคอมพิวเตอร์จริงมันไม่ได้เป็น TM) ซึ่งไม่ใช่การแลกเปลี่ยนที่ดี
David Richerby

6

คุณสามารถกำหนดสัญลักษณ์ว่างเปล่าเพื่อเป็นส่วนหนึ่งของตัวอักษร ปัญหาที่เกิดขึ้นก็คือถ้าเครื่องทัวริงที่มีอินพุต b010010b (โดยที่ b ย่อมาจากblank ) ไม่เคยอ่าน b ที่สองจากนั้นเครื่องจะทำงานในลักษณะเดียวกันกับอินพุตทั้งหมดที่เริ่มต้นด้วย b010010b

เครื่องทัวริงเหล่านี้เรียกว่าเครื่องทัวริงส่วนหน้าและมีประโยชน์อย่างมากสำหรับการพิสูจน์ทฤษฎีบทบางอย่างเกี่ยวกับความซับซ้อนของ Kolmogorov


5

คำตอบที่สั้นมาก: ตัวอักษรของเทปคือชุดของสัญลักษณ์ที่สามารถปรากฏบนเทปและรวมถึงสัญลักษณ์เปล่า อักษรป้อนข้อมูลเป็นชุดของสัญลักษณ์ที่สามารถปรากฏในการป้อนข้อมูลเริ่มต้นและจะไม่รวมถึงสัญลักษณ์ที่ว่างเปล่า ตัวอักษรหลักที่เครื่องสนใจคือตัวอักษรของเทป: มันยังต้องการกฎว่าจะทำอย่างไรเมื่อเห็นตัวอักษรว่างเปล่า

ความแตกต่างนี้มีความสำคัญอย่างที่คนอื่น ๆ พูดเพื่อให้เครื่องสามารถบอกได้ว่าอินพุตสิ้นสุดลงที่ใด มันเป็นเหตุผลเดียวกันกับที่คุณไม่สามารถ (ใช้อย่างมีประโยชน์) ใส่อักขระศูนย์ในกึ่งกลางของสตริงใน C: สงวนอักขระศูนย์ไว้เพื่อหมายถึง "อักขระที่ไม่ใช่ศูนย์สุดท้ายก่อนหน้านี้คือจุดสิ้นสุดของข้อมูลดังนั้น เมื่อคุณเห็นสิ่งนี้คุณก็ทำได้ " หากคุณต้องการคาดหวังว่าจะมีตัวอักษรเป็นศูนย์ในช่วงกลางของสตริงการเขียนstrlenจะยากขึ้นมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.