ทัวริงคืออะไร


487

นิพจน์ "ทัวริงสมบูรณ์" หมายถึงอะไร

คุณสามารถให้คำอธิบายง่ายๆโดยไม่ต้องลงรายละเอียดทางทฤษฎีมากเกินไปได้ไหม


2
ลิงก์ที่ดีมากสำหรับคำถามนี้
Lazer

คำตอบ:


324

นี่คือคำอธิบายสั้น ๆ :

ระบบทัวริงที่สมบูรณ์หมายถึงระบบที่สามารถเขียนโปรแกรมที่จะหาคำตอบ (แม้ว่าจะไม่มีการรับประกันเกี่ยวกับรันไทม์หรือหน่วยความจำ)

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

บางครั้งมันเป็นเรื่องตลก ... ผู้ชายคนหนึ่งเขียนเครื่องมือจำลองทัวริงใน vi ดังนั้นจึงเป็นไปได้ที่จะบอกว่า vi เป็นเครื่องมือคำนวณเพียงอย่างเดียวที่จำเป็นในโลก


18
สำหรับการอ่านเพิ่มเติมโปรดดู The Annotated Turing เข้าถึงได้มาก amazon.com/Annotated-Turing-Through-Historic-Computability/dp/…
i_am_jorf

43
"มักจะไม่ได้อยู่ในทางปฏิบัติ" ไม่ถูกต้อง ไม่มีการใช้ระบบทัวริงเสร็จสมบูรณ์เพราะไม่มีระบบที่ใช้งานได้จริงมีเทปไม่ จำกัด สิ่งที่เราหมายถึงจริงๆคือบางระบบมีความสามารถในการประมาณค่าทัวริง - ความสมบูรณ์จนถึงขีด จำกัด ของหน่วยความจำที่มีอยู่
Shelby Moore III

22
แต่ Vi เป็นเครื่องมือคำนวณเพียงอย่างเดียวที่จำเป็นในโลก ... ;-)
Joe Edgar

4
Emacs เป็นเครื่องกลึงหรือไม่ XD
alem0lars

6
มีคนแสดงให้เห็นว่า PowerPoint กำลังทำทัวริงให้สมบูรณ์ด้วย
Tagc

192

นี่คือคำอธิบายที่ง่ายที่สุด

Alan Turing สร้างเครื่องที่สามารถใช้โปรแกรมรันโปรแกรมนั้นและแสดงผลลัพธ์บางอย่าง แต่เขาต้องสร้างเครื่องจักรต่าง ๆ สำหรับโปรแกรมต่าง ๆ ดังนั้นเขาจึงสร้าง "Universal Turing Machine" ที่สามารถใช้โปรแกรมใด ๆ และเรียกใช้

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

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

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

อัปเดต: คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับโพสต์บล็อกของฉัน: "JavaScript เสร็จสมบูรณ์แล้ว" - อธิบาย


5
ความคิดที่ว่าแม้จะมีคำศัพท์สำหรับเครื่องจักรชนิดนี้ก็สมเหตุสมผลมากกว่าเมื่อฉันจำได้ว่าทัวริงและนักวิทยาศาสตร์คอมพิวเตอร์รุ่นแรก ๆ จะสร้างเครื่องจักรเฉพาะในแต่ละครั้งที่พวกเขาต้องการแก้ปัญหาเฉพาะเจาะจง เราคุ้นเคยกับเครื่องจักรหนึ่งเครื่องที่สามารถทำการโปรแกรมซ้ำได้ตลอดไป ขอบคุณสำหรับบริบทราชา
Jacob Ford

