หุ่นยนต์ทัวริงชนิดใดของ Google เป็น Doodle


10

ในการเฉลิมฉลองวันคล้ายวันเกิดของอลันทัวริง Google ตีพิมพ์Doodleซึ่งแสดงเครื่อง Doodle คือเครื่องจักรชนิดใด? มันสามารถแสดงภาษาทัวริงที่สมบูรณ์ได้หรือไม่

มีความแตกต่างที่ชัดเจนกับเครื่องทัวริงคลาสสิก: เทป จำกัด ข้อ จำกัด ในการเชื่อมต่อสถานะ ...

ดูเดิลยังคงมีอยู่ที่นี่ สกรีนช็อตของ doodle

(หน้าจอด้านบนขวาแสดงผลลัพธ์ที่ต้องการ)

เทปที่อยู่ตรงกลางจะถูกแบ่งออกเป็นสี่เหลี่ยมที่สามารถเก็บว่างเปล่าเป็นศูนย์หรือหนึ่ง หัวอยู่ในตำแหน่งเหนือหนึ่งในสี่เหลี่ยมและใช้สำหรับการอ่านและการเขียน

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

หลังจากที่เครื่องเริ่มขึ้นสถานะแรกทางด้านขวาของปุ่มสีเขียวจะสว่างขึ้นจากนั้นสถานะถัดไปทางขวาและอื่น ๆ ... แต่ละสถานะมีหนึ่งในคำสั่งต่อไปนี้:

  • blank = ไม่ทำอะไรเลย (เพิ่งย้ายไปยังสถานะถัดไป)
  • 1 = เขียนหนึ่งไปยังเทปที่ตำแหน่งปัจจุบันของหัว
  • 0 = เขียนค่าศูนย์ลงในเทปที่ตำแหน่งปัจจุบันของส่วนหัว
  • ลูกศรไปทางซ้าย = ย้ายหัวหนึ่งก้าวไปทางซ้าย
  • ลูกศรไปทางขวา = เลื่อนหัวหนึ่งก้าวไปทางขวา
  • condition: หากค่าภายใต้ส่วนหัวเท่ากับค่าที่แสดงในช่องสี่เหลี่ยมลงไปที่บรรทัดที่สองของสถานะ ถ้าไม่ใช่ให้ย้ายไปยังสถานะถัดไปทางด้านขวา
  • กระโดดไปทางซ้าย: กลับสู่สถานะก่อนหน้า (คงที่) แต่อยู่ที่แถวบนเท่านั้น [ฉันลืมไปแล้วหนึ่งอันขอบคุณ @Marzio!]

ไม่มีทางที่จะ "ทับซ้อน" กระโดดสองครั้ง เครื่องหยุดเมื่อออกจากสถานะและไม่มีสถานะถัดไปทางด้านขวา

(หลังจากที่เครื่องหยุดเนื้อหาของเทปจะถูกเปรียบเทียบกับเนื้อหาของจอแสดงผล แต่ฉันไม่คิดว่าจะเป็นส่วนหนึ่งของการทำงานที่ตั้งใจไว้ของเครื่อง)


9
เครื่องทัวริงแน่นอน! en.wikipedia.org/wiki/Turing_machineบางทีคุณอาจสับสนเพราะระบบการเปลี่ยนภาพเป็นเรื่องขี้ขลาด
Huck Bennett

นอกจากนี้ยังมี "ตัวดำเนินการกระโดดด้านซ้าย" ในเอ็นจิ้นควบคุมที่อนุญาตให้กลับไปยังตำแหน่งก่อนหน้า แต่อยู่บนแถวบนเท่านั้น นอกจากนี้ยังไม่มีวิธี "ทับซ้อน" กระโดดสองครั้ง หากไม่มีตัวดำเนินการข้ามเครื่องจะเทียบเท่ากับ DFA (การกระทำในเครื่องมือควบคุมคือ "ดำเนินการ" จากซ้ายไปขวา) แต่ด้วยตัวดำเนินการกระโดดข้ามจำกัด ที่ จำกัดดูเหมือนว่าเครื่องจะมีประสิทธิภาพไม่เพียงพอที่จะจำลอง LBA (แต่ฉันไม่ได้ อย่าคิดมากเกินไป) ในทุกกรณีไม่สามารถทำให้ทัวริงสมบูรณ์เพราะเทปมีขอบเขต จำกัด
Marzio De Biasi

