อัลกอริทึมเพื่อกำหนดความเท่าเทียมกันของฟังก์ชั่นในแคลคูลัสแลมบ์ดาที่พิมพ์หรือไม่


10

เรารู้ว่าแลมบ์ดาที่พิมพ์ด้วยความเท่าเทียมกันนั้นสามารถตัดสินได้ เมื่อให้ M, N: σ→τมันจะตัดสินใจได้หรือไม่ว่าจะเป็น X: σ, MXหรือไม่β


เพียงพิมพ์แลมบ์ดาแคลคูลัส / STLCวิกิพีเดีย เนื่องจากยังไม่ครบทัวริงมีการคำนวณพื้นฐานอื่น ๆ ที่เทียบเท่ากับ? นอกจากนี้ยังอาจเป็นประโยชน์ในการศึกษาอัลกอริธึมการตรวจจับการหยุดทำงานซึ่ง ACC กับวิกิพีเดียสามารถนำไปใช้กับ STLC ...
vzn

3
@Marzio: จริง ๆ แล้วฉันคิดว่าปัญหาอยู่ที่นี่ด้วยวิธีการตั้งคำถามซึ่งค่อนข้างไม่แน่ชัด เมื่อจัดทำอย่างเหมาะสมแล้วนี่เป็นคำถามระดับการวิจัย สูตรที่ดีกว่าคือ: เรารู้ว่าเบต้า - ความเท่าเทียมกันของคำแลมบ์ดาที่พิมพ์ได้นั้นสามารถตัดสินใจได้ รับM,N:στ , มันสามารถตัดสินใจได้หรือไม่ว่าX:σ , MXβNXหรือไม่ คำตอบนั้นเป็นค่าลบโดยทั่วไป (ดังนั้นจึงไม่มีอัลกอริธึมเช่นที่ Viclib ค้นหาอยู่) แม้ว่าอาจจะคาดว่าจะได้ แต่ก็ไม่ชัดเจนนักและเป็นผลมาจากเอกสารสองสามฉบับจากยุค 90
Damiano Mazza

@DamianoMazza: ตกลงแน่นอนฉันไม่ได้ลงคะแนนให้ปิด ... ฉันจะลบความคิดเห็นของฉันออกจากคุณและรอความคิดเห็น / แก้ไขของ OP
Marzio De Biasi

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

1
@Viclib: ความเท่าเทียมเบต้าเป็นความคิดทางเทคนิคฉันหลีกเลี่ยงการกล่าวถึงในคำตอบของฉัน ประมาณสองคำนั้นเทียบเท่ากับเบต้าเมื่อพวกเขาให้ผลลัพธ์เดียวกัน ดังนั้นการพูดว่าสำหรับทั้งหมดหมายความว่าและคำนวณฟังก์ชันเดียวกัน พอยน์เตอร์ที่เกี่ยวข้องกับการเรียนรู้เกี่ยวกับแลมบ์ดาแคลคูลัส (พิมพ์หรือไม่พิมพ์) ฉันคิดว่าบันทึกของ Peter SelingerและSørensenและ Urzyczyn บรรยายเกี่ยวกับ Curry-Howardเป็นสถานที่เริ่มต้นที่ดีเยี่ยม MXβNXXMN
Damiano Mazza

คำตอบ:


13

อย่างที่ฉันพูดในความคิดเห็นคำตอบโดยทั่วไปคือไม่

จุดสำคัญที่จะเข้าใจ (ฉันพูดแบบนี้สำหรับ Viclib ที่ดูเหมือนว่าจะเรียนรู้เกี่ยวกับสิ่งเหล่านี้) คือการมีภาษาโปรแกรม / ชุดของเครื่องจักรที่โปรแกรม / การคำนวณทั้งหมดสิ้นสุดลงโดยไม่มีความหมายว่าฟังก์ชั่นนั้นเท่าเทียมกันหรือไม่ โปรแกรม / เครื่องคำนวณฟังก์ชั่นเดียวกัน) สามารถถอดรหัสได้ ตัวอย่างง่ายๆ: นำชุดของทัวริงนาฬิกาที่มีสัญญาณเชิงพหุนาม ตามคำนิยามเครื่องดังกล่าวทั้งหมดจะสิ้นสุดในอินพุตทั้งหมด ทีนี้เมื่อได้รับเครื่องจักรทัวริงใดก็ตามมีเครื่องทัวริงที่กำหนดในการป้อนสตริง , จำลองขั้นตอนของการคำนวณในอินพุตคงที่ (พูดสตริงว่าง) และยอมรับว่าสิ้นสุดในที่สุดMM0x|x|MM|x|ขั้นตอนหรือปฏิเสธอย่างอื่น ถ้าเป็นเครื่องทัวริงที่ปฏิเสธทันทีและเป็นทั้งแบบ polynomially-clocked แต่ถ้าเราสามารถตัดสินใจได้ว่าและคำนวณฟังก์ชั่นเดียวกัน (หรือในกรณีนี้ให้เลือกภาษาเดียวกัน) เราจะสามารถตัดสินใจได้ว่า (ซึ่งจำได้ว่าเป็นเครื่องทัวริงโดยพลการ) ยุติในสตริงที่ว่างเปล่าNM0NM0NM

