演算法時間複雜度為O(n )的是什麼演算法?

時間 2021-05-06 06:31:12

1樓:子正

O(n!)的演算法不稱其為演算法,它意味著這個問題尚未解決。n稍微大一點,就會耗盡CPU的算力。

它比不斷摺紙、圍棋盤上擺大公尺得到的數更大。這種「演算法」是進行演算法改進的物件。演算法老師沒有花力氣說明這種演算法的荒謬之處倒是個很不可思議的事情。

n!是個很大的數,你可以用windows自帶的計算器算一下1000的階乘,看看它有幾個0。超級計算機算到世界末日也無法算出規模為n=1000的問題。

我們現在看到的大多數演算法,很多都是O(n!)之類問題的優化形式,應該感謝這些演算法研製者。我相信現在一些公司,仍然會不斷遭遇這類O(n!

)的問題,需要足夠好的數學家們來優化演算法,進行簡化。

2樓:

print(1

)注意,你說的是 O(n!)

假如是全排列順便給個 python 的全排列

from

itertools

import

permutations

print(*

permutations

(range(5

)),sep='

\n')如何用計算機寫出時間複雜度為 O (n!) 的演算法? - 醬紫君的回答 - 知乎 https://www.

3樓:程式小猿

沒有重複項的序列求全排列理論上就是O(n!)吧。

不過實際情況還需要很多額外的效能開銷,我覺得應該算O(n*n!)的複雜度。

剛才隨手寫了一發,測試了一下。

當然我這個可以優化,不過這種回溯法實現再怎麼調優,也應該比O(n!)要慢。

STL庫里的演算法時間複雜度和空間複雜度都是最佳的嗎?

Alinshans 肯定不都是最佳的。但肯定比99 的人寫的都要好。競賽中不一定要求時間複雜度最小,但是基本上 嚴格一點的 要求達到乙個級別。比如複雜度能O nlogn 的你不要搞O n STL中的演算法肯定能確保你能達到,如果你的寫法沒有問題,但死活超時了 卡常數 我覺得題目出得有問題。另,你知道...

演算法時間複雜度中的PSPACE,coNP complete,DP complete的含義。

A complete 的定義對於所有 class 都一樣,就是說 class A NP 中的所有問題都可以規約到某個特定問題 3 SAT 想看書去找 Sipser,或者 Arora Barak,或者 Goldreich,或者 Papadimitriou.至於 PSPACE 和 coNP,這兩個算常見...

edmonds karp 演算法的複雜度?

證明 Edmonds Karp演算法時間複雜度為 閱讀如下詳細證明的前提是你已經完全掌握了EK演算法的步驟。證明開始 參考了網上找到的 證明1 證明2 a EK演算法中一次BFS尋找增廣路的時間複雜度為 每次BFS增廣,在增廣路上的未飽和邊會多出一條反向邊,故增廣操作導致的邊數增長不會使總邊數超過原...