JavaScript สามารถทำให้ทัวริงสมบูรณ์ได้อย่างไร มันขาดระบบไฟล์, multithreading API ที่เหมาะสม มีข้อ จำกัด มากมายสาเหตุหลักมาจากลักษณะความปลอดภัยของเบราว์เซอร์ มันยากที่จะถูกเรียกว่า 'ภาษาการเขียนโปรแกรม' ดูว่ามีตัวแปรที่แตกต่างกันจำนวนหนึ่งของการเขียนสคริปต์อยู่ (การตอบสนอง typescript .. คุณชื่อมัน) ทั้งหมดที่จะชดเชยสิ่งที่ JS ไม่มี (asm.js ควรพูดถึงที่นี่) Java, Python หรือ C ++ เป็นตัวอย่างของ 'Turing Complete' ที่เป็นจริง แต่ js? ฉันไม่คิดอย่างนั้น
Michael IV

2
@MichaelIV เครื่องทัวร์ยังไม่มีระบบไฟล์ / เธรด JS กำลังทัวร์ชมอย่างสมบูรณ์
Bax

@MichaelIV เพื่อเพิ่มการตอบสนองของ Bax คุณสามารถพิจารณาคอมพิวเตอร์ที่ทันสมัยเพื่อประกอบไปด้วยเครื่องจักรทัวริงหลายตัวที่ทำงานร่วมกันเพื่อให้สิ่งที่ดีเหล่านั้นทั้งหมดที่คุณพูดถึง เช่นซีพียูผลิต "เทป" เพื่อให้ GPU อ่านเพื่อให้สามารถเขียน "เทป" สำหรับจอภาพเพื่อให้จอภาพสามารถเขียน "เทป" ให้กับผู้ใช้ ในทำนองเดียวกัน CPU สามารถผลิต "เทป" สำหรับฮาร์ดไดรฟ์, NIC, การ์ดเสียง ฯลฯ

86

จากวิกิพีเดีย :

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

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

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


4
ในบริบทนี้ "อุปกรณ์คำนวณ" คืออะไร?
dopatraman

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

76

คำจำกัดความที่ไม่เป็นทางการ

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

สิ่งที่สามารถทำให้ภาษาไม่ทัวริงสมบูรณ์

เครื่องทัวริงสามารถตัดสินใจบนพื้นฐานของสิ่งที่จะได้เห็นในความทรงจำ - The 'ภาษา' ที่สนับสนุนเท่านั้น+, -, *และ/ในจำนวนเต็มไม่ได้ทัวริงสมบูรณ์เพราะมันไม่สามารถให้ทางเลือกบนพื้นฐานของข้อมูลของตน แต่เครื่องทัวริงสามารถ

เครื่องทัวริงสามารถทำงานได้ตลอดไป - ถ้าเราใช้ Java, Javascript, หรือ Python และลบความสามารถในการวนลูป, GOTO หรือการเรียกใช้ฟังก์ชั่นใด ๆ มันจะไม่สมบูรณ์แบบเพราะมันไม่สามารถทำการคำนวณเองได้ ไม่เคยเสร็จสิ้น Coqเป็นนักทฤษฎีบทที่ไม่สามารถแสดงโปรแกรมที่ไม่ยุติดังนั้นจึงไม่สมบูรณ์ทัวริง

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

เครื่องทัวริงมีหน่วยความจำเข้าถึงโดยสุ่ม - ภาษาที่ให้คุณทำงานกับหน่วยความจำผ่านเท่านั้นpushและpopการทำงานกับสแต็กจะไม่สมบูรณ์ทัวริง ถ้าฉันมี 'ภาษา' ที่อ่านสตริงครั้งเดียวและสามารถใช้หน่วยความจำโดยการผลักดันและ popping จากกองก็สามารถบอกได้ว่าทุกคน(ในสตริงมีของตัวเอง)ในภายหลังโดยการผลักดันเมื่อเห็น(และ popping )เมื่อเห็น อย่างไรก็ตามมันไม่สามารถบอกฉันได้ว่าทุกคน(มีของตัวเองใน)ภายหลังและทุกคน[มีของตัวเองใน]ภายหลัง (โปรดทราบว่า([)]ตรงตามเกณฑ์นี้ แต่([]]ไม่ได้) เครื่องทัวริงสามารถใช้หน่วยความจำเข้าถึงโดยสุ่มเพื่อติดตาม()และ[]แยกจากกัน แต่ภาษานี้ที่มีเพียงสแต็กไม่สามารถทำได้

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

ตัวอย่างภาษาทัวริงที่สมบูรณ์

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

  • แคลคูลัสแลมบ์ดาที่ยังไม่พิมพ์
  • เกมแห่งชีวิตของคอนเวย์
  • เทมเพลต C ++
  • อารัมภบท

11
SQL นั้นสมบูรณ์แบบที่สุด มันมีความสามารถในการเขียนสคริปต์ที่อนุญาตให้มีการคำนวณใด ๆ
nzifnab

53
ไม่คุณกำลังสับสน SQL กับส่วนขยายเช่น T-SQL / PL-SQL ANSI SQL ไม่ได้ทำให้สมบูรณ์ แต่ TSQL / PLSQL - คือ
Agnius Vasiliauskas

15
เห็นได้ชัดว่า SQL เสร็จสมบูรณ์แล้ว: stackoverflow.com/questions/900055/…
Newtang

2
ตามทัวริงครบถ้วน - ระบบทัวริงสมบูรณ์หากสามารถใช้เพื่อจำลองเครื่องทัวริงเทปเดียวใด ๆ แต่ในตัวอย่างข้างต้นเป็นฉันเข้าใจ devs สร้างโดยเฉพาะอย่างยิ่งและไม่ได้cyclic tag system universal cyclic tag systemดังนั้น - บทความไม่ได้พิสูจน์ความสมบูรณ์ของ SQL ทัวริง (หรือฉันเข้าใจผิดบางอย่าง)
Agnius Vasiliauskas

2
ไม่มีการใช้ภาษาทัวริงที่สมบูรณ์ได้เนื่องจากไม่มีเทปที่ไม่สิ้นสุด สิ่งที่เราหมายถึงจริงๆคือบางภาษามีความสามารถในการประมาณทัวริง - ความสมบูรณ์จนถึงขีด จำกัด ของหน่วยความจำที่มีอยู่ของเครื่องโฮสต์
Shelby Moore III

17

ทัวริงสมบูรณ์เป็นหนึ่งข้อกำหนดที่รัดกุมการสอบถามซ้ำไม่ จำกัด

ไม่ จำกัด ด้วยหน่วยความจำ

ฉันคิดเกี่ยวกับเรื่องนี้อย่างอิสระ แต่นี่คือการสนทนาของการยืนยัน คำจำกัดความของฉันของ LSPให้บริบทเพิ่มเติม

คำตอบอื่น ๆ ที่นี่ไม่ได้กำหนดสาระสำคัญพื้นฐานของทัวริงสมบูรณ์


ออโตมาต้าสถานะ จำกัด ได้รับอนุญาตให้มีการเรียกซ้ำที่ไม่ จำกัด กรณีในจุด: a*.

3
@Rymmoid FSM มีหน่วยความจำที่ จำกัด - จำนวน จำกัด ของรัฐ) - แต่การเรียกซ้ำที่ไม่มีขอบเขตโดยไม่มีการปรับหางให้เหมาะสมจะต้องมีหน่วยความจำไม่ จำกัด ฉันไม่ได้ จำกัด คำจำกัดความของฉันไว้ที่ชุดย่อยของการเรียกซ้ำที่ไม่ได้ จำกัด ด้วยการปรับหางให้เหมาะสม โปรดลบ downvote ของคุณ
Shelby Moore III

