私はProlog CLP FDを使って制限プログラムを使用して、提案されたパズルを解決しようとしています。このパズルは、次の簡単なルールで構成されていますProlog CLP FDを使用してパス制限を設定する方法は?
は今、私のコードでは、私はすでに2x2のグリッドの一枚は、同じ色の少なくとも1つに接続されなければならないことの制限をカバーしています。
問題は、一方のピースが同じ色の他のすべてのピースにPATH(接続されている)を持っていなければならないという制約を作成する方法を見つけることができないということです。私はこの種の出力を得ています:
0 0 0 0
0 1 0 1
0 1 0 1
0 1 0 0
0 0 0 0
0 1 0 1
0 1 0 1
0 1 0 1
ここで、1はすべて互いに接続されていません。
CLP FDでこの種のグラフ制限を作成するにはどうすればよいですか?
編集:私はSICStus Prologを使用しています。
私はあなたが言ったことを熟考し、どれくらいの**等価**個のピースが1つのピースに隣接しているか(上、左、下、右)を知る方法を見つけました。 次に、** ** ** **隣接するピースの数が5を超えてはならないという制限を加えました(これは、4つのセルを持つ2x2のベースケースのためです)。他のボードサイズのソリューションのセットを短くします。現われてはならないものもあります。私はこれが正しい制約の方法ではないかもしれないことを恐れる。私はどれくらい近いですか? – jazzchipc
私はこれをエンコードする方法が多少あるかもしれないと思います。例えば、すべての接続された経路によって満足される、奇数および偶数の同一の隣接セルを有するセルの数の間には関係があり得る。面白いと思われるようにこれにアプローチすると、これらの数値をボードの*サイズ*に関連付ける必要があります。 CLP(FD)で制約を効率的に表現するには多くの洞察が必要です。 Peter Szerediはスライドで同様のタスクについて説明しますが、一見価値があります。 – mat
あなたが参照したスライドを教えてください。私はあなたの助言に従い、オイラーパス定理に従った解を制約することができ、2つの頂点だけが奇数次でなければならないと言っていましたが、やはり解を失っています。 – jazzchipc