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


33

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

คอมพิวเตอร์ทัวริงสมบูรณ์หากสามารถแก้ปัญหาที่เครื่องทัวริงสามารถ ...

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

เครื่องจักรทัวริงทำอะไรได้บ้างโดยที่ไม่มีเครื่องที่ไม่ใช่ทัวริงที่สามารถทำงานแบบเดียวกันได้ ตัวอย่างเช่นคอมพิวเตอร์สามารถทำการคำนวณแบบง่าย ๆ ได้เช่น(1+5)/3=?กัน แต่เครื่องคิดเลขธรรมดาก็สามารถทำได้เช่นกันซึ่งไม่ใช่การทัวริงที่สมบูรณ์หากฉันถูกต้อง

มีวิธีในการกำหนดความสามารถของทัวริงโดยไม่ต้องพูดว่า "การจำลองเครื่องทัวริงอื่น" ได้หรือไม่?


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


"มีวิธีกำหนดความสามารถของทัวริงจักรหรือไม่" แน่ใจ ทฤษฎีต้องใช้พื้นที่และเวลาในการแก้อัลกอริธึมด้วยเครื่องจักรทัวริง (L, NL, P, NP, PSPACE, ฯลฯ ) และยังมีปัญหาที่ไม่สามารถแก้ไขได้ ปัญหาที่แก้ไม่ได้อื่น ๆ ) ตัวอย่างหนึ่งของปัญหาที่ไม่สามารถแก้ไขได้โดยเครื่องทัวริงคือปัญหาการหยุดชะงัก
มิลลี่สมิ ธ

เมื่อพูดถึงทฤษฎีของ CS (หรือทฤษฎีอื่น ๆ ) จะเป็นการดีกว่าที่จะอ่านหนังสือในหัวข้อแทนที่จะเป็น google it และอ่านบล็อกโพสต์ในหัวข้อที่ในหลาย ๆ กรณีเขียนโดยคนที่ไม่เข้าใจหัวข้ออย่างสมบูรณ์ ตัวเอง หนังสือดีเล่มหนึ่งจะช่วยคุณประหยัดเวลาให้ภาพที่กว้างขึ้นและความเข้าใจที่ดีขึ้น
Bozidar Sikanjic

ฟังก์ชั่น Ackermannเป็นตัวอย่างที่โดดเด่นของสิ่งที่เครื่องทัวริงสามารถคำนวณ แต่รูปแบบที่ จำกัด มากขึ้นของการคำนวณ ( recursion ดั้งเดิม ) ไม่สามารถ
zwol

คำตอบ:


13

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

แต่มันหมายความว่าอะไร?

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

มีวิธีในการกำหนดความสามารถของทัวริงโดยไม่ต้องพูดว่า "การจำลองเครื่องทัวริงอื่น" ได้หรือไม่?

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

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

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

ตัวอย่างสำหรับภาษาที่ไม่ใช่ TC ในทางปฏิบัติ

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

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

ยกตัวอย่างเช่น (และนี้ได้เดือดร้อนแน่นอนโปรแกรมเมอร์จำนวนมากในการใช้งานจริงที่เกิดขึ้นจริง) มันเป็นทฤษฎีและเป็นไปไม่ได้ในทางปฏิบัติเพื่อสร้างการแสดงออกปกติที่ตรงกับภาษาการเขียนโปรแกรมหรือเอกสาร XML: มันเป็นไปไม่ได้สำหรับ regexp เพื่อหาโครงสร้างบล็อก ( do ... endหรือ{ ... }ในภาษาเปิดและปิดแท็กในเอกสาร XML) หากพวกเขาได้รับอนุญาตให้ลึกโดยพลการ หากมีข้อ จำกัด อยู่ที่นั่นตัวอย่างเช่นคุณสามารถมี "การเรียกซ้ำ" เพียง 3 ระดับจากนั้นคุณสามารถค้นหานิพจน์ทั่วไปได้ แต่ถ้ามันไม่ถูก จำกัด ก็ไม่เป็นไร

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

แรงจูงใจ

ความคิดของเครื่องจักรทัวริงในตัวเองนั้นไม่มีประโยชน์อะไรเลย กล่าวคือทัวริงไม่ได้สร้างมันขึ้นมาเพื่อสร้างคอมพิวเตอร์จริงหรืออะไรทำนองนั้นเมื่อเทียบกับ Charles Babbage หรือ von Neumann เป็นต้น จุดที่มีแนวความคิดของเครื่องทัวริงที่เป็นที่เป็นเหลือเกินที่เรียบง่าย ประกอบด้วยเกือบไม่มีอะไร จะลดคอมพิวเตอร์ที่เป็นไปได้ (และจริง) ให้น้อยที่สุดเท่าที่จะเป็นไปได้

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

ไม่มีที่สิ้นสุด

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

... และอื่น ๆ

หนึ่งจุดสุดท้ายที่น่าประหลาดใจก็คือว่าเช่นง่ายๆสิ่งที่ง่ายสามารถทำทุกอย่างคอมพิวเตอร์จริงใด ๆ เท่าที่จะนึกออกอาจเคยในจักรวาลทั้งประสบความสำเร็จ (เพียงมากช้าลง) - อย่างน้อยเท่าที่เรารู้ว่าวันนี้


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

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

