อัลกอริทึม Python

การค้นหาแนวกว้าง BFS ใน Python

BFS ใช้ queue เพื่อเยี่ยม neighbor ที่ใกล้ก่อน

การค้นหาแนวกว้าง BFS ใน Python คืออะไร?

BFS ใช้ queue เพื่อเยี่ยม neighbor ที่ใกล้ก่อน

สำรวจ graph ทีละระดับ

ควรใช้เมื่อใด?

  • ทำความเข้าใจอัลกอริทึมและโครงสร้างข้อมูล
  • สังเกตแต่ละขั้นตอนและกรณีขอบ
  • เปรียบเทียบเวลาและหน่วยความจำ

ภาพจำลอง การค้นหาแนวกว้าง BFS ใน Python

O(V+E)

กด เล่น หรือ ทีละขั้น เพื่อดูการเปรียบเทียบและการย้ายข้อมูลแต่ละขั้น

โค้ดตัวอย่าง

รันโค้ด →
main.py
from collections import deque

graph = {"A": ["B", "C"], "B": ["D"], "C": ["E"], "D": [], "E": []}
queue = deque(["A"])
visited = {"A"}
order = []

while queue:
    node = queue.popleft()
    order.append(node)
    for neighbor in graph[node]:
        if neighbor not in visited:
            visited.add(neighbor)
            queue.append(neighbor)

print(order)

ผลลัพธ์ที่คาดหวัง

['A', 'B', 'C', 'D', 'E']

หลักการทำงาน

visited ป้องกันการเยี่ยมซ้ำ ใช้เวลา O(V+E) และหน่วยความจำ O(V)

เปลี่ยนค่าและรันโปรแกรมด้วย คอมไพเลอร์ Python ออนไลน์ของ CodeUtility โดยไม่ต้องติดตั้ง Python

แบบฝึกหัด

ลองเปลี่ยน input และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น

  1. ทดสอบ input ว่าง หนึ่งสมาชิก และค่าซ้ำ
  2. แสดงสถานะหลังแต่ละขั้นตอน
  3. เปรียบเทียบประสิทธิภาพกับวิธีอื่น
รันใน Python IDE →