Design-and-analysis-of-algorithms-max-min-problem
DAA-最大最小問題
分割統治法によって解決できる単純な問題を考えてみましょう。
問題文
アルゴリズム分析の最大最小問題は、配列の最大値と最小値を見つけることです。
溶液
サイズ n の特定の配列 _numbers [] _ の最大数と最小数を見つけるには、次のアルゴリズムを使用できます。 最初に*単純なメソッド*を表し、次に*分割して征服するアプローチ*を提示します。
ナイーブ法
ナイーブ法は、問題を解決するための基本的な方法です。 この方法では、最大数と最小数を別々に見つけることができます。 最大数と最小数を見つけるには、次の簡単なアルゴリズムを使用できます。
分析
Naiveメソッドの比較数は 2n-2 です。
比較と分割のアプローチを使用して、比較の回数を減らすことができます。 以下はそのテクニックです。
分割統治アプローチ
このアプローチでは、アレイは2つの半分に分割されます。 次に、再帰アプローチを使用して、各半分の最大数と最小数を見つけます。 その後、各半分の2つの最大値の最大値と、各半分の2つの最小値の最小値を返します。
この問題では、配列内の要素数は$ y-x + 1 $です。ここで、 y は x 以上です。
$ \ mathbf \ {\ mathit \ {Max-Min(x、y)}} $は、配列$ \ mathbf \ {\ mathit \ {numbers [x … y]}} $の最大値と最小値を返します。 。
分析
T(n)= \ begin \ {cases} T \ left(\ lfloor \ frac \ {n} \ {2} \ rfloor \ right)+ T \ left(\ lceil \ frac \ {n} \ {2 } \ rceil \ right)+2&for \:n> 2 \\ 1&for \:n = 2 \\ 0&for \:n = 1 \ end \ {cases}
So,
T(n)= 2.T(\ frac \ {n} \ {2})+ 2 = 2. \ left(\ begin \ {array} \ {c} 2.T(\ frac \ {n} \ {4})+ 2 \ end \ {array} \ right)+ 2 ..... = \ frac \ {3n} \ {2}-2
単純な方法と比較して、分割統治アプローチでは、比較の数が少なくなります。 ただし、漸近表記を使用すると、両方のアプローチが* O(n)*で表されます。