ขอบคุณ! นั่นเป็นคำตอบที่ฉันต้องการ ฉันกำลังคิดเกี่ยวกับปัญหาการหยุดชะงักและวิธีการที่ภาษาที่มีขอบเขตแบบง่ายสำหรับการวนซ้ำสามารถคาดเดาได้ ฉันคิดว่าบางทีการทัวริงหมายถึงการคาดเดาไม่ได้ในทางใดทางหนึ่ง (เป็นคำศัพท์ที่เหมาะสมสำหรับหน้าที่เหล่านั้นหรือไม่?)
sashoalm

@sashoalm ดีใจที่คุณชอบคำตอบ ไม่การคาดการณ์ไม่ได้ไม่ได้เป็นปัจจัยในเรื่องนี้ ขอบเขต for-loops (เป็น non-tc) เป็นตัวอย่างที่ดีเช่นกัน ในความเป็นจริงอีกตัวอย่างที่ดีสำหรับภาษา tc แบบง่าย ๆ (และในโลกแห่งความเป็นจริง) จะเป็นสิ่งที่เพิ่งมีตัวแปรและ (ไม่ จำกัด ) while- ซึ่งเพียงพอแล้วที่จะเป็น tc ขอบเขต (un) ของโครงสร้างการควบคุมเป็นหนึ่งในองค์ประกอบสำคัญ
AnoE

38

มันไม่ได้ซ้ำซากเลย

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

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

ab

มีวิธีในการกำหนดความสามารถของทัวริงโดยไม่ต้องพูดว่า "การจำลองเครื่องทัวริงอื่น" ได้หรือไม่?

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


19
ฉันคิดว่า OP ผสมเครื่องทัวริงและทัวริงเสร็จแล้ว สิ่งที่เขากำลังมองหาคือนิยามของเครื่องจักรทัวริง ประโยคสุดท้ายของคุณคือคำตอบ en.wikipedia.org/wiki/Turing_machineจะช่วยได้
JollyJoker

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

2
ไม่เป็นไร - ฉันคิดว่ามันเพียงพอที่จะแสดงให้เห็นว่าภาษาสามารถเลียนแบบวิธีการทำงานของเครื่องจักรทัวริงเพื่อพิสูจน์ว่าเป็นทัวริงที่สมบูรณ์
Akshat Mahajan

17

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

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

วิธีนี้ใช้งานได้เนื่องจาก Excel ใช้งานทัวริงได้สมบูรณ์ ผมขอแนะนำการดูที่หน้าวิกิพีเดียในการทำวิทยานิพนธ์โบสถ์ทัวริงและกระดาษสำรวจของ Blass และซค์, อัลกอริทึม: การแสวงหาคำนิยามแอบโซลูท


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

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

LAfaAf(a)L

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

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


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

5
Excel is also Turing-complete.- เฉพาะในกรณีที่คุณสามารถให้หน่วยความจำแบบไม่มีที่สิ้นสุดของ Excel Excel ถูก จำกัด ที่ 1,048,576 แถวและ 16,384 คอลัมน์ซึ่งถือว่าสั้นมาก
MattClarke

5
@MattClarke: จริง แต่ด้วยโทเค็นเดียวกันไม่เคยสร้างระบบใดเลยที่ทัวริงสมบูรณ์
Emil

3
@Emil: และสิ่งสำคัญคือนักเรียนของ CS จะต้องแยกแยะระหว่างความสามารถของแบบจำลองการคำนวณและความสามารถของเครื่องจริง พวกเราที่เคยตีขีด จำกัด ทางกายภาพของเครื่องจักรจริงของเราซ้ำแล้วซ้ำเล่าจะพบความแตกต่างที่ง่ายต่อการทำแน่นอน ดังนั้นเราจึงรู้ว่าเราจะกำหนดรูปแบบการคำนวณของ Excel ในเวอร์ชันที่ไม่ จำกัด ได้อย่างไรและจะทำให้ทัวริงสมบูรณ์ แม้ว่าที่จริงแล้วการเขียนคำจำกัดความที่เป็นชนิดของเที่ยวยุ่งยิ่ง
Steve Jessop

4
@SteveJessop ข้อ จำกัด ทางกายภาพของเครื่อง? ใครจะตีสิ่งนี้ได้อย่างไร 640k เพียงพอสำหรับทุกคน!
David Richerby

4

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

μ

คลาสดังกล่าวรวมฟังก์ชั่นเหล่านั้นที่ "คำนวณได้โดยสังหรณ์ใจ" นั่นคือซึ่งการคำนวณสามารถทำได้โดยมนุษย์โดยใช้อัลกอริทึมที่แม่นยำด้วยดินสอและกระดาษ

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


0

เครื่องทัวริงสามารถคำนวณชุดฟังก์ชันเดียวกันกับคอมพิวเตอร์ควอนตัมสากลซึ่งสามารถจำลองระบบทางกายภาพใด ๆ :

https://www.cs.princeton.edu/courses/archive/fall04/cos576/papers/deutsch85.pdf

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

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