data.Graph
self) data.Graph(
The Graph class represents a data structure of non-directed graphs.
Attributes
Name | Type | Description |
---|---|---|
nodes | (list, readonly) | A list of psiclone.graph.Node objects. |
edges | (list, readonly) | A list of psiclone.graph.Edge objects. |
link_table | (dict, readonly) | A table that maps each node to a list of its adjacent __edges. |
Methods
Name | Description |
---|---|
add_edge | Create and add an edge linking node1 and node2. |
add_node | Create and add a node. |
connected_components | Compute connected components. |
create_edge | Factory method creating an Edge instance. |
create_graph | Factory method of Graph. |
create_node | Factory method creating a Node instance. |
detach__edges | Make a node isolated so that each adjacent node is connected to a clone of the node. |
find_walk | Find a path from src to dest . |
invert_branch | Try to invert branch operation. Note that midnode is not removed. |
reconnect | Replace a connected old_node by new_node in edge . |
reduce | Reduce a node in the direction of an edge. |
register_edge | Register the edge instance. |
register_node | Register the node instance. |
remove_edge | Remove the edge. |
remove_node | Remove the node. |
subgraph | Create a sub-graph made of given nodes. |
walk_deeply | Walk from initial_node and apply fun to each node in a deep recursion. |
add_edge
*args, **kwgs) data.Graph.add_edge(node1, node2,
Create and add an edge linking node1 and node2.
add_node
*args, **kwgs) data.Graph.add_node(
Create and add a node.
connected_components
data.Graph.connected_components()
Compute connected components.
Returns
Name | Type | Description |
---|---|---|
components | list | A list of connected sub-graphs. |
create_edge
*args, **kwgs) data.Graph.create_edge(node1, node2,
Factory method creating an Edge instance.
create_graph
data.Graph.create_graph()
Factory method of Graph.
create_node
*args, **kwgs) data.Graph.create_node(
Factory method creating a Node instance.
detach__edges { #psiclone.data.Graph.detach__edges }
data.Graph.detach__edges(node)
Make a node isolated so that each adjacent node is connected to a clone of the node.
Parameters
Name | Type | Description | Default |
---|---|---|---|
node | psiclone.graph.Node |
A node to be detached. | required |
Returns
Name | Type | Description |
---|---|---|
new__nodes | list | A list of __nodes cloned from the original node. |
find_walk
data.Graph.find_walk(src, dest)
Find a path from src
to dest
.
Parameters
Name | Type | Description | Default |
---|---|---|---|
src | psiclone.graph.Node |
Source and destination nodes. | required |
dest | psiclone.graph.Node |
Source and destination nodes. | required |
Returns
Name | Type | Description |
---|---|---|
walk | (list, None) | A list of __edges that realizes the found path. None is returned if not found. |
invert_branch
data.Graph.invert_branch(branch1, branch2, midnode)
Try to invert branch operation. Note that midnode
is not removed.
Parameters
Name | Type | Description | Default |
---|---|---|---|
branch1 | psiclone.graph.Edge |
Edges connecting a common midnode . |
required |
branch2 | psiclone.graph.Edge |
Edges connecting a common midnode . |
required |
midnode | psiclone.graph.Node |
A common node connected with branch1 and branch2 . |
required |
Returns
Name | Type | Description |
---|---|---|
edge | psiclone.graph.Edge |
An edge recovered from branch1 and branch2 . |
reconnect
data.Graph.reconnect(edge, old_node, new_node)
Replace a connected old_node
by new_node
in edge
.
Parameters
Name | Type | Description | Default |
---|---|---|---|
edge | psiclone.graph.Edge |
An edge to be reconnected. | required |
old_node | psiclone.graph.Node |
Nodes to be replaced. | required |
new_node | psiclone.graph.Node |
Nodes to be replaced. | required |
reduce
reduce(edge, needless_node) data.Graph.
Reduce a node in the direction of an edge.
Parameters
Name | Type | Description | Default |
---|---|---|---|
edge | psiclone.graph.Edge |
An edge to be reduced. | required |
needless_node | psiclone.graph.Node |
A node to be removed. | required |
register_edge
data.Graph.register_edge(edge)
Register the edge instance.
register_node
data.Graph.register_node(node)
Register the node instance.
remove_edge
data.Graph.remove_edge(edge)
Remove the edge.
remove_node
data.Graph.remove_node(node)
Remove the node.
subgraph
=None) data.Graph.subgraph(nodes, edges
Create a sub-graph made of given nodes.
Parameters
Name | Type | Description | Default |
---|---|---|---|
nodes | list | A list of subgraph nodes. Not copied. | required |
edges | list | A list of subgraph edges. Not copied. All the edges linking given nodes are used if omitted. | None |
Returns
Name | Type | Description |
---|---|---|
other | psiclone.graph.Graph |
A graph made of given nodes. |
walk_deeply
data.Graph.walk_deeply(initial_node, fun)
Walk from initial_node
and apply fun
to each node in a deep recursion.
Parameters
Name | Type | Description | Default |
---|---|---|---|
initial_node | psiclone.graph.Node |
A first node to visit. | required |
fun | callable | A function with the signature fun(node, n) applied to each node. Parameters ———- node : psiclone.graph.Node Every node path-connected with initial_node . n : int >= 0 Recursion depth, or a path length, from initial_node . Note that this does not coincide with the shortest path length in general. |
required |