FindHamiltonianCycle[g]
ハミルトン閉路を見付けようとする.
FindHamiltonianCycle
FindHamiltonianCycle[g]
ハミルトン閉路を見付けようとする.
詳細とオプション
- FindHamiltonianCycleの機能はWolfram言語の組込み関数FindHamiltonianCycleで利用できるようになった.
- FindHamiltonianCycleを使うためには,まずグラフユーティリティパッケージをロードしなくてはならない.それにはNeeds["GraphUtilities`"]を実行する必要がある.
- FindHamiltonianCycle[g]はハミルトン閉路が見付からないときは空のリストを返す.
- FindHamiltonianCycleは入力グラフを無向グラフとみなす.
- FindHamiltonianCycleではハミルトン閉路を見付けるのにヒューリスティックスを使うので,たとえハミルトン閉路があったとしてもそれが見付かるという保証はない.
例題
すべて開く すべて閉じる例 (2)
Needs["GraphUtilities`"]以下で小さいグラフを定義し,そのグラフのハミルトン閉路を見付ける:
g = {1 -> 3, 1 -> 2, 1 -> 4, 2 -> 3, 2 -> 4};GraphPlot[g, VertexLabeling -> True]FindHamiltonianCycle[g]この関数の代わりにWolframシステムのFindHamiltonianCycleが使われるようになった:
g = UndirectedGraph[Graph[{1 -> 3, 1 -> 2, 1 -> 4, 2 -> 3, 2 -> 4}]]FindHamiltonianCycle[g][[1, All, 1]]オプション (2)
MaxIterations (1)
Needs["Combinatorica`"]次は,ハミルトン閉路を見付けようと試みる最大反復回数を制限する:
FindHamiltonianCycle[GridGraph[8, 8], MaxIterations -> 5]//TimingFindHamiltonianCycle[GridGraph[8, 8]]//TimingFindHamiltonianCycle[GridGraph[8, 8], MaxIterations -> 5]//Timingアプリケーション (1)
南米の隣接する国々で構成されているグラフの中で,可能なハミルトン閉路をすべて見付ける:
Needs["GraphUtilities`"]g = Flatten[Map[(If[MemberQ[CountryData["SouthAmerica"], #[[1]]] && MemberQ[CountryData["SouthAmerica"], #[[2]]], #, {}])&, Flatten[Thread[# -> CountryData[#, "BorderingCountries"]]& /@ CountryData["SouthAmerica"]]]];c = FindHamiltonianCycle[g]これら2つの閉路のうちの最初のものを示す.2つ目の閉路は最初の閉路の逆になっているだけである:
cs = Transpose[{c, RotateRight[c]}];GraphPlot[g, EdgeRenderingFunction -> (If[MemberQ[cs, #2] || MemberQ[cs, Reverse[#2]], {Red, Thickness[.01], Line[#1]}, {Black, Line[#1]}]&), VertexLabeling -> True, MultiedgeStyle -> False]特性と関係 (1)
FindHamiltonianCycleはHamiltonianCyclesと異なりヒューリスティックスを使うため,たとえハミルトン閉路があったとしてもそれが見付けられるという保証はない.しかし,大きいグラフでは,1つの閉路を見付けるのにFindHamiltonianCycleの方が速いこともある.
以下で頂点が500個のグラフを定義し,ハミルトン閉路を見付けるのにこの2つの関数を使う:
SeedRandom[123];
g = RandomGraph[500, 0.3];FindHamiltonianCycle[g]//Short//TimingHamiltonianCycles[g]//Short//Timingテクニカルノート
関連するガイド
-
▪
- グラフユーティリティパッケージ ▪
- グラフとネットワーク ▪
- グラフの可視化 ▪
- グラフ上の計算 ▪
- グラフの構築と表現 ▪
- グラフと行列 ▪
- グラフの特性と測定 ▪
- グラフの操作と変更 ▪
- ランダムグラフ ▪
- ソーシャルネットワーク分析 ▪
- グラフの特性 ▪
- 数学データ形式 ▪
- 離散数学
テキスト
Wolfram Research (2007), FindHamiltonianCycle, Wolfram言語関数, https://reference.wolfram.com/language/GraphUtilities/ref/FindHamiltonianCycle.html.
CMS
Wolfram Language. 2007. "FindHamiltonianCycle." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/GraphUtilities/ref/FindHamiltonianCycle.html.
APA
Wolfram Language. (2007). FindHamiltonianCycle. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/GraphUtilities/ref/FindHamiltonianCycle.html
BibTeX
@misc{reference.wolfram_2026_findhamiltoniancycle, author="Wolfram Research", title="{FindHamiltonianCycle}", year="2007", howpublished="\url{https://reference.wolfram.com/language/GraphUtilities/ref/FindHamiltonianCycle.html}", note=[Accessed: 10-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_findhamiltoniancycle, organization={Wolfram Research}, title={FindHamiltonianCycle}, year={2007}, url={https://reference.wolfram.com/language/GraphUtilities/ref/FindHamiltonianCycle.html}, note=[Accessed: 10-August-2026]}