Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Best First Search (การค้นหาโดยแจ้ง)


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

เทคนิคการค้นหาแบบสำรวจต้นไม้ครั้งแรกที่ดีที่สุดนี้อยู่ในหมวดหมู่การค้นหาแบบศึกษาสำนึกหรือเทคนิคการค้นหาอย่างมีข้อมูล

ค่าใช้จ่ายของโหนดถูกเก็บไว้ในคิวลำดับความสำคัญ สิ่งนี้ทำให้การใช้งานการค้นหาแบบเบสท์เฟิร์สเหมือนกับการค้นหาแบบกว้างก่อน เราจะใช้ Priorityqueue เหมือนกับที่เราใช้ Queue สำหรับ BFS

อัลกอริธึมสำหรับการนำ Best First Search ไปใช้

Step 1 : Create a priorityQueue pqueue.
Step 2 : insert ‘start’ in pqueue : pqueue.insert(start)
Step 3 : delete all elements of pqueue one by one.
   Step 3.1 : if, the element is goal . Exit.
   Step 3.2 : else, traverse neighbours and mark the node examined.
Step 4 : End.

อัลกอริทึมนี้จะข้ามเส้นทางที่สั้นที่สุดก่อนในคิว ในกรณีที่เลวร้ายที่สุด อัลกอริทึมจะใช้ O(n*logn) เวลา.