มีคำจำกัดความที่ชัดเจนของ“ คำนวณได้” สำหรับแบบจำลองการคำนวณที่ไม่ได้ทำให้เสร็จสมบูรณ์หรือไม่?


9

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

นิยามทั่วไปของทัวริงที่คำนวณได้มีดังนี้:

คำจำกัดความ 1: ฟังก์ชั่น f:NkNเรียกว่าทัวริงคำนวณ iff มีเครื่องทัวริงM ซึ่งคำนวณ fใช้การเข้ารหัสที่เหมาะสมของตัวเลขธรรมชาติเป็นสตริง

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

ตอนนี้ถ้าเราดูรูปแบบการคำนวณที่อ่อนแอกว่าเครื่องทัวริงล่ะ ตัวอย่างเช่นลองพิจารณาชุดMc ของเครื่องจักรทัวริง "พิการ" ด้วยตัวอักษร {0,1}ซึ่งอาจย้ายไปทางขวาเท่านั้นและคำจำกัดความของการคำนวณทัวริงพิการซึ่งสอดคล้องกับที่คำนวณทัวริง:

คำจำกัดความ 2: ฟังก์ชั่น f:NkNเรียกว่าทัวริงทัวริงคำนวณหรือคำนวณในMc ถ้ามีเครื่องทัวริงพิการ M ซึ่งคำนวณ f ใช้การเข้ารหัสที่เหมาะสมของตัวเลขธรรมชาติเป็นสตริง

หากเรากำหนด "การเข้ารหัสที่เหมาะสม" เป็น "การเข้ารหัสแบบไบนารี" หมายถึงฟังก์ชันนั้น f:NN,nn+1คือไม่ได้คำนวณในMc. ถ้าเรา axiomatize "การเข้ารหัสที่เหมาะสม" เป็น "การเข้ารหัส unary" แล้วf คือในการคำนวณMc. เรื่องนี้ดูน่าอึดอัดใจเนื่องจากข้อเท็จจริงที่ว่าทุกคนอาจแก้ไขหนึ่งในการเข้ารหัสที่ใช้งานง่ายอย่างไม่มีที่สิ้นสุด ควรมีความชัดเจนหากแบบจำลองการคำนวณสามารถคำนวณได้f หรือไม่โดยไม่อ้างถึงการเข้ารหัสเฉพาะบางอย่าง - อย่างน้อยฉันไม่เคยเห็นใครพูดถึงการเข้ารหัสที่ใช้เมื่อระบุว่า "โปรแกรมลูปอ่อนกว่าเครื่องทัวริง"


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

แก้ไข: ฉันย่อคำนำมันไม่ได้เพิ่มคำถาม

คำตอบ:


6

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

การคำนวณเป็นคุณสมบัติหลักของฟังก์ชันสตริง f:ΣΣ. เมื่อคุณกำหนดความสามารถในการคำนวณในโดเมนอื่นคุณต้องแก้ไขการเข้ารหัส ในทางปฏิบัติการเข้ารหัส "ที่สมเหตุสมผล" ทั้งหมดนั้นเทียบเท่าในความหมายของวรรคก่อนดังนั้นการเข้ารหัสที่แน่นอนไม่สำคัญ

อย่างไรก็ตามการเข้ารหัสนั้นมีความสำคัญในการคำนวณแบบ จำกัด ในการเป็นตัวอย่างที่ยอดเยี่ยมสมมติว่าคุณพิจารณาเครื่องทัวริงที่ จำกัด เวลา: กล่าวว่าคุณต้องการให้เครื่องของคุณสิ้นสุดในเวลาO(nc) สำหรับบางคน cที่ไหน nคือความยาวของอินพุต (เป็นสตริง) เราไม่สามารถสลับระหว่างการเข้ารหัสแบบไบนารี่และการเข้ารหัสแบบเอกนารีได้อีกต่อไปเพราะการเข้ารหัสแบบไบนารี่นั้นมีขนาดกะทัดรัดกว่ามาก เมื่อเราพูดถึงฟังก์ชั่นคำนวณจำนวนพหุนามของจำนวนเต็มเราจะระบุว่าจำนวนเต็มนั้นถูกเข้ารหัสในรูปแบบไบนารี่ แม้นี่จะเป็นตัวเลือกที่ไม่มีกฎเกณฑ์เนื่องจากการเข้ารหัสทศนิยมจะนำไปสู่ความคิดเรื่องการคำนวณเวลาแบบพหุนามเดียวกัน

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


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

1
คนหนึ่งดึงคำจำกัดความนี้ออกมาจากหมวก เนื่องจากคำจำกัดความที่แตกต่างกันมีแนวโน้มที่จะเทียบเท่าคำจำกัดความที่แน่นอนจึงไม่สำคัญ เมื่อไหร่จะมีความซับซ้อนหลายอย่างที่แตกต่างกัน ตัวอย่างเช่นสำหรับอัลกอริทึมกราฟบางอย่างมันสร้างความแตกต่างถ้าคุณได้รับเมทริกซ์ adjacency หรือรายการของขอบ
Yuval Filmus

ดังนั้นเพื่อสรุป: ก) คำจำกัดความของแต่ละรูปแบบการคำนวณเดียวจะต้องรวมถึงไวยากรณ์ความหมายและการเข้ารหัสที่เหมาะสม b) คำจำกัดความของ "การเข้ารหัสที่เหมาะสม" นั้นไม่ขึ้นอยู่กับไวยากรณ์และความหมายของแบบจำลอง c) ไม่มีวิธีใดที่จะให้คำจำกัดความของ "การเข้ารหัสที่เหมาะสม" ซึ่งใช้ได้สำหรับการคำนวณทุกรุ่น ถูกต้องไหม
Stefan Lutz

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

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

4

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

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

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

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


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

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

1
ถ้าอย่างนั้นฉันก็ไม่เห็นว่าเราสามารถพิสูจน์แคลคูลัสแลมบ์ดาที่สมบูรณ์แบบด้วยเลขคริสตจักรได้อย่างไรถ้าเราซ่อมเครื่องทัวริง เราต้องสมมติว่า LC นั้นอ่อนแอกว่า TM ดังนั้นบางตัวอย่างของแลมบ์ดาโมเดลที่ "อ่อนแอ" จะได้รับตัวเลขnN โดยใช้การเข้ารหัส church:Nlambdaterm เช่น church(n)จากนั้นคำนวณฟังก์ชันของมัน toBinary:lambdatermlambdaterm ซึ่งส่งออกเป็นสตริงไบนารี wΣ? โคโดเมนไม่ตรงกัน แม้ว่าฉันจะอนุญาตให้ตีความ lambdaterms เป็นสายมีรุ่นอื่น ๆ ที่ไม่ "พูด" สตริงตามที่คุณระบุไว้
Stefan Lutz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.