1
@Marzio De Biasi: คุณคิดว่าตัวต่อนี้มีคำแนะนำการกระโดดและหากไม่มีพวกมันโมเดลก็จะอ่อนแอมากเพราะเครื่องจักรสามารถทำงานได้ในเวลาที่กำหนดเท่านั้น (ฉันไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดย "เทียบเท่ากับ DFA") ข้อ จำกัด ที่คุณใส่ในคำแนะนำการกระโดดอาจเปลี่ยนคำตอบ “ เทปมี จำกัด ” อาจเป็นข้อสันนิษฐานที่ไม่ถูกต้อง
Tsuyoshi Ito

Google ทำให้ดูเดิลของพวกเขาพร้อมใช้งาน (แม้ว่าจะไม่ใช่รุ่นอินเทอร์แอคทีฟเสมอไป)
ราฟาเอล

@TsuyoshiIto: ฉันหมายถึง (แต่บางทีฉันผิด) ที่ได้รับเครื่องโดยไม่ต้องลูปคุณสามารถสร้าง DFA ที่จำลองมัน หากคุณอนุญาตให้มีการกระโดดข้ามโดยพลการทั้งสองทิศทางและสามารถทับซ้อนกันเครื่องก็จะ "สมบูรณ์แบบ" ทันที (สมมติว่าไม่มีที่สิ้นสุดเทป) แม้จะมีเพียงสองแถวเท่านั้น (รัฐสามารถ "แบน" ในแนวนอน) ฉันไม่ทราบว่าจะเกิดอะไรขึ้นถ้าคุณอนุญาตให้มีการกระโดดด้านซ้ายที่สามารถทับซ้อนกัน (แต่เฉพาะในแถวแรก) และจำนวนแถวโดยพลการ (การควบคุมบนแถวล่างสามารถขึ้นหรือลงได้เท่านั้น) อาจเป็นคำถามที่ดีสำหรับ cs.stackexchange.com
Marzio De Biasi

คำตอบ:


10

สมมติว่า:

  • เราสามารถเพิ่มแถวจำนวนมากตามอำเภอใจ ("เส้นสถานะ")
  • แถวสามารถยาวโดยพลการ
  • เทปไม่มีที่สิ้นสุด

ฉันพยายามสร้างการกำหนดค่าเครื่อง Doodle ของ Alan Turing ที่เลียนแบบเครื่องอธิบายไว้ใน " เครื่องทัวริงขนาดเล็กและการแข่งขันบีเวอร์ยุ่งทั่วไป " ที่มีปัญหาการหยุดชะงักซึ่งขึ้นอยู่กับปัญหา Collatz ที่เปิดเหมือนกัน ภาพเต็มได้ที่นี่M4

atdoodle

... ดังนั้นแม้ว่า Doodle ของ AT อาจจะไม่ได้รับการทำให้สมบูรณ์ (เนื่องจากตัวดำเนินการกระโดดที่ไม่ทับซ้อนซ้ายเท่านั้นมีเฉพาะในแถวแรก) มันมีพลังมากพอที่จะเดินไปได้ D

แก้ไข: การดึงเส้นขยุกขยิกกำลังทำให้สมบูรณ์

(ฉันออกจากคำตอบก่อนหน้านี้ข้างต้นเพราะฉันไม่แน่ใจว่าส่วนนี้ถูกต้อง :-)

ฉันคิดว่าถึงแม้จะมีการกระโดดที่ไม่ทับซ้อนเพียงครั้งเดียวTuring Doodle ก็ยังสมบูรณ์อยู่! . แนวคิด (ง่าย) คือการใช้เทปเพื่อเก็บสถานะปัจจุบันและใช้หลายเซลล์เพื่อแสดงตัวอักษรที่มีขนาดใหญ่ขึ้น