คุณเก็บคำจำกัดความของการเรียกซ้ำหมอกที่ไม่ จำกัด คุณหมายถึง 'การเรียกซ้ำ' ในแง่ 'การเรียกซ้ำดั้งเดิม' และ 'ไม่ จำกัด ' โดยทำให้เป็น 'บางส่วน' (หรือ 'ทั่วไป' หรือ 'mu-') หรือไม่ จากนั้นคุณอาจจะถูก แต่สูตรปัจจุบันของคุณนั้นใกล้เคียงกับคำวิจารณ์ใน "On Folk Theorems" ของ David Harel มากเกินไป เป็นสิ่งสำคัญที่จะต้องเข้มงวดในวิชาคณิตศาสตร์และการออกคำจำกัดความที่แม่นยำคุณไม่สนใจสิ่งนั้น โดยวิธีการ: FSM สามารถทั่วไปในการโต้ตอบแบบ; สิ่งที่ทำให้พวกเขาแตกต่างจาก TM ก็คือสภาพแวดล้อมของหลังนั้นก็เป็นแบบจำลอง (เช่นเดียวกับเทป)

@Rhymoid แจงนับเป็นสิ่งที่ตรงกันข้ามของความแม่นยำเช่นระบุความแม่นยำสูงสุดของเศษส่วนของนิ้ว การเรียกซ้ำที่ไม่ได้ จำกัด หมายถึงการเรียกซ้ำที่เป็นไปได้ทุกรูปแบบซึ่งเป็นไปไม่ได้หากไม่มีเทปที่ไม่สิ้นสุด การเรียกซ้ำแบบทั่วไปอย่างสมบูรณ์ (ไม่ใช่แค่แบบทั่วไปภายในโมเดล) นั้นเป็นการทำให้ทัวริงสมบูรณ์อยู่เสมอ ฉันระบุความเท่าเทียมกันระหว่างการเรียกซ้ำแบบทั่วไปและความสามารถในการคำนวณใด ๆ ที่เป็นไปได้ นั่นคือความเท่าเทียมกันที่สำคัญที่ควรทราบ
Shelby Moore III

"การเรียกซ้ำที่ไม่ได้ จำกัด หมายถึงการเรียกซ้ำที่เป็นไปได้ทุกรูปแบบ" นั่นคือการอ่านของคุณ ให้มากที่สุดเพื่อให้ผู้ใช้ 'มากมายเรียกซ้ำ' while (p) { /* ... */ }หมายถึง "ฉันกำลังระบุความเท่าเทียมกันระหว่างการเรียกซ้ำแบบทั่วไปและความสามารถในการคำนวณใด ๆ ที่เป็นไปได้" วิทยานิพนธ์คริสตจักรเป็นเรื่องที่แตกต่างกันมากและควรจริงๆจะกล่าวถึงแยกต่างหาก

13

ทัวริงหมายที่สมบูรณ์แบบที่มันเป็นอย่างน้อยที่มีประสิทธิภาพเป็นเครื่องทัวริง นี่หมายความว่าทุกสิ่งที่สามารถคำนวณได้โดยเครื่องทัวริงสามารถคำนวณได้โดยระบบทัวริงที่สมบูรณ์

ยังไม่มีใครพบระบบที่ทรงพลังยิ่งกว่าเครื่องทัวริง ดังนั้นในขณะนี้การพูดว่าระบบคือทัวริงสมบูรณ์เหมือนกับการพูดว่าระบบนั้นทรงพลังเท่ากับระบบคอมพิวเตอร์ใด ๆ ที่รู้จัก (ดูวิทยานิพนธ์คริสตจักรทัวริง )


3
โปรดทราบว่าทั้งหมดนี้ไม่สนใจเวลาที่ผนัง เพียงแค่พูดว่า "สามารถทำได้"
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersenจริง ๆ แล้วมันไม่สนใจการคำนวณทางกายภาพทั้งหมด ไม่เพียง แต่จะใช้เวลานานกว่าอายุของเอกภพเท่านั้น แต่มันยังอาจใช้หน่วยความจำมากกว่าที่สามารถสร้างขึ้นได้ด้วย fermion และ bosons ทั้งหมดในจักรวาล
Waylon Flinn

