Packages
fixpoint
0.12.5
0.22.1
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.18.2
0.18.1
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.13.5
0.13.4
0.13.2
0.13.1
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.2
0.12.1
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.52
0.8.51
0.8.50
0.8.49
0.8.48
0.8.46
0.8.44
0.8.43
0.8.42
0.8.41
0.8.40
0.8.39
0.8.38
0.8.37
0.8.36
0.8.35
0.8.34
0.8.33
0.8.32
0.8.31
0.8.30
0.8.29
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.1.3
0.1.2
0.1.1
0.1.0
Constraint Programming Solver
Current section
Files
Jump to
Current section
Files
lib/utils/bitgraph.ex
defmodule CPSolver.Utils.BitGraph do
def new(opts \\ []) do
BitGraph.new(opts)
end
def add_edge(bg, v1, v2) do
BitGraph.add_edge(bg, v1, v2)
end
def add_edge(bg, v1, v2, label) do
BitGraph.add_edge(bg, v1, v2, label)
end
def add_vertex(bg, v) do
BitGraph.add_vertex(bg, v)
end
def add_vertex(bg, v, label) do
BitGraph.add_vertex(bg, v, label)
end
def delete_edge(bg, v1, v2) do
BitGraph.delete_edge(bg, v1, v2)
end
def delete_edges(bg, edges) do
Enum.reduce(edges, bg, fn {from, to} -> delete_edge(bg, from, to) end)
end
def delete_vertex(bg, v) do
BitGraph.delete_vertex(bg, v)
end
def delete_vertices(bg, vertices) do
Enum.reduce(vertices, bg, fn vertex -> delete_vertex(bg, vertex) end)
end
def edge(bg, v1, v2) do
BitGraph.get_edge(bg, v1, v2)
end
def edges(bg) do
BitGraph.edges(bg)
|> expand_edges(bg)
end
def edges(bg, v) do
BitGraph.edges(bg, v)
|> expand_edges(bg)
end
def in_degree(bg, v) do
BitGraph.in_degree(bg, v)
end
def in_edges(bg, v) do
BitGraph.in_edges(bg, v)
|> expand_edges(bg)
end
def in_neighbours(bg, v) do
BitGraph.in_neighbors(bg, v)
end
def num_edges(bg) do
BitGraph.num_edges(bg)
end
def num_vertices(bg) do
BitGraph.num_vertices(bg)
end
def out_degree(bg, v) do
BitGraph.out_degree(bg, v)
end
def out_edges(bg, v) do
BitGraph.out_edges(bg, v)
|> expand_edges(bg)
end
def out_neighbours(bg, v) do
BitGraph.out_neighbors(bg, v)
end
def vertex(bg, v) do
BitGraph.get_vertex(bg, v)
end
def vertices(bg) do
BitGraph.vertices(bg)
end
def copy(graph) do
BitGraph.copy(graph)
end
defp expand_edges(edges, graph) do
Enum.map(edges, fn {v1, v2} ->
{_edge_id, v1, v2, labels} = edge(graph, v1, v2)
%Graph.Edge{v1: v1, v2: v2, label: labels, weight: 1}
end)
end
end