2011-09-09 14 views
11

"brute force"メソッドよりも優れたアプローチを考え出していますが、多少の損失があります。ここで単語検索アルゴリズム

は、単純なケースである:

(クロスワードの重複など)事前に選択した文字の有限数、およびハッチを考えると、私は使用することができますすべての単語の組み合わせを見つけるためにしようとしています。 (単語は辞書データベースから検索される。)

例:
、C、R、E、T、U、P、L、M、
どのように多くの組み合わせO:

文字を考えます単語の次のクロスワードパズルに収まることができますか?

_ 
_ _ _ _ 
    _ 
    _ 
    _ _ _ 

一例:もちろん

c 
t r e e 
    e 
    e 
    p o t 

検索時間は、各文字やクロスワードハッチの添加によって劇的に増加します。より良い検索方法の提案はありますか?

+1

'sed 'を使って62000語の辞書を減らすことができます| /.* ||' /var/cache/postgresql/dicts/en_us.dict | egrep "^ [acretuplmo] {3,5} $" |第1の粗いカットで566ワードになる。しかし、私は好奇心が強いです:あなたは 'e'を4回使っていますが、' a'は全く使っていません。これは大丈夫ですか? –

+0

はい、提供されたいずれかの文字を使用して単語が作成されます(各文字は複数回使用できます) – kylex

答えて

4

オープンソースarcccは、クロスワードグリッドをconstraint satisfaction problemとして扱います。学習の練習としてこれを自分でやりたいのであれば、CSPを読むことは良い出発点であるはずです。

アルファベットを制限するのは、ソース辞書の前処理ステップとして最も適しています。