1. 程式人生 > >關於ACM演算法複雜度及演算法運算次算

關於ACM演算法複雜度及演算法運算次算

複雜度計算出來後有什麼用?

估計程式能否在規定時間內處理題目指定規模的資料

ACM有時間限制1s

“規模”的舉例

1.給N個數排序  規模:N

2.判斷字串P是否是字串T的子串  規模:串的長度|P|和|T|

3.判斷一個整數是否屬於整數集合S  規模:|S| 要判斷多少次(查詢次數)

4.圖中某兩個點的最短路徑/求連通圖的最小生成樹 規模:頂點數 邊數

5.給一個整數集合S,問是否存在S的一個非空子集T,滿足T中所有元素的和為零  規模:|S|

演算法運算次算:

當代計算機1s內可做10^7左右次計算,配置好的機器可到k*10^7~10^8

在這個限制下時間複雜度一定的演算法存在能處理的規模上限

複雜度

數量級

最大規模

複雜度

數量級

最大規模

O(logN)

>>10^20

很大

O(N^3)

100

500

O(N^1/2)

10^12

10^14

O(N^4)

50

50

O(N)

10^6

10^7

O(2^N)

20

20

O(NlogN)

10^5

10^6

O(N!)

9

10

O(N^2)

1000

2500