นั่นอาจเป็นไปได้ว่าไม่ จำกัด จำนวนโบซอนและเฟอร์มิออนในจักรวาล เราไม่รู้และอาจไม่เคยรู้ขนาดของมัน ทุกครั้งที่คุณอ่านเกี่ยวกับจำนวน X ใน 'จักรวาล' ผู้คนกำลังพูดถึงจักรวาลที่สังเกตได้ แม้ว่าจะน่าสนใจ แต่ก็ไม่ได้ จำกัด อยู่จริง
Stijn de Witt

9

ในแง่ที่ง่ายที่สุดระบบทัวริงสมบูรณ์สามารถแก้ปัญหาการคำนวณใด ๆ ที่เป็นไปได้

หนึ่งในข้อกำหนดหลักคือขนาดรอยขีดข่วนจะไม่ถูก จำกัด และเป็นไปได้ที่จะย้อนกลับเพื่อเข้าถึงการเขียนก่อนหน้าไปยัง Scratchpad

ดังนั้นในทางปฏิบัติไม่มีระบบทัวริงสมบูรณ์

ค่อนข้างบางระบบประมาณทัวริงสมบูรณ์โดยการสร้างแบบจำลองหน่วยความจำที่ไม่ได้ จำกัด และดำเนินการคำนวณใด ๆ ที่เป็นไปได้ที่สามารถพอดีกับหน่วยความจำของระบบ


2

