与えられたグラフをチェックするプログラムは、Pythonではツリーのセットであるかどうか
エッジのリストとして表されるグラフがあるとします。グラフが木(森)の集まりであるかどうかを確認する必要があります。
したがって、入力が次のような場合
その場合、出力はTrueになります
これを解決するには、次の手順に従います-
-
関数dfs()を定義します。これはノードを取ります、前へ
-
ノードが表示されている場合、
-
Falseを返す
-
-
見られるにノードを挿入する
-
e [node]内の隣接するノードnごとに、実行
-
nがprevと同じでない場合、
-
dfs(n、node)がfalseの場合、
-
Falseを返す
-
-
-
-
Trueを返す
-
メインの方法から、次のようにします-
-
e:=空の地図
-
エッジの開始ノードuと終了ノードvごとに、実行します
-
e [u]
の最後にvを挿入します -
e [v]
の最後にuを挿入します
-
-
見た:=新しいセット
-
eのノードごとに、次のようにします
-
ノードが表示されず、dfs(node、-1)がfalseの場合、
-
Falseを返す
-
-
-
Trueを返す
理解を深めるために、次の実装を見てみましょう-
例
from collections import defaultdict class Solution: def solve(self, edges): e = defaultdict(list) for t,f in edges: e[t].append(f) e[f].append(t) seen = set() def dfs(node, prev): if node in seen: return False seen.add(node) for adj in e[node]: if adj != prev: if not dfs(adj, node): return False return True for node in e: if node not in seen and not dfs(node, -1): return False return True ob = Solution() edges = [[0, 1],[0, 2],[4, 3]] print(ob.solve(edges))
入力
[[0, 1],[0, 2],[4, 3]]
出力
True
-
与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム
無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります
-
指定された文字列がキーワードであるかどうかを確認するPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、その数値が2の累乗であるかどうかを確認する必要があります。 キーワードは、特定の用途で任意の言語によって予約されている特別な単語であり、識別子として使用することはできません。 指定された文字列がキーワードであるかどうかを確認するために、以下で説明するようにキーワードモジュールを使用しました。 例 # keyword module import keyword # Function def isKeyword(word) : # list of all