1

Prolog の質問にいくつかの問題があります。

次の節は有向グラフを表し、ノードはアトムであり、エッジは接続された述語によって示されます。次の句がデータベースにある場合、次の 2 つの質問に答えてください。

connected(a,b).
connected(b,d).
connected(b,e).
connected(b,f).
connected(a,c).
connected(c,f).
connected(c,g).
connected(h,c).
path(X,Y) :- connected(X,Y).
path(X,Z) :- connected(X,Y), path(Y,Z).

2 つ以上の異なる着信エッジ (つまり、少なくとも 2 つの異なるノードが接続されている) を持つすべてのノードを返す Prolog クエリを示します。また、クエリを入力した結果を表示します (すべてのソリューションを求めます)。クエリは同じノードを複数回返す場合があり、クエリ内の他の変数の値を出力する場合があります。問題のノードを示す変数は、DNode と呼ばれる必要があります。


これまでのところ、私は持っています:

path(DNode,__) , path(__,DNode).

しかし、それは私にbcしか与えません
。複数のノードを持つ文字はa、b、c、fだと思います。a 、 b、およびc
を取得するためにこれを試しました:

path(__,DNode),path(DNode,__) ; path(DNode,__) , path(DNode,__).

しかし、私はa 、 b 、 c、およびhを取得しました。
必要な文字をすべて取得するには、次のようにする必要があると思います。

path(__,DNode),path(DNode,__) ; path(DNode,__) , path(DNode,__) ; path(__,DNode) , path(__,DNode).

ただし、a、b、c、e、f、g、およびhが表示されます。

私が欲しい4文字を取得する方法についてのアドバイスをいただければ幸いです.

4

1 に答える 1