分治/減治/變治

  • 分治:大的問題分別爲規模小的相同的子問題。

    1. 原問題僅存在於分解出來的某一個子問題中;
    2. 子問題需要綜合處理得出原問題解。
  • 減治:一個問題給定實例的解和同樣問題較小實例的解之間的關係。

    1. 減去一個常量;
    2. 將去一個常數因子;
    3. 減可變規模。
  • 分治減治區別:

    1. 分治法:求解多個子問題(每個子問題均需要單獨求解),合併子問題的解。
    2. 減治法:求解一個子問題(子問題只需要求一次),擴展子問題的解。
    3. 例如:求a^n。
      分治法:a^(n/2) * a^(n/2); 則左右兩個a^(n/2)均需要求,所以時間複雜度爲O(n)。
      減治法:(a^(n/2))^2;則只需要求a^(n/2)再平方即可,所以時間複雜度爲O(lgn)。
  • 變治:變換問題求解問題,把問題變爲更簡單、更易求解。

    1. 變換爲同樣問題的一個更簡單或者更方便的實例—實例化簡(Instance simplification)。
    2. 變換爲同樣實例的不同表現—改變表現(Representation Change).
    3. 變換爲另一個問題的實例, 這種問題的算法是已知的—問題化簡(Problem reduction).

參考:
http://blog.chinaunix.net/uid-17102734-id-2830111.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章