ชัดเจนสมบูรณ์พิสูจน์ว่าเป็นภาษาทัวริงแข่งขัน?


10

ฉันเคยเห็นเว็บไซต์ที่อ้างว่า "พิสูจน์" ว่า HTML5 + CSS นั้นกำลังทำให้สมบูรณ์

ฉันได้เห็นเว็บไซต์ที่อ้างว่า "พิสูจน์" ว่า SQL นั้นเป็นทัวริงที่สมบูรณ์

ฉันเคยเห็นเว็บไซต์จำนวนมากที่อ้างว่า "อธิบาย" ว่าทัวริงสมบูรณ์หมายความว่าอย่างไร

พอ!

ฉันจะหาหนังสือ (เขียนโดยผู้เชี่ยวชาญในทฤษฎีการคำนวณ) หรือบทความที่ผ่านการตรวจสอบโดยเพื่อน (ในวารสารที่มีชื่อเสียง) ที่แสดงหลักฐานว่า "ภาษา XYZ นี้สามารถอธิบายเครื่องคำนวณซึ่งมีอำนาจการคำนวณเดียวกัน เป็นทัวริงจักร "?


3
ไม่มีผู้เชี่ยวชาญคนใดที่จะเขียนบทความนี้เพราะมันไร้ประโยชน์
Andrej Bauer

แต่มีเอกสารที่ทำเช่นนั้น พิจารณาวงจรเสมือนการหน่วงเวลาที่ไม่ไวต่อความรู้สึกนั้นคือทัวริงสมบูรณ์ซึ่งมีการพิสูจน์จากการก่อสร้าง
Dan D.

2
ฉันจะกินหมวกของฉันถ้าคุณสามารถหาเอกสารที่ผ่านการตรวจสอบโดยเพื่อนซึ่งมีข้อพิสูจน์อย่างละเอียดว่า HTML5 + CSS หรือ SQL หรือ PHP นั้นสมบูรณ์แบบ
Andrej Bauer

@ และลองอันนี้ ใกล้พอไหม XSLT เวอร์ชั่น 2.0 นั้นสมบูรณ์แบบสำหรับการพิสูจน์อย่างสมบูรณ์ บางทีแค่กินผักของคุณ: p
vzn

คำตอบ:


12

ทุกภาษาที่สามารถใช้งานตัวนับสองตัว (นั่นคือสองรีจิสเตอร์ที่สามารถเก็บจำนวนเต็มสองตัวที่มีขนาดใหญ่โดยพลการ) และโปรแกรมที่สร้างขึ้นด้วยลำดับที่มีป้ายกำกับของคำแนะนำเบื้องต้นทั้งสองนี้คือ1,2

  • เพิ่มเพื่อตอบโต้C iคำสั่ง GOTO ฉันj1ผมผมJ
  • SUBTRACT จากเคาน์เตอร์C iถ้าC i > 0และ GOTO คำสั่งฉันj ; มิฉะนั้น (ถ้าC i = 0 ) คำสั่ง GOTO ฉันk1ผมผม>0ผมJผม=0ผมk

ผลลัพธ์ได้รับการพิสูจน์ใน:

Marvin L. Minsky, "การแก้ปัญหาที่ไม่สามารถแก้ไขซ้ำได้ของปัญหาเรื่องป้ายและหัวข้ออื่น ๆ ในทฤษฎีของเครื่องจักรทัวริง" (1961)

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

นอกจากนี้คุณยังสามารถหาจำนวนมากของการอ้างอิงในหน้าวิกิพีเดียในรูปแบบ RAMและรุ่น RASP

ในที่สุดหนังสือที่ดีที่มุ่งเน้นไปที่ความเท่าเทียมกันของรูปแบบการคำนวณที่แตกต่างกันคือ:

"รูปแบบของการคำนวณ: ทฤษฎีการคำนวณเบื้องต้น" โดย Maribel Fernandez


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


@ Bakuriu: แน่นอนประโยคนั้นค่อนข้างคลุมเครือ ฉันหมายถึงว่ารูปแบบการคำนวณสามารถพิจารณาได้ว่าทัวริงสมบูรณ์ถ้าในบางรูปแบบอนุญาตให้ใช้ที่เก็บข้อมูลที่ไม่มีขอบเขต ภาษาการเขียนโปรแกรมส่วนใหญ่นั้นทัวริงสมบูรณ์เพราะข้อกำหนด (ไวยากรณ์) ของภาษานั้นไม่มีข้อ จำกัด เกี่ยวกับขนาดของตัวแปรหรือพอยน์เตอร์ แต่การนำไปใช้นั้นมี จำกัด ดูตัวอย่างของ <limits.h> ของ C ดังนั้นแม้ว่าคุณจะมีคอมพิวเตอร์ที่มีหน่วยความจำที่ไม่ได้ จำกัด ที่รันการใช้งาน C คุณจะไม่สามารถใช้หน่วยความจำนั้นเว้นแต่ว่าคุณมี "กลไกเพิ่มเติม" ที่ไม่ได้เป็นส่วนหนึ่งของภาษา
Vor

{W.W|W{0,1}}

3

หนังสือเรียนสองเล่มที่ใช้กันอย่างแพร่หลายเกี่ยวกับทฤษฎีการคำนวณและความซับซ้อน ได้แก่

Michael Sipser: ความรู้เบื้องต้นเกี่ยวกับทฤษฎีการคำนวณ , 2 / e, Cengage, 2005

John E Hopcroft; Jeffrey D Ullman: ทฤษฎีออโตมาตะ, ภาษาและการคำนวณ , แอดดิสัน - เวสลีย์, 1979

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

ดักลาส Hoftstadter: Gödelเอสเชอร์บาหนังสือพื้นฐาน 2522

ในที่สุดการแนะนำการคำนวณที่ดีที่สุดอาจเป็นหนังสือปริศนาโดยนักตรรกวิทยาที่มีชื่อเสียง:

เรย์มอนด์ Smullyan: หญิงหรือเสือและปริศนาตรรกะอื่น ๆเพนกวิน 2526 (ตอนนี้อยู่ในฉบับโดเวอร์ส์ 2552)

(เขาเริ่มด้วยปริศนาจำนวนมากโดยยึดตามความขัดแย้งของ Liar จากนั้นทำงานให้คุณผ่านการสร้างคำกล่าวอ้างตัวเองในหน้ากากของปริศนาสไตล์ Sherlock Holmes เกี่ยวกับกล่องล็อคลึกลับ)

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