Python-分治アルゴリズム
MapReduce(分治アルゴリズムの応用)はGoogleビッグデータ処理の3つの馬車の1つであり、他の2つはGFSとBigtableである.逆インデックス、PageRankコンピューティング、Web分析などの検索エンジンに関する技術に多くの応用がある.
主な思想.
分治アルゴリズムの主な考え方は,サブ問題が境界条件を満たし,再帰を停止するまで,元の問題をいくつかのサブ問題に再帰的に分けることである.サブ問題を1つずつ破壊し(一般的には同じ方法)、解決したサブ問題を統合し、最後にアルゴリズムは元の問題の答えを積層して得る.
分治アルゴリズムの手順点:再帰的に問題をそれぞれのサブ問題(性質が同じで、互いに独立したサブ問題)に分解する. 治:これらの規模の小さいサブ問題を一つ一つ打ち破る. 合:解決したサブ問題を層ごとに合併し、最終的に元の問題の解を導く.
分治法適用の場合原問題の計算複雑度は問題の規模の増加とともに増加した. 原問題は、より小さなサブ問題に分解することができる. サブ問題の構造と性質は元の問題と同様であり,互いに独立しており,サブ問題の間には共通のサブ問題は含まれていない. 原問題で分解されたサブ問題の解は、この問題の解に統合することができる.
ぎじふごう
主な思想.
分治アルゴリズムの主な考え方は,サブ問題が境界条件を満たし,再帰を停止するまで,元の問題をいくつかのサブ問題に再帰的に分けることである.サブ問題を1つずつ破壊し(一般的には同じ方法)、解決したサブ問題を統合し、最後にアルゴリズムは元の問題の答えを積層して得る.
分治アルゴリズムの手順
分治法適用の場合
ぎじふごう
def divide_conquer(problem, paraml, param2,...):
#
if problem is None:
print_result
return
#
data=prepare_data(problem)
#
subproblems=split_problem(problem, data)
# ,
subresult1=self.divide_conquer(subproblems[0],p1,..…)
subresult2=self.divide_conquer(subproblems[1],p1,...)
subresult3=self.divide_conquer(subproblems[2],p1,.…)
#
result=process_result(subresult1, subresult2, subresult3,...)