กลับไปหน้าบทความ

อ่าน 2 นาที

ความถูกต้อง (วิทยาการคอมพิวเตอร์)

ใน วิทยาการคอมพิวเตอร์เชิงทฤษฎี อั ลกอริทึม จะ ถูกต้อง ตาม ข้อกำหนด หากมีพฤติกรรมตามที่ระบุไว้ ความถูกต้อง เชิงฟังก์ชันได้ รับการสำรวจอย่างดีที่สุด...

ความถูกต้อง (วิทยาการคอมพิวเตอร์)

ในวิทยาการคอมพิวเตอร์เชิงทฤษฎีอัลกอริทึมจะถูกต้องตามข้อกำหนดหากมีพฤติกรรมตามที่ระบุไว้ ความถูกต้อง เชิงฟังก์ชันได้ รับการสำรวจอย่างดีที่สุด ซึ่งหมายถึงพฤติกรรมอินพุต-เอาต์พุตของอัลกอริทึม: สำหรับอินพุตแต่ละรายการ จะสร้างเอาต์พุตที่ตรงตามข้อกำหนด[ 1 ]

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

โปรแกรม ภาษาซีที่เขียนขึ้นบางส่วนเพื่อค้นหาจำนวนสมบูรณ์คี่ที่น้อยที่สุดความถูกต้องสมบูรณ์ของโปรแกรมยังไม่เป็นที่ทราบแน่ชัด ณ ปี 2023
// คืนค่าผลรวมของตัวหารแท้ของ n static int divisorSum ( int n ) { int i , sum = 0 ; for ( i = 1 ; i < n ; ++ i ) if ( n % i == 0 ) sum += i ; return sum ; } // คืนค่าจำนวนคี่สมบูรณ์ที่น้อยที่สุดint leastPerfectNumber ( void ) { int n ; for ( n = 1 ; ; n += 2 ) if ( n == divisorSum ( n )) return n ; }

ตัวอย่างเช่น การค้นหา จำนวนเต็มบวก(1, 2, 3, …) ไปเรื่อยๆ เพื่อดูว่าเราสามารถหาจำนวนสมบูรณ์คี่ ได้หรือไม่ นั้น เขียนได้ง่ายมาก และเป็นโปรแกรมที่ถูกต้องบางส่วนซึ่งจะหาจำนวนสมบูรณ์คี่ได้ หากจำนวนดังกล่าวมีอยู่จริง (ดูในกรอบ) อย่างไรก็ตาม การกล่าวว่าโปรแกรมนี้ถูกต้องทั้งหมด (เช่นจะหาจำนวนดังกล่าวเจอและจบการทำงาน) จะเท่ากับเป็นการยืนยันว่าจำนวนสมบูรณ์คี่มีอยู่จริง ซึ่งปัจจุบันยังไม่เป็นที่ทราบในทฤษฎีจำนวน

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

ผลลัพธ์ที่สำคัญอย่างยิ่งในทฤษฎีการพิสูจน์คือการสอดคล้องกันของเคอร์รีและโฮเวิร์ดซึ่งระบุว่า การพิสูจน์ความถูกต้องเชิงฟังก์ชันในตรรกศาสตร์เชิงสร้างสรรค์นั้น สอดคล้องกับโปรแกรมบางอย่างในแคลคูลัสแลมบ์ดาการแปลงการพิสูจน์ในลักษณะนี้เรียกว่าการ สกัดโปรแกรม

ตรรกะของ Hoareเป็นระบบที่เป็นทางการ เฉพาะ สำหรับการให้เหตุผลอย่างเข้มงวดเกี่ยวกับความถูกต้องของโปรแกรมคอมพิวเตอร์[ 3 ]โดยใช้เทคนิคเชิงสัจพจน์เพื่อกำหนดความหมายของภาษาโปรแกรมและโต้แย้งเกี่ยวกับความถูกต้องของโปรแกรมผ่านการยืนยันที่เรียกว่า Hoare triples

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

ดูเพิ่มเติม

หมายเหตุ

  1. ^ Dunlop, Douglas D.; Basili, Victor R. (มิถุนายน 1982). "การวิเคราะห์เปรียบเทียบความถูกต้องเชิงฟังก์ชัน" . Communications of the ACM . 14 (2): 229– 244. doi : 10.1145/356876.356881 . S2CID  18627112 .
  2. ^ Manna, Zohar; Pnueli, Amir (กันยายน 1974). "แนวทางเชิงสัจพจน์สู่ความถูกต้องสมบูรณ์ของโปรแกรม". Acta Informatica . 3 (3): 243– 263. doi : 10.1007/BF00288637 . S2CID 2988073 . 
  3. ^ Hoare, CAR (ตุลาคม 1969). "พื้นฐานเชิงสัจพจน์สำหรับการเขียนโปรแกรมคอมพิวเตอร์" . Communications of the ACM . 12 (10): 576– 580. doi : 10.1145/363235.363259 . S2CID 207726175 . 
  4. ^ปาน เจียนเทา (ฤดูใบไม้ผลิ 1999). "การทดสอบซอฟต์แวร์" (งานในชั้นเรียน). มหาวิทยาลัยคาร์เนกีเมลลอน. สืบค้นเมื่อ21 พฤศจิกายน 2017 .
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Correctness_(computer_science)&oldid=1355883744 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ความถูกต้อง (วิทยาการคอมพิวเตอร์)

ใน วิทยาการคอมพิวเตอร์เชิงทฤษฎี อั ลกอริทึม จะ ถูกต้อง ตาม ข้อกำหนด หากมีพฤติกรรมตามที่ระบุไว้ ความถูกต้อง เชิงฟังก์ชันได้ รับการสำรวจอย่างดีที่สุด...

ดูเพิ่มเติม

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

หมายเหตุ

^ Dunlop, Douglas D.; Basili, Victor R. (มิถุนายน 1982). "การวิเคราะห์เปรียบเทียบความถูกต้องเชิงฟังก์ชัน" . Communications of the ACM . 14 (2): 229– 244. doi : 10.1145/356876.356881 . S2CID 18627112 . ^ Manna, Zohar; Pnueli, Amir (กันยายน 1974).