Current section
Files
Jump to
Current section
Files
lib/graphic.ex
defmodule Graphic do
@dg :digraph
# graph ops
def bridge(g, a, b) do
if !(g|>@dg.vertex(a)), do: g|>@dg.add_vertex(a)
if !(g|>@dg.vertex(b)), do: g|>@dg.add_vertex(b)
g|>@dg.add_edge(a, b)
end
def bridge(g, a, b, label) do
if !(g|>@dg.vertex(a)), do: g|>@dg.add_vertex(a)
if !(g|>@dg.vertex(b)), do: g|>@dg.add_vertex(b)
g|>@dg.add_edge(a, b, label)
end
# graph reads
def edges(g), do: g|>@dg.edges()|>Enum.map(& g|>@dg.edge(&1))
def order(g), do: g|>:digraph_utils.topsort()
# node reads
def neighbors(g,n), do: g|>@dg.out_neighbours(n)
end