Graph モジュール

グラフの基本的な操作を定義したモジュール。

独自のグラフクラスを作る場合は、下の「必要なメソッド」を定義した上で、 このモジュールをインクルードします。

インクルードしているモジュール:

必要なメソッド:

self[ v, w ]

頂点 v と頂点 w を結ぶ辺の重み。

辺の重みは、アルゴリズムによって辺の長さや辺の容量として使われる値です。

vw が隣接でない場合は、 parameter(:default) の値(デフォルトでは nil )を返します。

each_vertex{ |v| ... }
グラフの各頂点に対して繰り返します。
directed?()

有向グラフなら true 、無向グラフなら false を返します。

無向グラフとは、全ての頂点について self[v, w]==self[w, v] となるグラフです。

メソッド:

adjacent?(v, w)

頂点 v と頂点 w が隣接(つまり辺 [v, w] が存在する)なら true を返します。

隣接かどうかは、 self[v, w]!=parameter(:default) で判定します。

有向グラフでは、 adjacent?(v, w)adjacent?(w, v) が 一致するとは限りません。

each_successing_vertex(v){ |w| ... }
v を始点とする全ての辺の終点に対して繰り返します。
each_edge(uniq= false){ |v, w| ... }

グラフの各辺に対して繰り返します。

無向グラフでも、 v, ww, v に対して個別に 繰り返されます。これを防ぐには、 uniqtrue を 指定します。

有向グラフでは uniq を指定しても無視されます。

out_degree(v)
頂点 v の出次数( v を始点とする辺の数)を返します。
vertices
グラフの全ての頂点を配列として返します。
edges(uniq= false)

グラフの全ての辺を配列として返します。

uniq の働きは each_edge と同じです。

parameter(name)

グラフについてのパラメータ。 GraphAlgorithm のメソッドで指定するパラメータのデフォルト値として使われます。

また、 parameter(:default) は、 vw が隣接でない場合の self[v, w] の戻り値になります。

デフォルトでは常に nil を返すようになっています。 必要に応じて再定義してください。