Python
 Computer >> コンピューター >  >> プログラミング >> Python

無向グラフでBFSを使用してすべての連結成分を検索するPythonプログラム


ツリーのすべてのノードの合計を見つける必要がある場合は、クラスが作成されます。このクラスには、ルートノードの設定、ツリーへの要素の追加、特定の要素の検索、およびツリーの要素の追加を行うためのメソッドが含まれています。合計などを見つけます。これらのメソッドにアクセスして使用するために、クラスのインスタンスを作成できます。

以下は同じのデモンストレーションです-

class Graph_structure:

   def __init__(self, V):
      self.V = V
      self.adj = [[] for i in range(V)]

   def DFS_Utility(self, temp, v, visited):

      visited[v] = True

      temp.append(v)

      for i in self.adj[v]:
         if visited[i] == False:

            temp = self.DFS_Utility(temp, i, visited)
      return temp

   def add_edge(self, v, w):
      self.adj[v].append(w)
      self.adj[w].append(v)

   def find_connected_components(self):
      visited = []
      connected_comp = []
      for i in range(self.V):
         visited.append(False)
      for v in range(self.V):
         if visited[v] == False:
            temp = []
            connected_comp.append(self.DFS_Utility(temp, v, visited))
      return connected_comp

my_instance = Graph_structure(6)
my_instance.add_edge(1, 0)
my_instance.add_edge(2, 3)
my_instance.add_edge(3, 4)
my_instance.add_edge(5, 0)
print("There are 6 edges. They are : ")
print("1-->0")
print("2-->3")
print("3-->4")
print("5-->0")

connected_comp = my_instance.find_connected_components()
print("The connected components are...")
print(connected_comp)

出力

There are 6 edges. They are :
1-->0
2-->3
3-->4
5-->0
The connected components are...
[[0, 1, 5], [2, 3, 4]]

説明

  • 「Graph_structure」という名前のクラスが「_init_」メソッドで定義されています。

  • グラフの要素で深さ優先探索を実行するのに役立つ「DFS_Utility」という名前のメソッドが定義されています。

  • グラフにノードを追加するのに役立つ「add_edge」という名前の別のメソッドが定義されています。

  • 「find_connected_components」という名前の別のメソッドが定義されており、特定のノードに接続されているノードを判別するのに役立ちます。

  • 「Graph_structure」のインスタンスが作成されます。

  • 「add_edge」メソッドを使用して要素が追加されます。

  • コンソールに表示されます。

  • 「find_connected_components」が呼び出され、出力がコンソールに表示されます。


  1. Pythonを使用してすべてのノードに到達するための頂点の最小数を見つけるプログラム

    n個の頂点とノードに0からn-1までの番号が付けられた有向非巡回グラフがあるとします。グラフはエッジリストで表されます。ここで、edges [i] =(u、v)はノードuからノードv。グラフ内のすべてのノードに到達できる頂点の最小セットを見つける必要があります。 (頂点は任意の順序で返すことができます)。 したがって、入力が次のような場合 これらの2つの頂点は他のどの頂点からも到達できないため、出力は[0,2,3]になります。したがって、それらから開始すると、すべてをカバーできます。 これを解決するには、次の手順に従います- n:=エッジのサイズ all_nodes:=

  2. Unittestを使用したPythonプログラムでのユニットテスト

    この記事では、Python3.xで利用可能なunittestモジュールを使用して、ソフトウェアテストの基本について学習します。またはそれ以前。自動化、テストのセットアップと終了コードの共有、およびすべてのフレームワークの独立したテストが可能になります。 単体テストでは、さまざまなオブジェクト指向の概念を使用します。ここでは、主に使用されるいくつかの概念について説明します。 テストケース −これは、特定の入力セットに従った応答固有の基本クラスです。この操作を実装するには、ユニットテストの基本クラス、つまり「TestCase」を使用します。 テストスイート −テストケースをまとめて実