ตัวอย่างเช่น 2 สถานะ 8 สัญลักษณ์ TM สามารถจำลองได้โดยใช้การแสดงเทปต่อไปนี้:

    HEAD POSITION
    v
...[s][b2 b1 b0] [_][b2 b1 b0] [_][b2 b1 b0] ....
   ^^^^^^^^^^^^^
    "macro cell"

Doodle ทัวริงสามารถ:

  1. s
  2. b2,b1,b0
  3. เขียนสัญลักษณ์ถัดไปย้ายหัวไปที่ "เซลล์แมโคร" ทางซ้ายหรือขวาและเก็บไว้ในสถานะถัดไป ในรูปด้านล่างการดำเนินการเหล่านี้ (ที่สามารถทำได้ในลำดับของเซลล์โดยใช้การกระทำเลื่อนไปทางซ้าย / ขวาและเขียน) เรียกว่า "MW";
  4. ในที่สุดโอนการควบคุมไปยังแถวบนที่มีการกระโดดซ้ายเดียวจะนำการควบคุมกลับไปที่ขั้นตอนที่ 1

ภาพเต็มได้ที่นี่

TdoodleTC

TMDM


nooo! คุณเอาชนะฉันมัน! ฉันแค่เขียนวิธีสร้าง TM โดยพลการในพื้นที่แทนเทป อย่างไรก็ตามวิธีการของคุณนั้นดีกว่าเพราะใช้เพียงการกระโดดครั้งเดียวเท่านั้น ทำได้ดี! รอเครื่องของคุณรับเข้าได้อย่างไร
Artem Kaznatcheev

@ marzio-de-biasi เยี่ยมมาก!
pepper_chico

1
@ArtemKaznatcheev: ได้รับอินพุตบนเทป; เห็นได้ชัดว่าคุณต้องเข้ารหัสตามสัญลักษณ์ตัวอักษรดั้งเดิมของ TM ที่คุณกำลังเลียนแบบและปล่อยให้มีช่องว่างสำหรับการแสดงสถานะ
Marzio De Biasi

alen turingเครื่องหมายของจูเนียร์ ฉันสนุกกับการอ่านนี้
iDroid

ไม่มั่นใจอย่างสมบูรณ์ว่าเป็นความสมบูรณ์ของ TM อย่าคิดว่าคุณจัดการกับกรณีที่ TM เขียนไปยังช่องว่างใหม่ที่ไม่ได้กำหนดไว้ก่อนหน้านี้บนเทปอินพุต ที่จำเป็นสำหรับความสมบูรณ์แบบ TM มิฉะนั้นจะเป็นการคำนวณแบบ จำกัด เท่านั้น
vzn

5

