เป็นไปได้ไหมที่จะพิสูจน์ว่าฟังก์ชันนั้นเป็น idempotent หรือไม่?


12

เป็นไปได้ที่จะใช้ประเภทคงที่หรือขึ้นอยู่กับการพิสูจน์ฟังก์ชั่น idempotent?

ฉันค้นหา Google และสถานที่ต่าง ๆ บน StackOverflow / StackExchange เพื่อหาคำตอบอย่างไม่มีโชค สิ่งที่ฉันพบมากที่สุดคือการสนทนาเกี่ยวกับ Idris: https://groups.google.com/forum/#!topic/idris-lang/yp7vrspChRg

น่าเสียดายที่การอภิปรายนั้นอยู่เหนือหัวฉันเล็กน้อย


3
ฉันไม่ได้โพสต์นี้เป็นคำตอบเพราะฉันไม่แน่ใจ 100% แต่ผมเชื่อว่านี่เป็นเพราะเป็นไปไม่ได้ข้าวทฤษฎีบท
Gardenhead

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

2
ทฤษฎีของ @gardenhead Rice ระบุว่าคุณสมบัติใด ๆ ที่พฤติกรรมของโปรแกรมอาจมีบางครั้งเป็นไปไม่ได้ที่จะตัดสินว่าโปรแกรมนั้นมีคุณสมบัตินั้นหรือไม่ มีความแตกต่างใหญ่ระหว่าง "สิ่งนี้เป็นไปไม่ได้" และ "สิ่งนี้เป็นไปไม่ได้"
แทนเนอร์ Swett

2
ความคิดเห็นล่าสุดของฉันค่อนข้างคลุมเครือ ไม่ว่าในกรณีใดก็ตามนี่คือสิ่งที่ทฤษฎีบทของไรซ์กล่าวไว้: ไม่มีอัลกอริทึมที่จำแนกประเภทการทำงานทั้งหมดอย่างถูกต้องว่าเป็น idempotent หรือไม่ใช้ idempotent อย่างไรก็ตามยังมีอัลกอริธึมที่มีประโยชน์ซึ่งจำแนกฟังก์ชั่นบางอย่างว่าเป็น idempotent หรือไม่
แทนเนอร์ Swett

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

คำตอบ:


3

สำหรับฟังก์ชั่นบางอย่างมันเป็น โดยเฉพาะอย่างยิ่งเมื่อคุณรู้ว่าฟังก์ชั่น ;-)

หากคุณหมายถึงคำถามของคุณ "มีอัลกอริทึมในการตัดสินใจโดยอัตโนมัติหรือไม่ว่าฟังก์ชันใด ๆ เป็น idempotent หรือไม่" คำตอบคือไม่เนื่องจากทฤษฎีบทที่กล่าวถึงในความคิดเห็น อย่างไรก็ตามสำหรับคลาสของฟังก์ชั่นที่เฉพาะเจาะจงหนึ่งในทฤษฎีสามารถตัดสินใจได้ง่ายมากว่าฟังก์ชั่น idempotent หรือไม่ ตัวอย่างเช่นถ้าฟังก์ชันนี้จะบริสุทธิ์ (หมายถึง: โดยไม่มีผลข้างเคียงใด ๆ ) และรู้ว่ามันเสมอกลับค่าในจำนวน จำกัด ของเวลาสำหรับการป้อนข้อมูลใด ๆ ที่กำหนดแล้ว Idempotency สามารถตัดสินใจได้ง่ายๆโดยการพยายามออกถ้าf(f(x))=f(x)สำหรับการป้อนข้อมูลที่เป็นไปได้ใด ๆxเพื่อฟังก์ชั่น ไม่ใช่ว่ามันจะมีประสิทธิภาพมากมันสามารถวิ่งไปจนถึงจุดสิ้นสุดของจักรวาล

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


ขอบคุณสำหรับคำตอบ. ความสามารถในการ "ตัดสินใจอัตโนมัติ" เป็นสิ่งที่ฉันกำลังมองหา
bmaddy

2
ในการขยายคำสั่ง'สำหรับฟังก์ชั่นบางอย่างมันคือ' : Idempotency สามารถพิสูจน์ได้สำหรับฟังก์ชั่นที่ยอมรับอินพุตที่ จำกัด เท่านั้น (โดยทดลองใช้ทั้งหมด) หรือประเภทอินพุตที่กำหนดแบบเรียกซ้ำ ตัวเลขหรือรายการที่เชื่อมโยง) ซึ่งหมายความว่าคุณจะต้องพิสูจน์ว่า idempotency นั้นเป็นจริงสำหรับเคสหลัก (s) และเคสที่เรียกซ้ำ (es)
Qqwy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.