グラフアルゴリズムの概要
グラフは非線形のデータ構造であり、有限数のノードと、ノードのペアを接続するために使用されるエッジのセットで構成されています。
グラフは、ネットワークなどを表すためにいくつかのリアルタイムの問題を解決するために使用されます。さまざまなソーシャルネットワークでは、グラフが使用されます。
このセクションでは、-
について説明します。- 2連結グラフのチェック
- グラフの幅優先探索(BFS)
- グラフのブリッジ
- 特定のグラフがツリーであるかどうかを確認します
- 有向グラフの接続性
- グラフの深さ優先探索(DFS)
- 無向グラフでサイクルを検出する
- 有向グラフでサイクルを検出する
- 有向グラフのオイラー回路
- オイラー路と回路
- フルーリーのアルゴリズム
- グラフ彩色
- グラフが2部グラフであるかどうかを確認するにはどうすればよいですか?
- 有向非巡回グラフの最長パス
- 有向非巡回グラフの最短経路
- 最大2部マッチング
- 正確にk個のエッジを持つ最短経路
- 蛇と梯子の問題
- 強く接続されたグラフ
- 強連結成分のためのタージャンのアルゴリズム
- トポロジカルソート
- グラフの推移閉包
- フォードファルカーソンアルゴリズム
- スターグラフを確認する
- 最短経路のためのベルマンフォードアルゴリズム
-
Pythonで有向グラフを反転するプログラム
有向グラフがあるとすると、その逆を見つける必要があるため、エッジがuからvに移動すると、vからuに移動します。ここで入力は隣接リストになり、ノードがn個ある場合、ノードは(0、1、...、n-1)になります。 したがって、入力が次のような場合 その場合、出力は次のようになります これを解決するには、次の手順に従います- ans:=n個の異なるリストのリスト。nは頂点の数です 各インデックスi、およびグラフ内の隣接リストlについて、実行します lのxごとに、 ans [x]の最後にiを挿入します 回答を返す 理解を深めるために、次の実装を見てみましょう- 例
-
有向グラフでサイクルを検出するためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −有向グラフが与えられたので、グラフにサイクルが含まれているかどうかを確認する必要があります。指定されたグラフに少なくとも1つのサイクルが含まれている場合、出力はtrueである必要があり、そうでない場合はfalseです。 次に、以下の実装のソリューションを見てみましょう- 例 # collections module from collections import defaultdict # class for creation of graphs class Graph(): #