কম্পিউটার

BFS ব্যবহার করে অনির্দেশিত গ্রাফে সাইকেল আছে কিনা তা খুঁজে বের করতে পাইথন প্রোগ্রাম


যখন একটি গাছের সমস্ত নোডের যোগফল খুঁজে বের করার প্রয়োজন হয়, তখন একটি ক্লাস তৈরি করা হয়, এবং এতে রুট নোড সেট করার পদ্ধতি রয়েছে, গাছে উপাদান যুক্ত করা, একটি নির্দিষ্ট উপাদান অনুসন্ধান করা এবং গাছের উপাদানগুলি যোগ করা যোগফল এবং তাই খুঁজে. এই পদ্ধতিগুলি অ্যাক্সেস এবং ব্যবহার করার জন্য ক্লাসের একটি উদাহরণ তৈরি করা যেতে পারে।

নীচে একই -

এর একটি প্রদর্শন রয়েছে৷

উদাহরণ

from collections import deque

def add_edge(adj: list, u, v):
   adj[u].append(v)
   adj[v].append(u)

def detect_cycle(adj: list, s, V, visited: list):

   parent = [-1] * V

   q = deque()

   visited[s] = True
   q.append(s)

   while q != []:

      u = q.pop()

      for v in adj[u]:
         if not visited[v]:
            visited[v] = True
            q.append(v)
            parent[v] = u
         elif parent[u] != v:
            return True
   return False

def cycle_disconnected(adj: list, V):

   visited = [False] * V

   for i in range(V):
      if not visited[i] and detect_cycle(adj, i, V, visited):
         return True
   return False

if __name__ == "__main__":
   V = 5
   adj = [[] for i in range(V)]
   add_edge(adj, 0, 1)
   add_edge(adj, 1, 2)
   add_edge(adj, 2, 0)
   add_edge(adj, 2, 3)
   add_edge(adj, 2, 1)

   if cycle_disconnected(adj, V):
      print("There are 5 vertices in the graph")
      print("0-->1")
      print("1-->2")
      print("2-->0")
      print("2-->3")
      print("2-->1")
      print("Is there a cycle ?")
      print("Yes")
   else:
      print("There are 5 vertices in the graph")
      print("0-->1")
      print("1-->2")
      print("2-->0")
      print("2-->3")
      print("2-->1")
      print("Is there a cycle ?")
      print("Yes")
      print("No")

আউটপুট

There are 5 vertices in the graph
0-->1
1-->2
2-->0
2-->3
2-->1
Is there a cycle ?
Yes

ব্যাখ্যা

  • প্রয়োজনীয় প্যাকেজগুলি আমদানি করা হয়৷

  • 'add_edge' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গ্রাফে নোড যোগ করতে সাহায্য করে।

  • 'detect_cycle' নামের একটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা গ্রাফের উপাদানগুলিকে সংযুক্ত করার সময় একটি চক্র গঠিত হয়েছে কিনা তা নির্ধারণ করতে সাহায্য করে৷

  • 'cycle_disconnected' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে যা চক্রটি সংযুক্ত কিনা তা নির্ধারণ করতে সাহায্য করে।

  • 'add_edge' পদ্ধতি ব্যবহার করে গ্রাফে উপাদান যোগ করা হয়।

  • এটি কনসোলে প্রদর্শিত হয়৷

  • 'cycle_disconnected' পদ্ধতি বলা হয় এবং আউটপুট কনসোলে প্রদর্শিত হয়।


  1. পাইথনে একটি অনির্দেশিত গ্রাফের একটি শীর্ষবিন্দুর কম খরচের পথ আছে কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথনে তারকা গ্রাফের কেন্দ্র খুঁজে বের করার প্রোগ্রাম

  3. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  4. একটি অনির্দেশিত গ্রাফে পাইথনে একটি প্রদত্ত আকারের একটি স্বাধীন সেট রয়েছে কিনা তা খুঁজুন