1. 程式人生 > >常用演算法分析與設計

常用演算法分析與設計

  • P問題,非P類問題,NP問題,NPC問題

    • P問題:如果一個問題可以找到一個能在多項式的時間(n在底數上面)裡解決的演算法,那麼這個問題就是P問題。

    • NP問題:可以在多項式時間裡驗證一個解的問題。NP問題的另一個定義是,可以在多項式時間裡猜出一個解的問題。

    • NPC問題(NP-完全問題):

      存在這樣一個NP問題,所有的NP問題都可以規約化為它,換句話說,只要解決了這個問題,那麼所有的NP問題就都可以得到解決了。
      1. 他是一個NP問題
      2. 所有的NP問題都可以規約化得到它。
    • NP難問題,只滿足NPC的第二個特徵,而不滿足第一個特徵.

    P問題是一個NP問題,但是一個NP問題不一定是一個P問題。因為有NPC問題的存在,是的人們確信P問題 和NP問題不是相等的

    規約:一個問題A可以規約為問題B的含義是,可以用問題B的解法解決問題A。問題B的時間複雜度高於問題A的時間複雜度。

    我們所說的可約化問題指的是在多項時間內,找到一個變化法則,對於人一個程式A的輸入,都都能按照程式B的輸入,使兩個程式的輸出相同,那麼我們說問題A可以約化為問題B。

    總之,P屬於NP,NP屬於NPC。

    • NPC問題的例子有:
      • 邏輯電路問題:給定一個邏輯電路,問是否存在一種輸入使輸出為True.
      • 哈密頓迴路問題:
      • 旅行商問題