2012-04-11 7 views
2

私は、指定されたリストの各単語を抽出できる文字の配列(2D)を構築できるアルゴリズムを探しています。 スクラブルの場合と同様に、単語は互いに交差し、水平、垂直または斜めになります。もちろん、いくつかの明白な解決策がありますが、ここでの目標は可能な限り小さくすることです。交差の回数を最大化することも意味します。リストのすべての単語が含まれている最小の「スクラブルボード」

私は人間やコンピュータのいずれかのスクラブルグリッドの大きなセットを使用して機械学習の方法を考えましたが、よりクリーンな方法があると確信しています。

ありがとうございました。

PS:それは芸術プロジェクトのためのものであり、冗談ではありません。

+1

最小限の解決策を見つけることは非常に困難です。最適な解決策ではなく、良い解決策に納得できませんか? 「交差する回数を最大にすること」を意味する:これは真実ではありません。交差回数を最大にすることは非常に似た問題ですが、これらの2つの問題の最適な結果は多くの場合異なります。 –

+0

おかげで、十分に正確ではないと申し訳ありません。 良い最適解で十分でしょう。確かに絶対最適を見つけることは地獄でしょう。また、交差を最適化するのと同じ問題ではないことを強調してくれてありがとう。私は完全に同意する、私は "これらの問題が近いと思われる" meaninだった。 –

+1

(スコアリング)の単語は斜体ではありません。 –

答えて

0

これはかなりのアルゴリズムです。私は、解決策には何らかの再帰が含まれると思われます。

最初にグリッドG0を作成し、すべての四角を空白にしてf(G0)を最適化済みのグリッドにします。次の位置へ移動します G1をうまく - =セットG1、この位置では、この言葉と 空白の他のすべての正方形とグリッドを - 最初の単語 の可能な各位置について

を:

それから私はしようとするだろう

G1を処理するには、f(G1)を再帰的に呼び出すことができます。

大きなグリッドと多くの単語がある場合は、無駄なアルゴリズムなので、これは永遠に実行されますが、典型的なスクラブルボードでは、ノートパソコンで十分に速いと思うはずです。

関連する問題