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

Best First Search (การค้นหาที่มีข้อมูล)


Best first search เป็นเทคนิคการเดินทาง (traversal) ที่ตัดสินใจว่าโหนดไหนควรจะเยี่ยมชมต่อไป โดยการตรวจสอบว่าโหนดไหนเป็นที่มีพร้อมising ที่สุด (most promising) และตรวจสอบมัน สำหรับสิ่งนี้ มันใช้ฟังก์ชันประเมินผล (evaluation function) เพื่อตัดสินใจการเดินทาง

เทคนิค Best first search นี้ของการเดินทางต้นไม้ อยู่ในหมวดหมู่ของ heuristic search หรือ informed search technique

ต้นทุนของโหนดถูกเก็บใน priority queue ทำให้การนำไปใช้ของ best-first search เหมือนกับ breadth-first search เราจะใช้ priority queue เหมือนกับที่เราใช้ queue สำหรับ BFS

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

ขั้นตอนที่ 1 : สร้าง priorityQueue pqueue ขั้นตอนที่ 2 : ใส่ 'start' ลงใน pqueue : pqueue.insert(start) ขั้นตอนที่ 3 : ลบสมาชิกทั้งหมดของ pqueue ทีละตัว   ขั้นตอนที่ 3.1 : ถ้า สมาชิกคือ goal ให้ Exit   ขั้นตอนที่ 3.2 : ไม่ใช่ ให้เดินทางไปยังเพื่อนบ้าน และทำเครื่องหมายโหนดว่าตรวจสอบแล้ว ขั้นตอนที่ 4 : จบ

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