3

SO で指定された文字から一意の組み合わせを作成することを読んでいるときに、ブルートフォースメソッドを使用するプログラムがこれを適用する手法であるかどうか疑問に思っていましたか? ユーザーIDまたはパスワードを破るために92の組み合わせを作ることを意味します。一般的な Windows キーボードには、パスワードに使用できる約 92 文字があります。

この方法でパスワードを破る方法を尋ねているわけではありませんが、一部の洗練されたプログラムがブルートフォース方法に使用する方法を知りたいと思っていましたか?

4

1 に答える 1

3

ブルート フォースを使用して問題を解決する単純な方法は、すべての可能性を調査し、それらを評価し、最善のものを選択する単純なバックトラックです。

ただし、問題によっては、「解決する」または「解決しない」よりも多くの情報が得られる場合があります。たとえば、SAT問題 (ブール式に解があるかどうかを調べる) の場合、「矛盾を正確にどのように取得したか」(代入で満足できなかった変数) に関する知識を得ることができます。通常、この問題をConstraint Propogationと呼びます。これは、SAT ソルバーに (バリエーションで) よく使用される DPLLアルゴリズムの下で SAT に適用されます。
興味のある方は - SAT ソルバーを使用する実際のプログラムはさまざまです。

もう 1 つの一般的な最適化は、分岐限定です。つまり、葉に到達する前に「検索ツリー」をトリミングできます。巡回セールスマン問題の例です。長さ 100 のパスを既に見つけていて、新しいパスを探索していて 101 に達した場合、この可能性を探索し続ける必要はありません。

于 2012-09-05T06:55:46.643 に答える