কম্পিউটার টিউটোরিয়াল

BFS ব্যবহার করে গ্রাফে একটি নোড থেকে পৌঁছানো যাবলে নোডগুলো খুঁজে বের করার পাইথন প্রোগ্রাম


BFS ট্রাভার্সাল ব্যবহার করে নির্দিষ্ট সোর্স নোড থেকে পৌঁছানো যাবলে সব নোড (রিচেয়াবল নোড) খুঁজে বের করা হয়।

উদাহরণ

from collections import deque

def bfs_reachable(adj, start):
    visited = [False] * len(adj)
    queue = deque([start])
    visited[start] = True
    reachable = []
    
    while queue:
        u = queue.popleft()
        reachable.append(u)
        for v in adj[u]:
            if not visited[v]:
                visited[v] = True
                queue.append(v)
    return reachable

# গ্রাফ তৈরি
V = 7
adj = [[] for _ in range(V + 1)]
edges = [(1,2), (2,3), (3,4), (3,1), (5,6), (5,7)]
for u, v in edges:
    adj[u].append(v)
    adj[v].append(u)

queries = [2, 4, 5, 7]
for q in queries:
    print(f"নোড {q} থেকে রিচেয়াবল: {bfs_reachable(adj, q)}")

আউটপুট

নোড 2 থেকে রিচেয়াবল: [2, 1, 3, 4]
নোড 4 থেকে রিচেয়াবল: [4, 3, 1, 2]
নোড 5 থেকে রিচেয়াবল: [5, 6, 7]
নোড 7 থেকে রিচেয়াবল: [7, 5, 6]

ব্যাখ্যা

  • BFS লেভেল-বাই-লেভেল এক্সপ্লোর করে।

  • ভিজিটেড অ্যারে দিয়ে রিপিট ভিজিট এড়ানো হয়।

  • কানেক্টেড কম্পোনেন্টের সব নোড রিচেয়াবল।

  • ডিসকানেক্টেড কম্পোনেন্টের নোড পাওয়া যায় না।


  1. Python দিয়ে বাইনারি ট্রিতে একটি নোডের ডানে অবস্থিত নোড বের করার প্রোগ্রাম

  2. Python দিয়ে সব নোডে পৌঁছাতে মিনিমাম ভার্টেক্স বের করার প্রোগ্রাম

  3. Python দিয়ে বাইনারি ট্রিতে ভালো লিফ নোড পেয়ার সংখ্যা বের করার প্রোগ্রাম

  4. Python দিয়ে একই লেবেল ওয়ালা সাব-ট্রি নোড সংখ্যা বের করার প্রোগ্রাম