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.Nodeinitial_node とパス連結な各ノードn : int >= 0 initial_node からの再帰深度(または経路長)。一般に最短経路長とは一致しません。 |
必須 |