Divide and Conquer(分割統治)

Divide and Conquer(分割統治)は、アルゴリズムの問題を解くうえで広く用いられる手法です。すでに取り上げた他の手法としては、Greedyアプローチ(貪欲法)では各ステップで最適解を選び、Dynamic Programming(動的計画法)では過去の結果を基に現在の状態を構築します。一方、Divide and Conquer(分割統治)の場合、大きな問題を小さなサブ問題に分割(Divide)し、それぞれを個別に解き、それらの解を組み合わせて最初の問題を解決(Conquer)します。つまり、複数のサブ問題を解いて結果をまとめることで、元の問題を効率的に解くアプローチです。

Challenge

たとえば、512個の数値が与えられ、それらの中から2つの数値を取り出して最大値だけを返すことができる、特殊な小型コンピュータが512台あると想像してみてください。
これら512個の数値のうち最大値を、できるだけ短い時間で求めたいとします。
各コンピュータは2つの数値を受け取り、その最大値を1秒で返すことができます(ちょっと遅いんです 🐌)。では、この仕組みを使って、すべての数値の最大値をできるだけ速く求めるためのアルゴリズムを考えられますか?
 
 
To check your solution you need to sign in
Sign in to continue