%% wgraph_ugraph( +Wgraph, -Ugraph ). %% wgraph_ugraph( -Wgraph, +Ugraph ). % % Convert between wgraph and ugraph representations. % % Add this as a speical case of wgraph/2 ? % %== % ?- wgraph_ugraph( [1-2:1,1-3:2,2-3:4], Ug ). % Ug = [1-[2, 3], 2-[3], 3-[]]. % % ?- wgraph_ugraph( [1-2:1,1-3:2,2-3:1,4], Ug ). % Ug = [1-[2, 3], 2-[3], 3-[], 4-[]]. %== % wgraph_ugraph( Wg, Ug ) :- ground( Wg ), !, wgraph_to_ugraph( Wg, [], Ug ). wgraph_to_ugraph( [], Ug, Ug ). wgraph_to_ugraph( [Edge|Wg], Acc, Ug ) :- wgraph_edge_ugraph( Edge, Acc, Nxt ), wgraph_to_ugraph( Wg, Nxt, Ug ). wgraph_edge_ugraph( From-To:_W, Acc, Nxt ) :- !, add_edges( Acc, [From-To], Nxt ). wgraph_edge_ugraph( Node, Acc, Nxt ) :- atomic( Node ), !, add_vertices( Acc, [Node], Nxt ).