Package for SWI prolog to manage graphs.
A graph, in this package is represented in this way: graph(ListOfVertices,ListOfEdges)
where ListOfVertices
is a list of integer and ListOfEdges
is a list of predicates edge/2
or edge/3
where edge/2
is used to for unweighted graphs (edge(NodeA,NodeB)
) and edge/3
is used for wheighted graphs (edge(NodeA,NodeB,Cost)
).
make_undirected_unweighted_graph/2
make_undirected_weighted_graph/2
make_unweighted_graph/2
make_weighted_graph/2
find_path_unweighted/4
find_path_weighted/5
make_kn/2
make_kn_weighted/4
make_kn_from_vertices/2
cycle_unweighted/3
cycle_weighted/4
is_connected/1
node_degree/3
node_degree_list/2
empty_unweighted_graph/3
empty_weighted_graph/3
is_graph_node/2
is_isolated_node/2
is_graph_edge/2
get_adjacent_nodes/3
graph_reverse_edges/2
spanning_tree/2
mst_prim/3
:- use_module(library(graph)).
test(G):-
make_kn(4,G).
?- test(T).
T = graph([1, 2, 3, 4], [edge(1, 2), edge(1, 3), edge(1, 4), edge(2, 3), edge(2, 4), edge(3, 4)]).
Feel free to open an issue if you found some problems or pull request if you want to contribute. Feel free also to suggest predicates that could be good to have.