我需要創建一個圖表頂點以事實表示的鄰接矩陣: 序言中的鄰接矩陣
graph(a,b).
graph(c,c).
graph(b,c).
我需要輸出矩陣:
0 1 0
0 0 1
0 0 1
我知道我應該做的每一行的列表,但是當他們的符號,而不是數字出現的問題,所以我不沒有任何想法知道如何知道該列表的大小(例如,如果有一個圖(e,f),該列表必須是六個數字,所以f可以適合)。我不想要完整的答案,如果你只是想告訴我一個怎麼做的草圖,我想我會沒事的。
我需要創建一個圖表頂點以事實表示的鄰接矩陣: 序言中的鄰接矩陣
graph(a,b).
graph(c,c).
graph(b,c).
我需要輸出矩陣:
0 1 0
0 0 1
0 0 1
我知道我應該做的每一行的列表,但是當他們的符號,而不是數字出現的問題,所以我不沒有任何想法知道如何知道該列表的大小(例如,如果有一個圖(e,f),該列表必須是六個數字,所以f可以適合)。我不想要完整的答案,如果你只是想告訴我一個怎麼做的草圖,我想我會沒事的。
我沒有寫太多的Prolog代碼近日,但這是什麼左右,我想我會寫(未測試):
printedge(X,Y) :- graph(X,Y), write("1 ").
printedge(X,Y) :- \+ graph(X,Y), write("0 ").
printmatrix :-
List = [a,b,c,d],
member(Y, List),
nl,
member(X, List),
printedge(X,Y),
fail.
現在你只需要獲得元素的列表莫名其妙。
要獲得所有節點的列表:
node(X) :- graph(X,_).
node(X) :- graph(_,X).
allnodes(Nodes) :-
setof(X, node(X), Nodes). % removes duplicates
爲了得到節點的數目:
numnodes(N) :-
allnodes(Nodes),
length(Nodes, N).
感謝這麼多,它的作品比我所能想到,我只是去生成列表:D!非常感謝〜! – Kirby 2011-03-27 22:25:30