การพูดว่าอัลกอริทึมคือ Sound and Complete หมายความว่าอย่างไร


33

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

การพูดว่าอัลกอริทึมคือ Sound and Complete หมายความว่าอย่างไร


ฉันขอแนะนำให้คุณประเมินสิ่งที่คุณตอบว่าเป็นคำตอบที่ผิด
BlackJack

เพิ่งทำอย่างนั้น :)
mutelogan

คำตอบ:


49

เป็นคำศัพท์เฉพาะที่เกี่ยวข้องกับตรรกะ

นี่คือจุดเริ่มต้นบางส่วน:

http://en.wikipedia.org/wiki/Soundness

http://en.wikipedia.org/wiki/Completeness_(logic)

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

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

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


ขอบคุณ ผมสับสนมากเกี่ยวกับสิ่งที่มั่นคงหมายถึง ฉันได้รับคำตอบหลายครั้ง
mutelogan

มีความสุขถ้ามันช่วย ... :)
Erik Dietrich

13
ตัวอย่างจะเป็นการค้นหาแบบ Binary เสียง แต่ไม่สมบูรณ์ ไม่สามารถทำงานกับรายการที่ไม่เรียงลำดับได้
Malfist

3
@ มัลลิสต์ แต่ไม่ได้เรียงรายการ 'โลกของโปรแกรม' ใช่หรือไม่
Andres

1
“ อัลกอริธึมทำงานผิดพลาดกับอินพุตที่ไม่ถูกต้อง” ไม่ส่งผลกระทบต่อความสมบูรณ์หรือความสมบูรณ์ดังนั้นทั้งการค้นหาแบบไบนารี่และการเปรียบเทียบจึงไม่เกี่ยวข้องกัน - อัลกอริธึมทั้งสองนั้นสมบูรณ์และสมบูรณ์
Blaisorblade

15

ฉันพบว่าคำตอบของ Erik Dietrich ช่างน่าเบื่อ ต่อไปนี้จะดีกว่า:

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

สองจุดสำคัญ:

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

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


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

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

1
“ คำตอบนั้นถูกต้องถ้ามันถูกส่งคืน” หมายถึงตัวอักษรเดียวกันกับ“ ถ้าคำตอบนั้นส่งคืนมันจะเป็นจริง” นอกจากนี้คำตอบไม่สามารถ "จริง" ถูกต้องเท่านั้น softwareengineering.stackexchange.com/a/311649/21277ถูกต้องมากขึ้น
Blaisorblade

2

คำเหล่านี้มาจากทฤษฎีการคำนวณดังนั้นจึงมีความหมายในบริบทของทฤษฎีการคำนวณมากกว่าในบริบทของวิศวกรรมซอฟต์แวร์

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

boolean some_function(string argument){...}

เราเรียกฟังก์ชันนี้ว่าสมบูรณ์ถ้ามันคืนค่าจริงสำหรับทุก ๆ อาร์กิวเมนต์ที่เป็นสมาชิกของภาษา เราเรียกว่าเสียงถ้ามันคืนค่าเท็จสำหรับทุกอาร์กิวเมนต์ที่ไม่ใช่สมาชิกของภาษา

กล่าวอีกนัยหนึ่งก็คือมันเสร็จสมบูรณ์หากมันจะคืนค่าเป็นจริงเสมอเมื่อเราต้องการให้มันกลับมาจริงและเสียงถ้ามันกลับเท็จเมื่อเราต้องการที่จะกลับเท็จ

สิ่งนี้แปลไปยังฟังก์ชั่นประเภทอื่น ๆ ได้อย่างไร? เมื่อปรากฎว่ามันเป็นไปได้ที่จะบรรจุข้อมูลจำนวนหนึ่งเข้าไปในสตริงและสร้างมันใหม่ภายในฟังก์ชั่น ดังนั้นข้อ จำกัด เกี่ยวกับประเภทอาร์กิวเมนต์และ arity จึงไม่มีอะไรมากไปกว่าการลดความซับซ้อนทางทฤษฎี อย่างไรก็ตามข้อ จำกัด ของประเภทส่งคืนมีความสำคัญมากกว่า ปัญหาที่เรียกร้องให้ผลบูลจะเรียกว่าการตัดสินใจแก้ปัญหา ทฤษฎีการคำนวณจำนวนมากเกี่ยวข้องกับปัญหาการตัดสินใจ ชุด P และ NP ถูก จำกัด เฉพาะปัญหาการตัดสินใจ (และอย่างน้อยก็ไม่สามารถกำหนดได้อย่างสมเหตุสมผลโดยไม่มีข้อ จำกัด นี้) ปัญหาการหยุดชะงักเป็นอีกตัวอย่างหนึ่งของปัญหาการตัดสินใจอย่างหนัก

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


-2

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

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

ป้อนคำอธิบายรูปภาพที่นี่

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