ฉันคิดว่าความสำคัญของแนวคิด "ทัวริงสมบูรณ์" อยู่ในความสามารถในการระบุเครื่องคอมพิวเตอร์ (ไม่จำเป็นต้องเป็นคอมพิวเตอร์ "เครื่องกล" / ไฟฟ้า ") ที่สามารถมีกระบวนการที่จะแยกแยะคำแนะนำ" ง่าย "ประกอบด้วยเรียบง่ายและเรียบง่ายขึ้น คำแนะนำที่เครื่อง Universal สามารถตีความและดำเนินการได้

ฉันขอแนะนำ The Annotated Turing

@ Mark ฉันคิดว่าสิ่งที่คุณกำลังอธิบายคือการผสมผสานระหว่างคำอธิบายของ Universal Turing Machine และ Turing Complete

สิ่งที่ทัวริงเสร็จสมบูรณ์ในทางปฏิบัติจะเป็นเครื่อง / กระบวนการ / การคำนวณที่สามารถเขียนและแสดงเป็นโปรแกรมที่จะดำเนินการโดย Universal Machine (คอมพิวเตอร์เดสก์ท็อป) แม้ว่าจะไม่คำนึงถึงเวลาหรือการจัดเก็บ แต่อย่างอื่น


2

สิ่งที่ฉันเข้าใจในคำง่าย ๆ :

Turing Complete:ภาษาโปรแกรม / โปรแกรมที่สามารถทำการคำนวณได้คือ Turing complete

ตัวอย่างเช่น :

  1. คุณสามารถเพิ่มตัวเลขสองตัวโดยใช้ Just HTMLได้หรือไม่ (ตอบคือ ' ไม่ ' คุณต้องใช้จาวาสคริปต์เพื่อทำการเพิ่ม) ดังนั้น HTML จึงไม่สมบูรณ์

  2. ภาษาเช่น Java, C ++, Python, Javascript, Solidity สำหรับ Ethereum และ Turing Complete เพราะคุณสามารถทำการคำนวณได้เช่นการเพิ่มตัวเลขสองตัวโดยใช้ภาษานี้

หวังว่านี่จะช่วยได้


0

มันสมบูรณ์ถ้ามันสามารถทดสอบและสาขา (มี 'ถ้า')


1
สำหรับคำถามดังกล่าวที่เก่าก็จะมีการตรวจสอบคุ้มค่าที่จะดูว่าคนอื่น ๆ ได้ทำแล้วผลงานที่คล้ายกันหรือที่สำคัญมากขึ้นแล้ว
alan OCallaghan

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

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

0

เครื่องทัวริงต้องการให้โปรแกรมใด ๆ สามารถทำการทดสอบสภาพได้ นั่นคือพื้นฐาน

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

ตรรกะเชิงเงื่อนไขเป็นทั้งพลังและอันตรายของเครื่องจักรที่ทัวริงสมบูรณ์

เปียโนม้วนรับประกันว่าจะหยุดทุกครั้ง ไม่มีการรับประกันดังกล่าวสำหรับ TM สิ่งนี้เรียกว่า“ ปัญหาการหยุดชะงัก”


-1

ดังที่Waylon Flinn กล่าวว่า :

ทัวริงสมบูรณ์หมายความว่าอย่างน้อยก็มีประสิทธิภาพเท่ากับเครื่องทัวริง

ฉันเชื่อว่าสิ่งนี้ไม่ถูกต้องระบบจะทัวริงเสร็จสมบูรณ์หากมันมีประสิทธิภาพเท่ากับเครื่องทัวริงนั่นคือการคำนวณทุกอย่างที่ทำโดยเครื่องสามารถทำได้โดยระบบ .


1
ฉันคิดว่าคุณคิดว่าวิทยานิพนธ์คริสตจักรทัวริงเป็นจริงที่จะมาถึงข้อสรุปนี้ มันยังไม่ได้รับการพิสูจน์ คุณสมบัติที่คุณกำลังอธิบายเรียกว่า 'ทัวริงเทียบเท่า'
Waylon Flinn

1
@WaylonFlinn ไม่เขาพูดถูก "ความสมบูรณ์" หมายถึงทั้งสองอย่างนั้นอย่างน้อยก็แข็งแกร่งเหมือนสิ่งใดสิ่งหนึ่ง แต่ก็ไม่แข็งแกร่งเช่นกัน เปรียบเทียบกับ "NP-Complete"
Devin Jeanpierre

3
@DevinJeanpierre ฉันไม่ต้องการเริ่มสงครามเปลวไฟที่นี่ แต่ฉันเกือบจะแน่ใจว่าคลาสการคำนวณที่คุณกำลังอธิบายนั้นเรียกว่า "Turing Equivalent" Turing Complete มีความสัมพันธ์คล้ายกับ NP-Complete แม้ว่า NP-Complete เท่ากับ NP ถ้าและถ้า P = NP ในทำนองเดียวกันทัวริงสำเร็จเท่ากับทัวริงเทียบเท่าถ้าหากวิทยานิพนธ์คริสตจักรทัวริงถูกต้อง
Waylon Flinn

@Waylon ที่มา? ฉันไม่เห็นด้วยกับสิ่งใด (เช่นen.wikipedia.org/wiki/Turing_completeness )
Devin Jeanpierre

4
@DevinJeanpierre มันบอกว่ามันอยู่ที่นั่นในบทความวิกิพีเดียที่คุณเชื่อมโยงไปถึง อ้างคำนิยามอย่างเป็นทางการส่วน "ระบบคอมพิวเตอร์ที่สามารถคำนวณทุกฟังก์ชั่นทัวริง-คำนวณเรียกว่าทัวริงสมบูรณ์", "ระบบทัวริงสมบูรณ์ที่เรียกว่าทัวริงเทียบเท่าถ้าฟังก์ชั่นที่จะสามารถคำนวณทุกคนจะยังทัวริงคำนวณ"
เวย์ลอน Flinn

-2

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


1
เดียวห่วงขณะมากมายพอที่จะจำลองเครื่องทัวริง
masterxilo

-8

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

แต่ C ++ สามารถทำได้และสามารถแก้ไขปัญหาใด ๆ ได้ ดังนั้นมันจึงเป็น


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

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