ในบริบทของการเขียนโปรแกรม อัลกอริธึมคือชุดของคำสั่งที่กำหนดไว้อย่างดีในลำดับการทำงานเฉพาะและบรรลุผลลัพธ์ที่ต้องการ ในที่นี้เราจะพูดถึงชุดคำสั่งที่กำหนดไว้ ซึ่งหมายความว่าผู้ใช้บางแห่งทราบผลลัพธ์ของคำสั่งเหล่านั้นหากดำเนินการในลักษณะที่คาดหวัง
บนพื้นฐานของความรู้เกี่ยวกับผลลัพธ์ของคำสั่งนั้น มีอัลกอริธึมสองประเภทคือ − อัลกอริธึมแบบกำหนดขึ้นเองและไม่ใช่แบบกำหนด ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างอัลกอริธึมทั้งสอง -
ซีเนียร์ เลขที่ | คีย์ | อัลกอริธึมที่กำหนดขึ้นได้ | อัลกอริธึมแบบไม่กำหนด |
---|---|---|---|
1 | คำจำกัดความ | อัลกอริธึมที่ผลลัพธ์ของอัลกอริธึมทุกตัวถูกกำหนดอย่างเฉพาะเจาะจงเรียกว่า อัลกอริธึมที่กำหนดขึ้น กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าอัลกอริธึมที่กำหนดขึ้นเองคืออัลกอริธึมที่ดำเนินการตามจำนวนขั้นตอนคงที่และเสร็จสิ้นด้วยสถานะยอมรับหรือปฏิเสธด้วยผลลัพธ์เดียวกันเสมอ | ในทางกลับกัน อัลกอริธึมที่ผลลัพธ์ของทุกอัลกอริธึมไม่ได้ถูกกำหนดอย่างเฉพาะเจาะจงและผลลัพธ์อาจเป็นแบบสุ่มเรียกว่าอัลกอริธึมแบบไม่กำหนด |
2 | การดำเนินการ | ในการดำเนินการ Deterministic Algorithms เครื่องเป้าหมายดำเนินการคำสั่งเดียวกันและให้ผลลัพธ์เดียวกันซึ่งไม่ได้ขึ้นอยู่กับวิธีการหรือกระบวนการที่คำสั่งถูกดำเนินการ | ในทางกลับกัน ในกรณีของ Non-Deterministic Algorithm เครื่องที่ดำเนินการแต่ละการดำเนินการจะได้รับอนุญาตให้เลือกผลลัพธ์ใดผลลัพธ์หนึ่งเหล่านี้ขึ้นอยู่กับเงื่อนไขการกำหนดที่จะกำหนดในภายหลัง |
3 | ประเภท | บนพื้นฐานของการดำเนินการและผลลัพธ์ในกรณีของอัลกอริธึมที่กำหนดขึ้นได้ พวกมันยังถูกจัดประเภทเป็นอัลกอริธึมที่เชื่อถือได้สำหรับคำสั่งอินพุตเฉพาะ เครื่องจะให้เอาต์พุตเดียวกันเสมอ | ในทางกลับกัน อัลกอริธึมแบบกำหนดไม่ได้ถูกจัดประเภทเป็นอัลกอริธึมที่ไม่น่าเชื่อถือสำหรับอินพุตเฉพาะ เครื่องจะให้เอาต์พุตที่แตกต่างกันในการดำเนินการที่แตกต่างกัน |
4 | เวลาดำเนินการ | เนื่องจากผลลัพธ์เป็นที่ทราบกันดีและมีความสอดคล้องกันในการดำเนินการที่แตกต่างกัน ดังนั้นอัลกอริธึมที่กำหนดจึงใช้เวลาพหุนามในการดำเนินการ | ในทางกลับกัน เนื่องจากผลลัพธ์ไม่เป็นที่ทราบและไม่สอดคล้องกับการดำเนินการที่แตกต่างกัน ดังนั้นอัลกอริธึมแบบ non-deterministic จึงไม่สามารถทำงานได้ในเวลาพหุนาม |
5 | เส้นทางการดำเนินการ | ในอัลกอริธึมที่กำหนดขึ้นเอง เส้นทางของการดำเนินการสำหรับอัลกอริธึมจะเหมือนกันในทุกการดำเนินการ | ในทางกลับกัน ในกรณีของอัลกอริธึมที่ไม่ใช่แบบกำหนดเส้นทางของการดำเนินการจะไม่เหมือนกันสำหรับอัลกอริธึมในการดำเนินการทุกครั้งและสามารถใช้เส้นทางสุ่มสำหรับการดำเนินการได้ |