2

さて、私はCuFrogと呼ばれるこのパズルを持っています。これは、3x3x3の立方体に各位置に数字を入力しますが、一方から他方に移動するときに位置を飛び越えます。たとえば、平らな立方体を考えると、サイド1の(1,1)の右側の有効な位置は、サイド1の(3,1)になります。

だから私はこれを行うためにPrologの制約を使用していて、各変数のドメイン(1から54)を与えました、それらはすべて異なっている必要があり、各位置について、セット内の位置の1つであると言いましたright-left-down-upは、そのような位置の現在の値+1でなければなりません。

また、パズルへのエントリポイントを指定しました。つまり、1番をすでに最初の位置に配置しました。

つまり、変数にラベルを付けているときに、SICStusは私に答えを見つけていません。:(どこかで制限がないか、何か間違ったことをしているようです。誰か助けてもらえますか?

ありがとう。

4

1 に答える 1

2

つまり、CLP(FD) では解決策が見つからないということですね。「いいえ」で終了するということですか、それとも終了しないということですか?

この問題は、ハミルトニアン パス問題のように見えます。検索に指数関数的な時間が必要であり、実際の時間内に終了しない可能性があります。

この特定のケースでは、対称性を破るヒューリスティックなどの制限を与えることで、実際に検索時間を短縮できます! たとえば、出発点から 2 つの方向で検索を修正し、他の方向は後で導出できます。

したがって、答えが「いいえ」の場合、これは制限が多すぎることを意味します。答えが終了しない場合、これは十分な制限がないか、実質的に解決できないことを意味します。

パスの検索に力を入れたにもかかわらず、ソリューションが体系的であることが後で判明する場合があります。または、自分でアイデアを得るかもしれません。

さよなら

于 2015-09-01T18:17:14.287 に答える