如何度量複雜度

2022-06-27 01:39:14 字數 1144 閱讀 1897

我們以度量複雜度的3種方法作為本文的結束:

/ 用邏輯深度度量複雜性為了更加接近我們對複雜性的直覺,數學家班尼特在20世紀80年代初提出了邏輯深度(logical depth)的概念。

乙個事物的邏輯深度是對構造這個事物的困難程度的度量。

高度有序的a、c、g、t序列顯然很容易構造。

同樣,如果我要你給我乙個a、c、g、t的隨機序列,你也很容易就可以做出來,用個硬幣或骰子就可以了。

但如果我要你給我乙個能夠生成可發育的生物的dna序列,如果不偷看真正的基因組序列,別說你,任何乙個生物學家都會覺得很難辦到。

用班尼特的話說,「有邏輯深度的事物……從根本上必須是長時間計算或漫長動力過程的產物,否則就不可能產生。」

/ 用演算法資訊量度量複雜性物理學家蓋爾曼(murray gell-mann)提出了一種稱為「有效複雜性(effective complexity)」的相關度量,更符合我們對複雜性的直觀認識。

蓋爾曼認為任何事物都是規則性和隨機性的組合。

例如,序列1就有非常簡單的規則性:重複的ac模式。序列2則沒有規則性,因為它是隨機產生的。與之相比,生物的dna則有一些規則性(例如,基因組不同部分之間存在重要關聯),也有一些隨機性(例如dna中的垃圾)。

序列2處於另乙個極端,因為是隨機的,所以沒有規則性。因而也不需要資訊來描述,雖然序列本身的演算法資訊量是最大的,序列規則性的演算法資訊量——其有效複雜性——卻為零。

簡而言之,就如我們希望的,最有序和最隨機的事物有效複雜性很低。

/ 用統計複雜性度量複雜性我們也可以用統計複雜性(statistical complexity)的量,度量用來**系統將來的統計行為所需的系統過去行為的最小資訊量。

例如,序列1的資訊源模型可以很簡單:「重複ac」;因此其統計複雜性很低。

然而,與熵或演算法資訊量不同,對於產生序列2的資訊源也可以有很簡單的模型:「隨機選擇a、c、g或t。」這是因為統計複雜性模型允許包含隨機選擇。

統計複雜性的度量值是**系統行為的最簡單模型的資訊量。

與有效複雜性一樣,對於高度有序和隨機的系統,統計複雜性的值都很低,介於兩者之間的系統則具有高複雜性,與我們的直覺相符。

演算法效率度量 時間複雜度和空間複雜度

演算法效率的度量是通過時間複雜度和空間複雜度來描述的。乙個語句的頻度是指該語句在演算法中被重複執行的次數。演算法中所有語句的頻度之和記作t n 它是該演算法問題規模n的函式,時間複雜度主要分析t n 的數量級。演算法中的基本運算 最深層迴圈內的語句 的頻度與t n 同數量級,所以通常釆用演算法中基本...

演算法度量方法 時間複雜度及空間複雜度

以前對這方面是一知半解,終於在一次大眾點評的筆試中受到刺激。步入正題 什麼樣的演算法才是高效的演算法?想必所有的人都這麼想過 用最少的錢,花做最短的時間,買到最多的東西。同樣,用最少的記憶體空間,花最短的時間解決問題的演算法就是。因此我們考慮用時間和空間來衡量乙個演算法的效率。首先我們來考慮如何利用...

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...