問題タブ [transitive-closure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
33232 参照

prolog - Prolog でグラフを定義する: エッジとパス、2 つの頂点間にパスがあるかどうかを調べる

私はプロローグが初めてです。graph.pl次のグラフで定義しました。

グラフ

そして、ここに私のプロローグコードがあります:

私はそれを次のように理解しています:頂点と頂点の間にエッジがあり、頂点と頂点の間にパスがある場合にのみ、頂点X頂点の間にパスがありますYXZZY(ある種の再帰)。

提示されたグラフでよろしいですか?A頂点と頂点の間のパスについて Prolog に尋ねると、Fそれは私に与えられますtrue...これは正しくありません! このコードで何が間違っている可能性がありますか?

0 投票する
1 に答える
83 参照

prolog - PROLOG 類似のオブジェクトを「接続」する方法

ちょっとプロローグが初めてで、疑問に思っていました:

私はこのコードを持っているとしましょう:

consistsof(X,Y):- component(X,Y); component(Y,Z). そして私は私に与える引数を作成したい :

Y = b、c、d、e、f

だから私は "a" の結果と "a" が (b,e) および (b,f) に接続されているものの結果を取得したいと考えています。あまり具体的でない場合は申し訳ありません。

0 投票する
2 に答える
12917 参照

prolog - プロローグ「ローカルスタック不足」エラー

これが私の簡単なPrologプログラムです:

次のクエリを入力すると

Prolog は次の出力を提供します。

さらにセミコロンを入力すると、Prolog は次のように言います。

ここで何が間違っていますか?

0 投票する
2 に答える
1963 参照

prolog - プロローグの対称関係に対する推移閉包

私はプロローグ初心者で、「兄弟」関係を作りたいと思っています。

兄弟 (alin, alex)が true である場合、兄弟 (alex, alin)も同様である必要があるように、関係は対称である必要があります。

また、brother(alin, alex)brother(alex, claudiu)が true である場合、brother(alin, claudu ) も true である場合のように、推移的である必要があります。

to プロパティを組み合わせると、brother(alex, alin)brother(alex, claudiu)が true の場合、brother(alin, claudu)も true になるはずです。

これが私のコードです:

r_brother - 基本的な関係です

s_brother - 対称的な兄弟関係です (これはうまくいきます)

t_brother - これは推移的で対称的な関係である必要があります。ループが発生しないように中間ノードを保持します

問題は、次の場合の答えです。

は:

トレースを調べたところ、問題の内容は理解できましたが、解決方法がわかりません。

alinは可能な答えであってはならず、他の答えは 1 回だけ現れるべきです。

0 投票する
2 に答える
194 参照

prolog - リストを使用してAからBへのパスを記録するには?

ノード 1、2、...、n を含むマップがある場合、 からn1に移動できるかどうかを知りたい場合n2は、次のコードを使用できます。

Aしかし、 からへのパスを記録しBて表示するにはどうすればよいでしょうか。

0 投票する
2 に答える
486 参照

recursion - ローカル スタック スペースからの Prolog アウト/無限再帰

このサイトで他の同様の質問と回答を読みましたが、特定の問題に対する回答が見つからないようです。Prolog で迷路をエンコードしようとしています。領域 0 から領域 1 または領域 3 に自由に移動できます。領域 3 から、領域 0、領域 4、領域 5 などに自由に移動できます。長さ 7 のすべてのパスを最初から最後(0から14まで)。SWI-Prolog で次の方法で問題をエンコードしました。

実行するpath(14,0).と が得られtrueます。ただし、path(0,14) を実行すると、ローカル スタック領域が不足します。それがどのようになるかわかりません。助けてくれてありがとう!