ในกรณีของ -calculus (STLC) ที่พิมพ์ง่ายๆ อาร์กิวเมนต์ที่คล้ายกันทำงานยกเว้นว่าการวัดพลังการแสดงออกของ STLC นั้นไม่สำคัญเหมือนในกรณีข้างต้น เมื่อฉันเขียนความคิดเห็นของฉันฉันมีสองกระดาษโดย Hillebrand, Kanellakis และ Mairson จากต้น 90s ซึ่งแสดงให้เห็นว่าโดยใช้ประเภทที่ซับซ้อนกว่าจำนวนเต็มปกติของโบสถ์หนึ่งอาจเข้ารหัสใน STLC ที่ซับซ้อนเพียงพอ การคำนวณเพื่อให้อาร์กิวเมนต์ด้านบนทำงานได้ ที่จริงแล้วฉันเห็นแล้วว่าวัสดุที่จำเป็นอยู่ในบทพิสูจน์ของทฤษฎีของ Statman ที่เรียบง่ายของ Mairson:λ

Harry G. Mairson หลักฐานพิสูจน์ทฤษฎีบทของ Statman ทฤษฎีวิทยาการคอมพิวเตอร์ 103 (2): 387-394, 1992 (มีออนไลน์ที่นี่ )

ในกระดาษที่แสดงให้เห็น Mairson ที่ใดก็ตามทัวริงเครื่องมีเป็นชนิดที่ง่ายและระยะเข้ารหัสฟังก์ชั่นการเปลี่ยนแปลงของM(นี่ไม่ชัดเจนว่าเป็นนิรนัยหากมีในใจพลังการแสดงออกที่แย่มากของ STLC ในจำนวนเต็มของคริสตจักรแน่นอนการเข้ารหัสของ Mairson ไม่ได้เกิดขึ้นทันที) จากนี้มันไม่ยากที่จะสร้างคำMσλδM:σσM

tM:nat[σ]bool

(โดยที่คือการสร้างอินสแตนซ์บนของจำนวนเต็มของคริสตจักร) เช่นนั้นจะลดลงเป็นถ้าสิ้นสุดในขั้นตอนที่สุดป้อนสตริงว่างหรือลดเป็นอย่างอื่น ดังกล่าวข้างต้นถ้าเราสามารถตัดสินใจได้ว่าฟังก์ชั่นที่แสดงโดยเป็นฟังก์ชั่นคงที่เราจะได้ตัดสินใจเลิกในสตริงว่างnat[σ]σtMn_1_Mn0_tM0_M


มันอาจเป็นไปได้ที่จะใช้การเข้ารหัสของฟังก์ชั่นพหุนามหลายตัวแปรใน STLCแล้วอุทธรณ์ไปยังทฤษฎีบท Matiyasevich ของ
ดี้

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

2
@Viclib: ลองคิดดูสิ: การจำลองหนึ่งขั้นตอนของเครื่องจักรทัวริงโดยพลการนั้นไม่ต้องการพลังการคำนวณมากนัก โดยพื้นฐานแล้วคุณต้องการเพียงประเภทข้อมูลที่ จำกัด (กับ if-then-else), รายการ (ด้วยการดำเนินการขั้นพื้นฐาน: ข้อเสียหางและอื่น ๆ ) และคู่ที่ได้รับคำสั่ง (อันที่จริง, วิทยานิพนธ์ทัวริสต์โบสถ์ทัวริสต์ขยายตัวอ้างว่าความซับซ้อนต่ำดังกล่าวเป็นเรื่องธรรมดาสำหรับเครื่องทุกรุ่นที่เหมาะสม) สิ่งที่ STLC หายไปคือความสามารถในการรันการเปลี่ยน TM "ad libitum" ซึ่งเป็นอิสระจากอินพุต: สามารถซ้ำได้หลายครั้งเท่ากับหอคอยแห่งเลขชี้กำลังในขนาดอินพุต (ดูกระดาษของ Mairson)
Damiano Mazza

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