Heuristic การค้นหาเป็นวิธีอัลกอริทึมที่มีประสิทธิภาพที่ใช้ในการค้นหาวิธีแก้ไขปัญหาในพื้นที่ปัญหาที่ซับซ้อนโดยการตัดสินใจโดยใช้ข้อมูลตามการวิเคราะห์พฤติกรรมหรือกฎง่ายๆ มีประโยชน์อย่างยิ่งเมื่อการค้นหาแบบละเอียดไม่สามารถทำได้เนื่องจากพื้นที่การค้นหาขนาดใหญ่
มันทำงานอย่างไร
- Heuristic การประเมิน: อัลกอริทึมประเมินแต่ละสถานะในพื้นที่ปัญหาโดยใช้ heuristic ฟังก์ชัน ฟังก์ชันนี้จะประเมิน "แนวโน้ม" ของแต่ละสถานะในแง่ของความใกล้เคียงกับสถานะเป้าหมาย
- กลยุทธ์การค้นหา: อัลกอริทึมจะเลือกสถานะที่มีแนวโน้มมากที่สุดตาม heuristic การประเมิน ใช้กลยุทธ์การค้นหา เช่น Best-First ค้นหา A* Search หรือ Greedy Search
- การขยายสถานะ: สถานะที่เลือกจะถูกขยายโดยการสร้างสถานะที่อยู่ใกล้เคียง สิ่งเหล่านี้คือตัวเลือกที่มีศักยภาพสำหรับขั้นตอนต่อไป
- ทำซ้ำ: กระบวนการนี้ซ้ำแล้วซ้ำอีก โดยเลือกและขยายสถานะจนกว่าจะพบสถานะเป้าหมายหรือตรงตามเงื่อนไขการยกเลิก
ตัวอย่าง: ปัญหาพนักงานขายเดินทาง(TSP)
พิจารณาปัญหาพนักงานขายเดินทาง ซึ่งพนักงานขายต้องไปเยี่ยมเมืองหนึ่งและกลับไปที่เมืองเริ่มต้นโดยลดระยะทางรวมที่เดินทางให้น้อยที่สุด วิธี heuristic การอาจเป็นอัลกอริทึมเพื่อนบ้านที่ใกล้ที่สุด:
- เริ่มต้นที่เมืองสุ่ม
- ในแต่ละขั้นตอน ให้เลือกเมืองที่ยังไม่ได้เยี่ยมชมที่ใกล้ที่สุดเป็นจุดหมายปลายทางต่อไป
- ทำซ้ำจนกว่าจะเยี่ยมชมเมืองทั้งหมด จากนั้นกลับไปที่เมืองเริ่มต้น
ตัวอย่างโค้ดในภาษา C++
ในตัวอย่างนี้ อัลกอริทึมเพื่อนบ้านที่ใกล้ที่สุดถูกใช้เพื่อแก้ปัญหาการเดินทางของพนักงานขาย เป็น heuristic แนวทางที่เลือกเมืองที่ยังไม่ได้เยี่ยมชมที่ใกล้ที่สุดในแต่ละขั้นตอน ทำให้ได้โซลูชันที่มักจะใกล้เคียงกับค่าที่เหมาะสมที่สุด