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_node を new_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 branch1 と branch2 に共通して接続されたノード 必須

戻り値

名前 型 説明
edge psiclone.graph.Edge branch1 と branch2 から復元されたエッジ

reconnect

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

edge 内で接続されている old_node を new_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 からの再帰深度(または経路長)。一般に最短経路長とは一致しません。
必須