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

การค้นหาในกราฟ (Graph Searching) ในโครงสร้างข้อมูล


การค้นหาในกราฟ

กราฟเป็นโครงสร้างข้อมูลแบบ Non-linear เก็บข้อมูลในโหนด เชื่อมต่อด้วยเส้นขอบ (Edges) ต้องการค้นหาข้อมูลในกราฟมี 2 วิธีหลัก:

Breadth First Search (BFS)

BFS เป็นอัลกอริทึมการเดินทาง (Traversal) ไปเยี่ยมโหนดทั้งหมดของกราฟ เลือกโหนดหนึ่ง แล้วเยี่ยมโหนดติดกัน (Adjacent) ทีละตัว จบโหนดติดกันทั้งหมด จึงไปโหนดถัดไป ใช้ Queue ในการทำงาน: ใส่โหนดติดกันทั้งหมดเข้า Queue เมื่อจบ dequeue หนึ่งตัว แล้วเดินทางต่อจากโหนดนั้น

Depth First Search (DFS)

DFS เป็นอัลกอริทึม Traversal ให้โหนดเริ่มต้น เมื่อพบโหนดติดกัน จะเดินไปโหนดนั้นทันที แล้วเดินต่อไปในลักษณะเดียวกัน จะลึกลงไปในความลึก (Depth) มากที่สุดเท่าที่จะทำได้ แล้วค่อย Backtrack กลับมาหาเส้นทางใหม่

  • แบบ Iterative: ใช้ Stack
  • แบบ Recursive: ใช้ Call Stack ภายใน (ไม่ต้องการ Stack ภายนอก)