ทัวริงสมบูรณ์บอกว่าสิ่งหนึ่งและสิ่งเดียวเท่านั้น: รูปแบบของการคำนวณคือทัวริงสมบูรณ์หากการคำนวณใด ๆ ที่สามารถสร้างแบบจำลองโดยเครื่องทัวริงยังสามารถเป็นแบบจำลองโดยรูปแบบที่
ดังนั้นการคำนวณแบบจำลองของทัวริงจักรคืออะไร? อลันทัวริงและเพื่อนร่วมงานทุกคนสนใจฟังก์ชั่นตัวเลขธรรมชาติเป็นอย่างแรกและสำคัญที่สุด ดังนั้นเครื่องทัวริง (และλ-แคลคูลัส, แคลคูลัส SK combinator, ฟังก์ชั่นμ-recursive, ... ) พูดถึงความสามารถในการคำนวณของฟังก์ชันบนตัวเลขธรรมชาติเท่านั้น หากคุณไม่ได้พูดถึงฟังก์ชั่นเกี่ยวกับตัวเลขธรรมชาติแนวคิดของทัวริงสมบูรณ์ไม่แม้แต่จะสมเหตุสมผลก็ไม่สามารถใช้ได้
อย่างไรก็ตามโปรดทราบว่าเราสามารถเข้ารหัสสิ่งที่น่าสนใจมากมายเป็นจำนวนธรรมชาติ เราสามารถเข้ารหัสสตริงเป็นตัวเลขธรรมชาติเราสามารถเข้ารหัสกราฟเป็นตัวเลขธรรมชาติเราสามารถเข้ารหัส booleans เป็นตัวเลขธรรมชาติ เราสามารถเข้ารหัสเครื่องจักรทัวริงได้เป็นตัวเลขธรรมชาติซึ่งทำให้เราสามารถสร้างทัวริงจักรที่พูดถึงเครื่องจักรทัวริง
และแน่นอนว่าไม่ใช่ทุกฟังก์ชั่นของตัวเลขธรรมชาติที่คำนวณ เครื่องทัวริงสามารถคำนวณฟังก์ชั่นบางอย่างบนตัวเลขธรรมชาติเท่านั้นλ-แคลคูลัสสามารถคำนวณฟังก์ชันบางอย่างกับตัวเลขธรรมชาติได้แคลคูลัส SK combinator สามารถคำนวณฟังก์ชันบางอย่างบนตัวเลขธรรมชาติได้เท่านั้น น่าแปลกที่ (หรือไม่) ปรากฎว่าแบบจำลองการคำนวณทุกรูปแบบ (ที่จริง ๆ แล้วในจักรวาลทางกายภาพของเรา) สามารถคำนวณฟังก์ชันเดียวกันกับตัวเลขธรรมชาติ (อย่างน้อยสำหรับแบบจำลองทั้งหมดที่เราพบจนถึงปัจจุบัน) [หมายเหตุ: เห็นได้ชัดว่ามีรูปแบบการคำนวณที่อ่อนแอกว่าแต่เรายังไม่พบรุ่นที่แข็งแกร่งกว่ายกเว้นบางอย่างที่ไม่สอดคล้องกับจักรวาลทางกายภาพของเราเช่นแบบจำลองที่ใช้ตัวเลขจริงหรือการเดินทางข้ามเวลา]
ความจริงนี้ว่าหลังจากใช้เวลานานในการค้นหาแบบจำลองที่แตกต่างกันจำนวนมากเราพบว่าทุกครั้งที่พวกเขาสามารถคำนวณฟังก์ชั่นที่เหมือนกันได้อย่างแน่นอนเป็นพื้นฐานสำหรับวิทยานิพนธ์คริสตจักรทัวริงซึ่งกล่าวว่า แบบจำลองการคำนวณนั้นมีพลังเท่าเทียมกันและทุกคนก็จับความคิด "อุดมคติ" ของสิ่งที่มันหมายถึงการ "คำนวณ" (นอกจากนี้ยังมีแง่มุมที่สองที่มากกว่าด้านปรัชญาของ CTT นั่นคือมนุษย์ที่ติดตามอัลกอริธึมยังสามารถคำนวณฟังก์ชั่นเดียวกับที่ TM สามารถคำนวณได้และไม่มีอีกต่อไป)
อย่างไรก็ตามสิ่งนี้ไม่ได้พูดอะไรเกี่ยวกับ
- รุ่นต่างๆนั้นมีประสิทธิภาพเพียงใด
- วิธีที่สะดวกพวกเขาจะใช้
- สิ่งอื่น ๆ ที่พวกเขาสามารถทำนอกเหนือจากฟังก์ชั่นการประมวลผลในจำนวนธรรมชาติ
และนั่นคือจุดที่ความแตกต่างระหว่างโมเดลการคำนวณ (และภาษาการเขียนโปรแกรม) ที่แตกต่างกันเข้ามาเล่น
O(sizearray)O(size2array)sizearraysizearray
เป็นตัวอย่างเพื่อความสะดวกที่แตกต่างกันคุณสามารถเปรียบเทียบโค้ดที่เขียนในภาษาระดับสูงมากโค้ดที่เขียนในชุดประกอบและคำอธิบายของ TM สำหรับการแก้ปัญหาเดียวกัน
และสวิตช์ไฟของคุณเป็นตัวอย่างของความแตกต่างประเภทที่สามสิ่งต่าง ๆ ที่บางรุ่นสามารถทำได้นั้นไม่ใช่ฟังก์ชั่นในจำนวนที่เป็นธรรมชาติดังนั้นจึงไม่มีอะไรเกี่ยวข้องกับทัวริงสมบูรณ์
ในการตอบคำถามเฉพาะของคุณ:
แต่สามารถใด ๆโปรแกรมที่เขียนในภาษาทัวริงสมบูรณ์นำมาเขียนใหม่อีก?
ไม่เฉพาะเมื่อโปรแกรมคำนวณฟังก์ชั่นที่คำนวณได้ของทัวริงกับตัวเลขธรรมชาติ และถึงตอนนั้นอาจต้องมีการเข้ารหัสที่ซับซ้อน ตัวอย่างเช่น calcul-แคลคูลัสไม่ได้มีจำนวนธรรมชาติพวกเขาจำเป็นต้องเข้ารหัสโดยใช้ฟังก์ชั่น (เพราะฟังก์ชั่นเป็นสิ่งเดียวที่ calcul-แคลคูลัสมี)
การเข้ารหัสอินพุทและเอาท์พุทนี้มีความซับซ้อนมากซึ่งสามารถแสดงอัลกอริทึมได้ ดังนั้นในขณะที่เป็นความจริงที่ว่าโปรแกรมใด ๆ ที่สามารถเขียนใหม่ได้โปรแกรมที่เขียนใหม่อาจมีความซับซ้อนมากขึ้นใหญ่กว่ามากใช้หน่วยความจำมากขึ้นและช้าลงมาก
เกิดอะไรขึ้นถ้าสมัชชาของฉันมี opcode LIGHTBUTTON? ฉันไม่สามารถเลียนแบบภาษานั้นในระบบ (ภาษา) โดยไม่ใช้หลอดไฟ
หลอดไฟไม่ใช่ฟังก์ชันคำนวณแบบทัวริงกับจำนวนธรรมชาติ หลอดไฟไม่ใช่ฟังก์ชั่นหรือการคำนวณ การเปิดและปิดหลอดไฟเป็นผลข้างเคียงของ I / O เครื่องจักรทัวริงไม่ทำโมเดล I / O ผลข้างเคียงและทัวริงสมบูรณ์ไม่เกี่ยวข้องกับพวกเขา
เมื่อตัวเลขจริงโดยพลการ
ทัวริงสมบูรณ์เกี่ยวข้องเฉพาะกับฟังก์ชั่นคำนวณตัวเลขธรรมชาติมันไม่ได้เกี่ยวข้องกับตัวเลขจริง
ทัวริงสมบูรณ์ไม่น่าสนใจมากเมื่อมันมาถึงคำถามเช่นคุณด้วยเหตุผลสองประการ:
- มันไม่ได้เป็นอุปสรรค์ที่สูงมาก ทั้งหมดที่คุณต้อง
IF
, GOTO
, WHILE
และตัวแปรจำนวนเต็มเดียว (สมมติตัวแปรสามารถถือจำนวนเต็มขนาดใหญ่โดยพล) หรือการเรียกซ้ำ มีหลายสิ่งหลายอย่างที่ทัวริงสมบูรณ์ การ์ดเกมเวทย์มนตร์: การรวบรวมทัวริงเสร็จสมบูรณ์ CSS3 เสร็จสมบูรณ์แล้ว sendmail
แฟ้มการกำหนดค่าเป็นทัวริงสมบูรณ์ Intel x86 MMU นั้นได้รับการพัฒนาอย่างสมบูรณ์ MOV
คำสั่งIntel x86 นั้นเสร็จสมบูรณ์แล้ว ภาพเคลื่อนไหว PowerPoint นั้นสมบูรณ์แบบทัวริง Excel (ไม่มีสคริปต์ใช้เฉพาะสูตร) เท่านั้นทัวริงสมบูรณ์ โปรโตคอลการกำหนดเส้นทาง BGP นั้นเสร็จสมบูรณ์แล้ว sed
ทัวริงเสร็จสมบูรณ์ mod_rewrite
กฎApache เป็นทัวริงที่สมบูรณ์ Google สำหรับ " (โดยบังเอิญหรือน่าประหลาดใจ) ทำให้สมบูรณ์"เพื่อค้นหาตัวอย่างที่น่าสนใจอื่น ๆ หากเกือบทุกอย่างเป็นทัวริงสมบูรณ์การทัวริงสมบูรณ์หยุดเป็นคุณสมบัติที่น่าสนใจ
- ไม่จำเป็นต้องมีประโยชน์ สิ่งที่มีประโยชน์มากมายไม่สมบูรณ์ทัวริง CSS ก่อน 3 รุ่นไม่ทัวริงสมบูรณ์ (และความจริงที่ว่า CSS3 คือไม่ได้ใช้จริงโดยทุกคน) SQL ก่อนปี 1999 ยังไม่เสร็จสมบูรณ์ แต่ก็มีประโยชน์อย่างมาก ภาษา C Programming โดยไม่ต้องห้องสมุดเพิ่มเติมดูเหมือนจะไม่เป็นทัวริงสมบูรณ์ ภาษาที่พิมพ์ขึ้นอยู่กับความหมายมากหรือน้อยตามคำนิยามไม่ใช่ทัวริงที่สมบูรณ์ แต่คุณสามารถเขียนระบบปฏิบัติการเว็บเซิร์ฟเวอร์และเกมในภาษาเหล่านั้นได้
Edwin Brady ผู้เขียน Idris ใช้คำว่า "Tetris-complete" เพื่อพูดคุยเกี่ยวกับบางแง่มุมเหล่านี้ การเป็นเกมเตตริสเสร็จสมบูรณ์นั้นไม่ได้มีการกำหนดอย่างเข้มงวด (นอกเหนือจาก "สามารถใช้ในการติดตั้งเกมเตทริส" ได้อย่างชัดเจน) แต่มันครอบคลุมสิ่งต่าง ๆ เช่นการอยู่ในระดับสูงพอและชัดเจนพอที่จะเขียนเกมได้โดยไม่ต้องบ้า โต้ตอบกับโลกภายนอก (อินพุทและเอาท์พุท) ความสามารถในการแสดงผลข้างเคียงความสามารถในการเขียนเหตุการณ์วนรอบสามารถแสดงปฏิกิริยาโต้ตอบแบบอะซิงโครนัสและการเขียนโปรแกรมพร้อมกันสามารถโต้ตอบกับระบบปฏิบัติการได้ เพื่อโต้ตอบกับห้องสมุดต่างประเทศ (ในคำอื่น ๆ : ความสามารถในการโทรและถูกเรียกด้วยรหัส C) และอื่น ๆ สิ่งเหล่านี้เป็นคุณสมบัติที่น่าสนใจของภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปมากกว่าทัวริง
คุณอาจพบคำตอบของฉันสำหรับคำถามที่คุณเชื่อมโยงที่น่าสนใจซึ่งสัมผัสกับบางประเด็นเดียวกันแม้ว่ามันจะตอบคำถามอื่น