最近在做初賽題,發現總是考一些P和NP問題,完全不知道是什么
得不得分都隨緣了,所以還是簡單的了解了一下,有的說的可能不是很標准,單做初賽也肯定是夠了
我們要學習這三種問題,首先要對時間復雜度有一定的了解
一共分為兩個大類
第一種,多項式級
大體上是由n作為底數,例如O(n),O(logn),O(n^2),O(n^a),當然還有O(1)
第二種,非多項式級
由n作為指數,例如O(2^n),當還還有更高的O(n!)
First,P類問題
這是最好理解的,簡要來說就是OI比賽考的算法,時間復雜度為多項式級
例如最短路算法
Second,NP問題,不太好理解,我就籠統的說了
所有的可以解的問題都是NP問題,時間復雜度可以是多項式級,也可以是指數級
再多說一句,如何證明NP=P
什么意思呢,就是證明所有的可以解的問題多可以用都項式級時間復雜度來做(算法)
這個並不難,大家可以自己好好思考一下,我就不在這里說了
Last,NPC問題,首先我們要知道一個叫做約化的東西
簡而言之,就是可以用一個解法B,來替代解法A,(解法A對應問題A,解法B對應問題B,同時包含問題A)
就說成A問題約化為B問題(保證B問題的時間復雜度大於等於A問題的時間復雜度)
NPC問題就是找到一個問題,讓所有的NP問題都可以約化成它,讓這個問題的解可以做出所有的NP問題
這就是可以大概完成初賽的介紹了,希望對大家有幫助
再給一個講的很詳細的博客,如果你希望了解更深刻:http://www.matrix67.com/blog/archives/105