อัลกอริทึมการแก้ไขตัวเองทุกรูปแบบสามารถทำได้โดยอัลกอริทึมที่ไม่สามารถแก้ไขตัวเองได้หรือไม่?


12

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


แก้ไข:

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

คำตอบ:


29

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

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


11
คุณไม่จำเป็นต้องใช้ล่ามสมมุติ ซีพียูที่ใช้อัลกอริธึมการแก้ไขตัวเองของคุณเองนั้นเป็นเครื่องที่ประมวลผลอัลกอริธึมแบบคงที่ (ซึ่งบอกวิธีการประมวลผลคำสั่ง)
Alexander - Reinstate Monica

1
@AlexanderMomchliov มีซีพียูที่สามารถแก้ไขส่วนต่าง ๆ ของชุดคำสั่งได้ทันที (แต่ใช่ความคิดเหมือนกัน - ส่วนที่โปรแกรมได้คือข้อมูลไมโครคอนโทรลเลอร์ที่ทำงานเป็นล่าม - แม้ว่าจะชี้ไปที่ไมโครคอนโทรลเลอร์ภายในเซลล์ FPGA อาจจะยุ่งยาก)
John Dvorak

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

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

10

โมเดลการคำนวณแบบทัวริงที่สมบูรณ์ซึ่งไม่มีการแก้ไขโค้ด (หรือ "รหัส") ทำหน้าที่เป็นข้อพิสูจน์ของคำสั่งนั้น ผมไม่ทราบว่าที่ใด ๆ ของรุ่นมาตรฐาน (TM, RAM, ... ) ไม่ได้ปรับเปลี่ยนรหัสเพื่อให้เราไม่ต้องมองไกลเกินไป

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


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


4

วิธีเพิ่มคำตอบของ David Richerby :

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

ดังที่ฉันได้กล่าวถึงในความคิดเห็นของฉันอัลกอริทึมการปรับเปลี่ยนด้วยตนเองสามารถดำเนินการในโปรเซสเซอร์ที่ปฏิบัติตามกฎของอัลกอริทึมแบบคงที่ (เข้ารหัสในการออกแบบ) ซึ่ง "บอก" วิธีการดำเนินการตามคำสั่งเครื่อง


1
ฉันคิดว่านั่นอาจเป็นเส้นแบ่งที่น่าสนใจ ฉันคิดว่าใคร ๆ ก็สามารถแย้งได้ว่า "ชีวิต" เป็นอัลกอฮอล์ที่ดัดแปลงตัวเองซึ่งไม่สามารถจำลองได้ด้วยอัลกอริธึมที่ไม่สามารถแก้ไขตัวเองได้ แต่จากนั้นอีกครั้ง "ชีวิต" โดยทั่วไปแล้ว
Cort Ammon

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

@ruakh ถ้าฉันจะเถียงว่าชีวิตเป็นอัลกอริธึมการแก้ไขตัวเองอินพุตจะเป็นของตัวเองและผลลัพธ์ของมันจะเป็นของตัวเอง การพิสูจน์ว่ามันไม่สามารถลดลงไปเป็นอัลกอริทึมที่ไม่สามารถแก้ไขตัวเองได้จะยากกว่า แต่ฉันคิดว่ามันเป็นสมมติฐานที่ได้รับความนิยม ท้ายที่สุดมีกี่คนที่ต้องการเชื่อว่าพวกเขาสามารถลดลงเป็นอัลกอริทึมที่สามารถทำงานบนคอมพิวเตอร์ได้?
Cort Ammon

1
@CortAmmon: ฉันไม่สามารถลดเป็นอัลกอริทึมที่ทำงานบนคอมพิวเตอร์ได้เนื่องจากอัลกอริทึมนั้นไม่ได้เป็น "ฉัน" อีกต่อไป ฉันเป็นมากกว่าอินพุตและเอาต์พุตของฉัน แต่ถ้าเราเริ่มจากสมมติฐานที่ว่าฉันเป็นแค่อัลกอริธึมดังนั้นการจัดการกับ "ที่สามารถทำงานบนคอมพิวเตอร์" ไม่ได้เปลี่ยนแปลงอะไรเลย Re: "ถ้าฉันจะเถียงว่าชีวิตเป็นอัลกอริธึมการแก้ไขตัวเองปัจจัยการผลิตจะเป็นของตัวเองและผลลัพธ์ของมันจะเป็นของตัวเอง": ในกรณีนี้ฉันคิดว่าคุณจะออกไปข้างนอก CS อย่างดี
ruakh

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