Cycles

This notebook illustrates the search for cycles in graphs.

[1]:
from IPython.display import SVG
[2]:
import numpy as np
[3]:
from sknetwork.data import house, star, linear_digraph, cyclic_digraph
from sknetwork.topology import is_acyclic
from sknetwork.visualization import svg_graph

Graphs

[4]:
# star
graph = star(5, metadata=True)
adjacency = graph.adjacency
position = graph.position
[5]:
image = svg_graph(adjacency, position, scale=0.5)
SVG(image)
[5]:
../../_images/tutorials_topology_cycles_7_0.svg
[6]:
is_acyclic(adjacency)
[6]:
True
[7]:
# house graph
graph = house(metadata=True)
adjacency = graph.adjacency
position = graph.position
[8]:
image = svg_graph(adjacency, position, scale=0.5)
SVG(image)
[8]:
../../_images/tutorials_topology_cycles_10_0.svg
[9]:
is_acyclic(adjacency)
[9]:
False

Directed graphs

[10]:
# line
graph = linear_digraph(3, metadata=True)
adjacency = graph.adjacency
position = graph.position
[11]:
image = svg_graph(adjacency, position, scale=0.5)
SVG(image)
[11]:
../../_images/tutorials_topology_cycles_14_0.svg
[12]:
is_acyclic(adjacency)
[12]:
True
[13]:
# cycle
graph = cyclic_digraph(5, metadata=True)
adjacency = graph.adjacency
position = graph.position
[14]:
image = svg_graph(adjacency, position, scale=0.5)
SVG(image)
[14]:
../../_images/tutorials_topology_cycles_17_0.svg
[15]:
is_acyclic(adjacency)
[15]:
False