improve graphs a bit.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2285 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2008-06-26 13:09:15 +00:00
parent bcfa65e227
commit 0dd1ed933e
7 changed files with 248 additions and 89 deletions

View File

@@ -13,6 +13,8 @@
wundgraph_edges/2,
wundgraph_neighbors/3,
wundgraph_neighbours/3,
wundgraph_wneighbors/3,
wundgraph_wneighbours/3,
wdgraph_to_wundgraph/2,
wundgraph_to_undgraph/2,
wundgraph_min_tree/3,
@@ -32,7 +34,9 @@
wdgraph_min_path/5 as wundgraph_min_path,
wdgraph_min_paths/3 as wundgraph_min_paths,
wdgraph_max_path/5 as wundgraph_max_path,
wdgraph_path/3 as wundgraph_path]).
wdgraph_path/3 as wundgraph_path,
wdgraph_reachable/3 as wundgraph_reachable
]).
:- use_module( library(wdgraphs),
[
@@ -95,6 +99,25 @@ wundgraph_neighbours(V,Vertices,Children) :-
).
wundgraph_neighbors(V,Vertices,Children) :-
wdgraph_neighbors(V,Vertices,Children0),
(
wdel_me(Children0,V,Children)
->
true
;
Children = Children0
).
wundgraph_wneighbours(V,Vertices,Children) :-
wdgraph_wneighbours(V,Vertices,Children0),
(
wdel_me(Children0,V,Children)
->
true
;
Children = Children0
).
wundgraph_wneighbors(V,Vertices,Children) :-
wdgraph_wneighbors(V,Vertices,Children0),
(
del_me(Children0,V,Children)
->
@@ -104,7 +127,7 @@ wundgraph_neighbors(V,Vertices,Children) :-
).
del_me([], _, []).
del_me([K-_|Children], K1, NewChildren) :-
del_me([K|Children], K1, NewChildren) :-
( K == K1 ->
Children = NewChildren
;
@@ -116,6 +139,19 @@ del_me([K-_|Children], K1, NewChildren) :-
compact(Children, MoreChildren)
).
wdel_me([], _, []).
wdel_me([K-A|Children], K1, NewChildren) :-
( K == K1 ->
Children = NewChildren
;
K @< K1 ->
NewChildren = [K-A|ChildrenLeft],
wdel_me(Children, K1, ChildrenLeft)
;
NewChildren = [K-A|MoreChildren],
compact(Children, MoreChildren)
).
wundgraph_del_edge(Vs0,V1,V2,K,VsF) :-
wdgraph_del_edge(Vs0,V1,V2,K,Vs1),
wdgraph_del_edge(Vs1,V2,V1,K,VsF).