เครื่องบรรจุด้วย "เทป" (อะนาล็อกของกระดาษ) ที่วิ่งผ่านและแบ่งออกเป็นส่วน ๆ (เรียกว่า "กำลังสอง") แต่ละเครื่องสามารถรับ "สัญลักษณ์" ได้ เมื่อใดก็ตามที่มีเพียงหนึ่งตารางพูด r-th, แบกสัญลักษณ์ S (r) ซึ่งเป็น "ในเครื่อง" เราอาจเรียกจตุรัสนี้ว่า "สแควร์สแกน" สัญลักษณ์บนสี่เหลี่ยมสแกนอาจเรียกว่า "สัญลักษณ์สแกน" "สัญลักษณ์สแกน" เป็นเพียงสัญลักษณ์เดียวที่ใช้ในเครื่องดังนั้นเพื่อพูดว่า "ทราบโดยตรง" อย่างไรก็ตามด้วยการปรับเปลี่ยนการกำหนดค่า m เครื่องจะสามารถจดจำสัญลักษณ์บางอย่างที่มี“ เห็น” (สแกน) ก่อนหน้าได้อย่างมีประสิทธิภาพ พฤติกรรมที่เป็นไปได้ของเครื่องในเวลาใดก็ตามจะถูกกำหนดโดย m-configuration qn และสัญลักษณ์สแกน S (r) คู่นี้ qn, S (r) จะถูกเรียกว่า "การกำหนดค่า": ดังนั้นการกำหนดค่าจะกำหนดพฤติกรรมที่เป็นไปได้ของเครื่อง ในการกำหนดค่าบางอย่างที่สแควร์สแกนว่างเปล่า (เช่นไม่มีสัญลักษณ์) เครื่องจะเขียนสัญลักษณ์ใหม่ลงบนสแควร์สแกน: ในการกำหนดค่าอื่น ๆ จะลบสัญลักษณ์สแกน เครื่องอาจเปลี่ยนสแควร์ที่กำลังสแกน แต่เพียงเลื่อนที่เดียวไปทางขวาหรือซ้าย นอกเหนือจากการดำเนินการใด ๆ เหล่านี้การกำหนดค่า m อาจเปลี่ยนแปลงได้ สัญลักษณ์บางตัวที่เขียนลง {232} จะจัดเรียงลำดับของตัวเลขซึ่งเป็นทศนิยมของจำนวนจริงซึ่งกำลังคำนวณ คนอื่น ๆ เป็นเพียงแค่บันทึกคร่าวๆเพื่อ“ ช่วยหน่วยความจำ” มันจะเป็นเพียงบันทึกคร่าวๆเหล่านี้ซึ่งจะมีแนวโน้มที่จะลบออก ไม่มีสัญลักษณ์) เครื่องจะเขียนสัญลักษณ์ใหม่ลงบนตารางที่สแกน: ในรูปแบบอื่น ๆ เครื่องจะลบสัญลักษณ์ที่สแกน เครื่องอาจเปลี่ยนสแควร์ที่กำลังสแกน แต่เพียงเลื่อนที่เดียวไปทางขวาหรือซ้าย นอกเหนือจากการดำเนินการใด ๆ เหล่านี้การกำหนดค่า m อาจเปลี่ยนแปลงได้ สัญลักษณ์บางตัวที่เขียนลง {232} จะจัดเรียงลำดับของตัวเลขซึ่งเป็นทศนิยมของจำนวนจริงซึ่งกำลังคำนวณ คนอื่น ๆ เป็นเพียงแค่บันทึกคร่าวๆเพื่อ“ ช่วยหน่วยความจำ” มันจะเป็นเพียงบันทึกคร่าวๆเหล่านี้ซึ่งจะมีแนวโน้มที่จะลบออก ไม่มีสัญลักษณ์) เครื่องจะเขียนสัญลักษณ์ใหม่ลงบนตารางที่สแกน: ในรูปแบบอื่น ๆ เครื่องจะลบสัญลักษณ์ที่สแกน เครื่องอาจเปลี่ยนสแควร์ที่กำลังสแกน แต่เพียงเลื่อนที่เดียวไปทางขวาหรือซ้าย นอกเหนือจากการดำเนินการใด ๆ เหล่านี้การกำหนดค่า m อาจเปลี่ยนแปลงได้ สัญลักษณ์บางตัวที่เขียนลง {232} จะจัดเรียงลำดับของตัวเลขซึ่งเป็นทศนิยมของจำนวนจริงซึ่งกำลังคำนวณ คนอื่น ๆ เป็นเพียงแค่บันทึกคร่าวๆเพื่อ“ ช่วยหน่วยความจำ” มันจะเป็นเพียงบันทึกคร่าวๆเหล่านี้ซึ่งจะมีแนวโน้มที่จะลบออก สัญลักษณ์บางตัวที่เขียนลง {232} จะจัดเรียงลำดับของตัวเลขซึ่งเป็นทศนิยมของจำนวนจริงซึ่งกำลังคำนวณ คนอื่น ๆ เป็นเพียงแค่บันทึกคร่าวๆเพื่อ“ ช่วยหน่วยความจำ” มันจะเป็นเพียงบันทึกคร่าวๆเหล่านี้ซึ่งจะมีแนวโน้มที่จะลบออก สัญลักษณ์บางตัวที่เขียนลง {232} จะจัดเรียงลำดับของตัวเลขซึ่งเป็นทศนิยมของจำนวนจริงซึ่งกำลังคำนวณ คนอื่น ๆ เป็นเพียงแค่บันทึกคร่าวๆเพื่อ“ ช่วยหน่วยความจำ” มันจะเป็นเพียงบันทึกคร่าวๆเหล่านี้ซึ่งจะมีแนวโน้มที่จะลบออก

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

