バイナリサーチ(途中で会います)
あまりにも大きな時間の複雑さを放棄するので、私たちはしばしば問題のいくつかの暴力的な列挙を満たしていますが、。
サブブランチツリーは指数関数的に成長しているので、私たちはそれバイナリ最適化を検討しているので、
序文
この知識はこれだけここで言及、レースシミュレーションに来ています。
彼は非常にシンプルかつ明白ではなく、Dスピーカーと述べました。
入門
DFSは会った暴力的な列挙が大きすぎるときに、我々はこのアルゴリズムを検討することができ、木が指数関数的に成長しているインデックスが半分に削減される場合には、量子飛躍があるでしょう検索します。
これは、DFSは、我々は二つの点から半分の深さを考慮して、両側のDFSに関する統計情報、統合することができただろう、すべての深さによって、通常のポイントから始まる要素を検索し、一般的な考え方です。
ご注意ください
キーは、深さを考えるには、2つの必要性を一緒に統合することができるかどうか、アルゴリズムを使用することができます統合することです。
理解します
のは、例を挙げて説明しましょう。
ボリューム持た\(M \) \((M <= 1E18)\)とバックパックを(N- \)\ - \(<= 40)\(N)番目の項目は、プログラムがバックパックをロードしたどのように多く尋ねます。
もし\(M \)は、小型、裸のバックパックで問題が、この質問である(M <= 1E18 \)\バックパックは(私にはない)を行うことはありません。
そして、最も基本的な方法は、暴力それぞれのケースを列挙考慮し、統計がすることができます。
タイムアウトでの直接列挙結果は、我々は、最初のケースを検索し、バイナリ、2番目の検索は、結果を見つけるために、検索、ソート、生き残る最初のケースとなり、半分の項目を削減する、双方向の検索を考慮することができますカウントします。
ため\(N- \) \((N - <= 20である)\)番号、ランダム番号の一部から選択され、これらの数字は同じグループに分けることができます。
いくつかのプログラムを検索します。
我々はまた、二回DFSを検討し、その結果は、二つの検索を整理し、いくつかのトラブルに統合されました。
統合、我々は考慮にこれらの数字のランダム性を取って、暴力を数えることができたとき、得点することが望ましい(\ 100)\、しかしトピックが慎重だったら手作りのデータがやや冷却されます。
それぞれの場合にのみ持って考える(\ 1)\寄与を、次いで、我々は\(2 ^ {20} \)の場合は、二回DFSを格納することが可能であるかどうかを決定するために結果を用いて、切れた缶。
概要
私たちは私たちの良心を保つために、対処するのが難しい他のアルゴリズムの数に直面している問題 (ルート) 、最適化の暴力を検索し、多分あなたは素敵な複雑さを取得します。