私は現在、グラフ内のハミルトニアン パスの存在を確認する必要があるプロジェクトに取り組んでいますが、パスがどこで開始または終了するかは問題ではなく、グラフ内に存在することだけです。
ここで別のユーザーからこのコードをコピーしました:
def hamilton(graph, start_v):
size = len(graph)
to_visit = [None, start_v]
path = []
while(to_visit):
v = to_visit.pop()
if v :
path.append(v)
if len(path) == size:
break
for x in set(graph[v])-set(path):
to_visit.append(None)
to_visit.append(x)
else:
path.pop()
return path
明らかに、開始値のパラメーターがあります。今、私の最初の本能は、関数を反復してすべての開始頂点に対して実行することですが、100以上の頂点を持つグラフでこれを実行するので、完了するまでに時間がかかります. すべての頂点を通るパスが何であるかを実際に知る必要はありません。それが役立つ場合は、そのパスが存在することを知る必要があるだけです。
任意の開始位置を与えるためにこれをどのように適応させますか?