ฉันจะใช้ BFS เพื่อค้นหาเส้นทางที่สั้นที่สุดได้อย่างไร
ฉันจะใช้ BFS เพื่อค้นหาเส้นทางที่สั้นที่สุดได้อย่างไร

วีดีโอ: ฉันจะใช้ BFS เพื่อค้นหาเส้นทางที่สั้นที่สุดได้อย่างไร

วีดีโอ: ฉันจะใช้ BFS เพื่อค้นหาเส้นทางที่สั้นที่สุดได้อย่างไร
วีดีโอ: BFS | Breadth First Search 2024, อาจ
Anonim

ถึง หา NS เส้นทางที่สั้นที่สุด สิ่งที่คุณต้องทำคือเริ่มจากแหล่งที่มาและดำเนินการ a กว้างก่อน ค้นหาและหยุดเมื่อคุณ หา โหนดปลายทางของคุณ สิ่งเดียวที่คุณต้องทำคือมีอาร์เรย์ก่อนหน้า[n] ซึ่งจะจัดเก็บโหนดก่อนหน้าสำหรับทุกโหนดที่เข้าชม แหล่งที่มาก่อนหน้าอาจเป็นโมฆะ

ยังถามอีกว่าทำไม BFS ถึงหาเส้นทางที่สั้นที่สุด?

เราว่า BFS คือ อัลกอริทึมที่จะใช้ถ้าเราต้องการ หาทางที่สั้นที่สุด ในกราฟที่ไม่มีทิศทางและไม่มีการถ่วงน้ำหนัก การเรียกร้องค่าสินไหมทดแทนสำหรับ BFS คือครั้งแรกที่โหนดถูกค้นพบระหว่างการเดินทาง ระยะทางจากแหล่งกำเนิดนั้น จะ ให้เรา เส้นทางที่สั้นที่สุด . ไม่สามารถพูดได้เช่นเดียวกันสำหรับกราฟที่ถ่วงน้ำหนัก

รู้ยัง เส้นทางที่สั้นที่สุดในเขาวงกตอยู่ที่ไหน? ค้นหาเส้นทางที่สั้นที่สุดในเขาวงกต

  1. ขึ้นไป: (x, y) –> (x – 1, y)
  2. ไปทางซ้าย: (x, y) –> (x, y – 1)
  3. ลง: (x, y) –> (x + 1, y)
  4. ไปทางขวา: (x, y) –> (x, y + 1)

นอกจากนี้ เรายังสามารถใช้ DFS เพื่อค้นหาเส้นทางที่สั้นที่สุดได้หรือไม่

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

เวลาทำงานของ BFS คืออะไร?

ความซับซ้อนของ การค้นหาแบบกว้างๆ การค้นหาแบบกว้างๆ ก่อน มี เวลาทำงาน ของ O (V + E) O(V + E) O(V+E) เนื่องจากทุกจุดยอดและทุกขอบจะถูกตรวจสอบครั้งเดียว ขึ้นอยู่กับอินพุตของกราฟ O (E) O(E) O(E) อาจอยู่ระหว่าง O (1) O(1) O(1) และ O (V 2) O(V^2) O(V2).

แนะนำ: