missing file
This commit is contained in:
parent
47b13c3836
commit
6825c3e2ac
134
packages/ProbLog/problog_examples/kbgraph.yap
Normal file
134
packages/ProbLog/problog_examples/kbgraph.yap
Normal file
@ -0,0 +1,134 @@
|
||||
|
||||
:- ensure_loaded(library(lists)).
|
||||
:- ensure_loaded(library(rbtrees)).
|
||||
:- ensure_loaded(library(tries)).
|
||||
:- ensure_loaded(('../problog/ptree')).
|
||||
:- ensure_loaded(library(trie_sp)).
|
||||
:- ensure_loaded(library(bdd)).
|
||||
:- ensure_loaded(library(bhash)).
|
||||
:- ensure_loaded(library(nb)).
|
||||
|
||||
%:- [inter].
|
||||
|
||||
:- dynamic best/4.
|
||||
|
||||
%:- ['../AlephUW/vsc_aleph_extensions'].
|
||||
%vsc_check_mem(on).
|
||||
|
||||
:- ensure_loaded(library(dbusage)).
|
||||
|
||||
|
||||
graph2bdd(Query,1,bdd(D,T,Vs)) :-
|
||||
Query =.. [_,X,Y],
|
||||
!,
|
||||
retractall(best(_,_,_,_)),
|
||||
graph(X,Y, TrieList, Vs),
|
||||
bdd_new(TrieList, C),
|
||||
bdd_tree(C, BDD),
|
||||
BDD = bdd(D,T,_Vs0),
|
||||
writeln(BDD).
|
||||
|
||||
|
||||
:- set_problog_flag(init_method,(Q,N,Bdd,user:graph2bdd(Q,N,Bdd))).
|
||||
|
||||
|
||||
%:- leash(0), spy graph2bdd.
|
||||
|
||||
cvt_to_id([E0,E1], VId*true, [Id-VId]) :-
|
||||
problog:problog_dir_edge(Id,E0,E1,_Pr),
|
||||
!.
|
||||
cvt_to_id([E0,E1],VId*true, [Id-VId]) :-
|
||||
problog:problog_dir_edge(Id,E1,E0,_Pr),
|
||||
!.
|
||||
cvt_to_id([E0,E1|Es], VId*Ids, [Id-VId|VIds]) :-
|
||||
problog:problog_dir_edge(Id,E0,E1,_Pr),
|
||||
!,
|
||||
cvt_to_id([E1|Es],Id*Ids, VIds).
|
||||
cvt_to_id([E0,E1|Es], VId*Ids, [Id-VId|VIds]) :-
|
||||
problog:problog_dir_edge(Id,E1,E0,_Pr),
|
||||
!,
|
||||
cvt_to_id([E1|Es], Ids, VIds).
|
||||
|
||||
export_answer(Final, FinalIDs, Vs) :-
|
||||
cvt_to_id(Final,FinalIDs, Vs).
|
||||
%writeln(FinalIDs),
|
||||
|
||||
|
||||
graph(X,Y,Trie_Completed_Proofs,Vs) :-
|
||||
best(X,Y,_Pr,Final),
|
||||
%writeln(_Pr),
|
||||
!,
|
||||
export_answer([Y|Final], Trie_Completed_Proofs,Vs).
|
||||
graph(X,Y,Trie_Completed_Proofs, Vs) :-
|
||||
nb_heap(100000,Q),
|
||||
path(X,Y,X,[X],Final, 0, _Pr, Q),
|
||||
!,
|
||||
export_answer(Final, Trie_Completed_Proofs, Vs).
|
||||
graph(_X,_Y,Trie_Completed_Proofs,Vs) :-
|
||||
export_answer([], Trie_Completed_Proofs,Vs).
|
||||
|
||||
path(X,X,_,P,P,Pr,Pr,_Q).
|
||||
path(X,Y,X0,P,_,Pr0,_Pr,Q) :-
|
||||
X \= Y,
|
||||
edge(X,Z,PrD),
|
||||
absent(Z,P),
|
||||
Pr is Pr0+PrD,
|
||||
check_best(X0, Z, Pr, P),
|
||||
NPr is -Pr,
|
||||
nb_heap_add(Q,NPr,[Z|P]),
|
||||
% nb_heap_size(Q,S), S mod 10000 =:= 0, gc_heap(Q), writeln(S),
|
||||
fail.
|
||||
path(_,Y,X0,_,F,_,FPr,Q) :-
|
||||
nb_heap_del(Q,NPr,P),
|
||||
P=[Z|_],
|
||||
% b_getval(problog_threshold, LT),
|
||||
Prf is -NPr,
|
||||
% Prf >= LT,
|
||||
path(Z,Y,X0,P,F,Prf,FPr,Q).
|
||||
|
||||
check_best(X, Z, _Pr, _P) :-
|
||||
best(X, Z, _Pr1, _P0),
|
||||
!,
|
||||
% Pr1 >= Pr, !,
|
||||
fail.
|
||||
check_best(X, Z, Pr, P) :-
|
||||
retract(best(X, Z,_, _)),
|
||||
!,
|
||||
assert(best(X, Z,Pr,P)).
|
||||
check_best(X, Z, Pr, P) :-
|
||||
assert(best(X, Z,Pr,P)).
|
||||
|
||||
d([H|L],H,L).
|
||||
d([H|L], X, [H|Nl]) :-
|
||||
d(L,X,Nl).
|
||||
|
||||
% using directed edges in both directions
|
||||
edge(X,Y,Pr) :- problog:problog_dir_edge(_,Y,X,Pr).
|
||||
edge(X,Y,Pr) :- problog:problog_dir_edge(_,X,Y,Pr).
|
||||
|
||||
% checking whether node hasn't been visited before
|
||||
absent(_,[]).
|
||||
absent(X,[Y|Z]):- X \= Y, absent(X,Z).
|
||||
|
||||
% get rid of garbage elements
|
||||
gc_heap(Q) :-
|
||||
heap_all(Q, [], L),
|
||||
sort(L, S),
|
||||
rebuild(S, Q),
|
||||
nb_heap_size(Q,Sz), writeln(done:Sz).
|
||||
|
||||
|
||||
heap_all(Q, L, L) :-
|
||||
nb_heap_empty(Q), !.
|
||||
heap_all(Q, Els, L) :-
|
||||
nb_heap_del(Q, Key, Val),
|
||||
Val = p(_,Z,_),
|
||||
heap_all(Q, f(Z,Key,Val).Els, L).
|
||||
|
||||
rebuild([], _).
|
||||
rebuild([f(Z,Pr0,_), f(Z,NPr,V)|Zs], Q) :- Pr0 < NPr, !,
|
||||
rebuild([f(Z,NPr,V)|Zs], Q).
|
||||
rebuild([f(_,NPr,V)|Els], Q) :-
|
||||
nb_heap_add(Q, NPr, V),
|
||||
rebuild(Els, Q).
|
||||
|
@ -24,7 +24,7 @@
|
||||
)
|
||||
|
||||
add_custom_command( OUTPUT yapi_swig.cxx yapi_swig.hh
|
||||
COMMAND swig -c++ -java -package pt.up.yap.lib -O -outdir ${JAVA_SWIG_OUTDIR}
|
||||
COMMAND ${SWIG_EXECUTABLE} -c++ -java -package pt.up.yap.lib -O -outdir ${JAVA_SWIG_OUTDIR}
|
||||
-addextern -I${CMAKE_SOURCE_DIR}/CXX -I${CMAKE_SOURCE_DIR}/include
|
||||
-I${CMAKE_SOURCE_DIR}/H -I${CMAKE_SOURCE_DIR}/os -I${CMAKE_SOURCE_DIR}/OPTYap
|
||||
-I${CMAKE_BINARY_DIR}
|
||||
@ -33,7 +33,7 @@
|
||||
)
|
||||
|
||||
add_custom_command( OUTPUT streamer_swig.cxx streamer_swig.hh
|
||||
COMMAND swig -c++ -java -package pt.up.yap.lib -O -outdir ${JAVA_SWIG_OUTDIR} -addextern -I${CMAKE_CURRENT_SOURCE_DIR} -o streamer_swig.cxx streamer.i
|
||||
COMMAND ${SWIG_EXECUTABLE} -c++ -java -package pt.up.yap.lib -O -outdir ${JAVA_SWIG_OUTDIR} -addextern -I${CMAKE_CURRENT_SOURCE_DIR} -o streamer_swig.cxx streamer.i
|
||||
DEPENDS ${CMAKE_SOURCE_DIR}/CXX/yapi.hh ${CMAKE_CURRENT_SOURCE_DIR}/streamer.i
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user