data.Graph

data.Graph(self)

Graph クラスは、無向グラフのデータ構造を表します。

属性

名前 説明
nodes (list, readonly) psiclone.graph.Node オブジェクトのリスト
edges (list, readonly) psiclone.graph.Edge オブジェクトのリスト
link_table (dict, readonly) 各ノードを、その隣接 __edges のリストに対応付けるテーブル

メソッド

名前 説明
add_edge node1 と node2 を結ぶエッジを生成して追加する
add_node ノードを生成して追加する
connected_components 連結成分を計算する
create_edge Edge インスタンスを生成するファクトリメソッド
create_graph Graph のファクトリメソッド
create_node Node インスタンスを生成するファクトリメソッド
detach__edges ノードを孤立させ、各隣接ノードをそのノードのクローンと接続する
find_walk src から dest までの経路を探索する
invert_branch 分岐操作の反転を試みる。midnode は削除されない
reconnect edge 内の接続された old_nodenew_node に置き換える
reduce エッジ方向にノードを縮約する
register_edge エッジインスタンスを登録する
register_node ノードインスタンスを登録する
remove_edge エッジを削除する
remove_node ノードを削除する
subgraph 指定したノードから部分グラフを作成する
walk_deeply initial_node から深さ優先で巡回し、各ノードに fun を適用する

add_edge

data.Graph.add_edge(node1, node2, *args, **kwgs)

node1 と node2 を結ぶエッジを生成して追加します。

add_node

data.Graph.add_node(*args, **kwgs)

ノードを生成して追加します。

connected_components

data.Graph.connected_components()

連結成分を計算します。

戻り値

名前 説明
components list 連結部分グラフのリスト

create_edge

data.Graph.create_edge(node1, node2, *args, **kwgs)

Edge インスタンスを生成するファクトリメソッド。

create_graph

data.Graph.create_graph()

Graph のファクトリメソッド。

create_node

data.Graph.create_node(*args, **kwgs)

Node インスタンスを生成するファクトリメソッド。

detach__edges { #psiclone_ja.data.Graph.detach__edges }

data.Graph.detach__edges(node)

ノードを孤立させ、各隣接ノードがそのノードのクローンと接続されるようにします。

パラメータ

名前 説明 デフォルト
node psiclone.graph.Node 分離対象のノード 必須

戻り値

名前 説明
new__nodes list 元のノードから複製された __nodes のリスト

find_walk

data.Graph.find_walk(src, dest)

src から dest までの経路を探索します。

パラメータ

名前 説明 デフォルト
src psiclone.graph.Node 始点ノード 必須
dest psiclone.graph.Node 終点ノード 必須

戻り値

名前 説明
walk (list, None) 経路を構成する __edges のリスト。見つからない場合は None を返す。

invert_branch

data.Graph.invert_branch(branch1, branch2, midnode)

分岐操作の反転を試みます。midnode は削除されません。

パラメータ

名前 説明 デフォルト
branch1 psiclone.graph.Edge 共通の midnode に接続されたエッジ 必須
branch2 psiclone.graph.Edge 共通の midnode に接続されたエッジ 必須
midnode psiclone.graph.Node branch1branch2 に共通して接続されたノード 必須

戻り値

名前 説明
edge psiclone.graph.Edge branch1branch2 から復元されたエッジ

reconnect

data.Graph.reconnect(edge, old_node, new_node)

edge 内で接続されている old_nodenew_node に置き換えます。

パラメータ

名前 説明 デフォルト
edge psiclone.graph.Edge 再接続するエッジ 必須
old_node psiclone.graph.Node 置き換え対象ノード 必須
new_node psiclone.graph.Node 新しいノード 必須

reduce

data.Graph.reduce(edge, needless_node)

エッジ方向にノードを縮約します。

パラメータ

名前 説明 デフォルト
edge psiclone.graph.Edge 縮約対象エッジ 必須
needless_node psiclone.graph.Node 削除対象ノード 必須

register_edge

data.Graph.register_edge(edge)

エッジインスタンスを登録します。

register_node

data.Graph.register_node(node)

ノードインスタンスを登録します。

remove_edge

data.Graph.remove_edge(edge)

エッジを削除します。

remove_node

data.Graph.remove_node(node)

ノードを削除します。

subgraph

data.Graph.subgraph(nodes, edges=None)

指定したノードから部分グラフを作成します。

パラメータ

名前 説明 デフォルト
nodes list 部分グラフのノードリスト(コピーされません) 必須
edges list 部分グラフのエッジリスト(コピーされません)。省略時は該当エッジを自動使用 None

戻り値

名前 説明
other psiclone.graph.Graph 指定ノードから構成されたグラフ

walk_deeply

data.Graph.walk_deeply(initial_node, fun)

initial_node から深さ優先で巡回し、各ノードに fun を適用します。

パラメータ

名前 説明 デフォルト
initial_node psiclone.graph.Node 最初に訪問するノード 必須
fun callable 各ノードに適用される関数 fun(node, n)

Parameters
———-
node : psiclone.graph.Node
initial_node とパス連結な各ノード
n : int >= 0
initial_node からの再帰深度(または経路長)。一般に最短経路長とは一致しません。
必須