2015-09-08 5 views
9

数日前にパズルに出会った。手で簡単に解決できます。しかし、私はそれを解決するためのアルゴリズムを構築しようとしていました。しかし、私はどのように進めるべきかわかりません。 picture 1検索アルゴリズムを使ってパズルを解く

ここでは、すべての色の点のペアを接続する必要があることがわかります。例えば、私は黄色の点を別の黄色の点に、緑色を他の緑色、青色を青色に接続する必要があります。

ここでは、その解決方法の例を示します。説明が明確でない場合。 enter image description here

これで、黄色の点と別の黄色の点が接続されていることがわかります。そしてもう一つの青と青。しかし、これは問題を引き起こす。私はあなたが見ることができるようにアクアカラーのパスをブロックしました。私はあなたがそのアイデアを得ることを望みます。

だから私はそれを解決したい。ブルートフォースのアプローチはうまくいくだろうが、それは長い時間がかかり、私はそれに興味がない。幅広い検索、深さ優先検索、ダイクストラアルゴリズムの実装について試しました。しかし、私は彼らがこの場合には良くないと思う。私が間違っていれば私を訂正してください。 A *検索は機能しますが、ヒューリスティックは何ですか?

誰も私にこの問題を解決する方法のいくつかの直感を与えることができますか?

+0

を取得するために一緒に5以上の重複色論理

  • OR 2本の染色体を含んでコピーし、あなたの例のいずれかのソリューション内の遺伝子を、あなたの2つの候補染色体
  • をコピーします。ブロックされたペアが含まれます。この場合、アルゴリズムはどのようにすべきですか? –

  • +2

    このタイプのパズルはNumberlinkまたはArukoneと呼ばれています。 [Wikipedia](https://en.wikipedia.org/wiki/Numberlink)によれば、この問題はNP完全であるため、一般的なケースでは無差別な力よりもはるかに優れたことはできません。いくつかのアルゴリズムは、特定のアレンジメントでよりうまくいくかもしれませんが。 [検索](https://www.google.com/search?q=arukone&ie=utf-8&oe=utf-8#q=numberlink+solver)を使用すると、いくつかのソルバーを見つけることができます。 – interjay

    +0

    A *はBFSよりもすばやく動作します。ヒューリスティックを理解する必要があります。有効な解決策を採点する方法。このようにして、A *は最高のスコアに向かって動くことができます。現在のボード状態を追跡する状態オブジェクトを使用する必要があります。それぞれの動きは、ヒューリスティックによって得点される新しい状態になるでしょう – element11

    答えて

    1

    遺伝的アルゴリズムは、解を得るための適切な手段であるかもしれません。 フィットネス機能とクロスオーバーは、問題に特化して調整する必要があります。

    染色体:intの

    • 9x9の2次元配列(遺伝子)
    • あなたの18件のユニークな着色peices静的512として設定される| 1、512 | 2、512 | 4、512 | 8 、512 | 16,512 | 32,512 | 64,512 | 128,512 | 256の9つのユニークな色を表す。 512(2^9)はそれらを静的/不変の遺伝子として示すフラグになります。
    • 色付きの四角形は2^0-2^8の値を持ち、これらの遺伝子は変化して合成することができます。値3(011b)は2つの色(1と2)が同じ正方形を共有していることを意味します。

    フィットネス関数

    • 私の頭の上からスペース1つの独特の色と2色+6は、3色+4、4色+2、5色+0 +8であります、6色-2,7色-4,8色-6、全9色-8
    • 色の付いた静的スペースで接続されたスペース(左、右、上、下)は+9
    • と接続されているスペース1方向+4,2方向+3,3方向+2,4方向+1のマッチング色空間+1

    変異

    • 論理XORランダムカラービット(1 < <床(ランダム()* 9))ランダム非静的遺伝子と

    クロスオーバー/繁殖私の頭の上にオフ

    • クリアし、私が見ることができるようにあなたの結果
  • 関連する問題