นี่คือข้อความที่ตัดตอนมาจากกระดาษทัวริงดั้งเดิม "บนตัวเลขที่คำนวณได้พร้อมกับแอปพลิเคชันเพื่อ Entscheidungsproblem"

สหายที่ดีทันสมัยสำหรับกระดาษที่ฉันแนะนำคือThe Annotated Turingโดย Charles Petzold

อย่างที่คุณอาจเห็นว่า Google พยายามที่จะคล้ายกับเครื่องที่คล้ายกับคำอธิบายของทัวริงมาก

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


แต่พวกเขานำเครื่องมือทัวริงมาใช้ด้วยตนเองหรือไม่? อันนี้มีเทป จำกัด ดังนั้นมันจึงเป็นความแตกต่างที่สังเกตเห็นได้ง่าย มันเป็นความแตกต่างที่สร้างความแตกต่าง? ในความเป็นจริงพวกเขาใช้เครื่องที่อ่อนแอกว่าหรือไม่?
bjelli

2
@bjelli อืมฉันไม่สามารถมั่นใจได้ว่าเพราะตั้งแต่ฉันไม่ได้ออกแบบฉันไม่ทราบกฎทั้งหมดเกี่ยวกับเครื่องของพวกเขา แต่ถ้าคุณไปถึงขั้นสุดท้ายของเกมที่คุณสามารถที่จะคลิกที่ไอคอนกระต่ายซึ่งจะนำคุณไปยังเทปอีกต่อไปตรวจสอบการวิเคราะห์ที่นี่: sbf5.com/~cduan/technical/turing ดังนั้นอาจไม่มีข้อ จำกัด เกี่ยวกับจำนวนบรรทัดที่เครื่องสามารถรับได้ซึ่งจะนำคุณไปสู่เทปขนาดใดก็ได้
pepper_chico

กรุณาเขียนหลักฐานที่แสดงว่าทัวริงสมบูรณ์
vzn

4

ในจิ๊กซอร์อนุญาตให้มีการกระโดดได้ทั้งสองบรรทัด แต่ไม่สามารถซ้อนทับกันได้ ในตอนสุดท้ายของเกมที่เรียงตามลำดับกระต่ายในตอนท้ายของเกมพวกเขาอนุญาตให้กระโดดในทุกบรรทัดและพวกเขาสามารถวงเล็บซ้อนกันและอนุญาตให้ [()] แต่ ([)] ดูเหมือนว่าจะไม่ได้รับอนุญาต

ฉันจะใช้สมมติฐานต่อไปนี้:

  1. 01ϵ
  2. เครื่องสามารถใช้จำนวนบรรทัดคงที่ใด ๆ
  3. อนุญาตให้ใช้การกระโดดด้านซ้ายในบรรทัดใดก็ได้ (ฉันจะใช้การกระโดดซ้ายหนึ่งครั้งต่อบรรทัด)
  4. ϵ01

ด้วยสมมติฐานเหล่านี้Doodle เครื่อง Google มีทัวริงสมบูรณ์

01ϵ01n

3(n1)+15n+1

Google Doodle Machine

ϵ01ϵ0101

GDM จำลอง TM ดังนี้:

  1. 1
  2. j
  3. ϵ01
  4. ϵ
  5. 01
  6. 01

เลือก TM สากลที่คุณชื่นชอบและนำไปใช้ในขั้นตอนข้างต้นเพื่อรับ GDM สากล

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