演算法導論3 1

2022-07-12 07:00:09 字數 3330 閱讀 7341

漸近記號用來刻畫演算法的執行時間,但是想要綜合性的覆蓋所有的輸入,需要不同的漸近記號;

\(\theta\)記號,確定乙個演算法的漸近上界和漸近下界,具體定義如下:

\(\theta(g(n))\)=

\),有\(0\leq\leq\leq\)}

此處\(f(n)\)代表該演算法的準確執行時間,包含所有的低階項、常量等細節;

\(\theta(g(n))\)代表最高項為\(g(n)\)的所有函式的集合;

這裡函式\(f(n)\)被它的上界\(c_1g(n)\)和它的下界\(c_2g(n)\)夾裹,也就是對所有的\(n\geq\),存在乙個常數\(c\),使得\(cf(n)\)=\(g(n)\),則稱\(g(n)\)是\(f(n)\)的乙個漸近緊確界

\(o\)記號,確定乙個演算法的漸近上界,具體定義如下:

\(o(g(n))\)=\),有\(0\leq\leq\)};

一般用來描述最壞執行時間

\(\omega\)記號,確定乙個演算法的漸近下界,具體定義如下:

\(\omega(g(n))\)=\),有\(0\leq\leq\)};

一般用來描述最好執行時間

\(o\)記號,確定乙個演算法的非漸近緊確的上界,形式化定義如下:

\(o(g(n))\)=\),有\(0\leq<\)};

\(\omega\)記號,確定乙個演算法的非漸近緊確的下界,形式化定義如下:

\(\omega(g(n))\)=\),有\(0\leq<\)};

假設\(f(n)\)和\(g(n)\)都是漸近非負函式,使用\(\theta\)記號的基本定義證明\(max(f(n), g(n))=\theta(f(n)+g(n))\)。

題目的意思是讓我們證明:

存在正常量\(c_1\)和\(c_2\)和\(n_0\),使得對所有的\(n\geq\),有\(0\leq+g(n))}\leq\leq})\)

因為這兩個函式都是非負的,所以不等式最左邊顯然成立;

此處令\(c_2=1\),就有\(max(f(n), g(n))\leq\)顯然成立;

然後令\(c_1=\frac\),就有\(\frac\leq\)顯然成立;

證畢;

證明:對任意實常量\(a\)和\(b\),其中\(b>0\),有

\((n+a)^b=\theta(n^b)\)

也就是讓我們證明:

存在正常量\(c_1\)、\(c_2\)和\(n_0\),使得對所有的\(n\geq\),有

\(0\leq\leq}\)

對於所有\(n\geq\),不等式的最左邊顯然成立;

解釋為什麼「演算法a的執行時間至少是\(o(n^2)\)」這一表述是無意義的。

這個問題的提問方式有問題,這裡的無意義應該寫成錯誤

這裡的至少,指明了下界;但是\(o(n^2)\)又指明了上界,兩者是衝突的,所以這一說法的錯誤的;

\(2^ = o(2^n)\)成立嗎?\(2^=o(2^n)\)成立嗎?

對於第乙個等式成立;

因為有\(n>0\),使得\(0\leq}\leq\)成立。

對於第二個等式不成立;

此處使用反證法,先假定\(2^=o(2^)\)成立,那麼根據定義必有:

\[2^ \leq c*2^

\]成立,也就是要求\(2^n\leq\),顯然可知不等式不可能成立,所以\(2^=o(2^n)\)不成立。

證明定理3.1

定理3.1 的內容是

對於任意兩個函式\(f(n)\)和\(g(n)\),當且僅當\(f(n)=o(g(n))\)和\(f(n)=\omega(g(n))\)時,\(f(n)=\theta(g(n))\)成立;

事實上,上述定理是顯然成立的,當乙個函式的漸近上界和漸近下界都確定了,那它的漸近確界也就確定了。

證明: 乙個演算法的執行時間為\(\theta(g(n))\)當且僅當其最壞執行時間為\(o(g(n))\),且其最好執行時間為\(\omega(g(n))\)。

事實上,這和上乙個問題是一致的,不在贅述。

證明: \(o(g(n))\bigcap\omega(g(n))\)為空集

根據定義有以下不等式成立:

\[\begin

& 0\leq<, &o(g(n)) \\

&0\leq<, &\omega(g(n))

\end

\]推斷有以下式子成立:

\[\begin

& g(n)>}, & o(g(n)) \\

& g(n)<}, & \omega(g(n))

\end

\]上述不等式,顯然不能同時成立,也就是這兩個集合的交集為空集,證畢;

可以擴充套件我們的記號到有兩個引數\(n\)和\(m\)的情形,其中的\(n\)和\(m\)可以按不同的速率獨立地趨於無窮。對於給定的函式\(g(n, m)\),用\(o(g(n,m))\)來表示以下函式集:

\[\begin

& o(g(n,m))=\,\\

& 或m\geq,有0\leq\leq。

\end

\]請給出\(\omega(g(n,m))\)和\(\theta(g(n,m))\)相應的定義。

\(\omega(g(n,m))\)定義如下:

\[\begin

& \omega(g(n,m))=\,\\

& 或m\geq,有0\leq\leq。

\end

\]\(\theta(g(n,m))\)定義如下:

\[\begin

& \theta(g(n,m))=\,\\

& 或m\geq,有c_1\leq\leq。

\end

\]

演算法導論 隨機演算法

一.概率分布 對於有些問題本身是屬於概率問題,如僱傭問題 對於此類問題,我們需要利用概率分析來得到演算法的執行時間,有時也用來分析其他的量。例如,僱傭問題中的費用問題也需要結合概率分析來計算得到。為了使用概率分析,我們必須使用或者假設已知關於輸入的概率分布,然後通過分析該演算法計算出平均情況下的執行...

《演算法導論》 演算法導論2 2 1插入排序

2.1 插入排序。我們分析的第乙個演算法是插入排序演算法,輸入 n個數 a1,a2,a3,a4,a5,a6,a7 an 輸出 序列的乙個排列 即重新排序 a1 a2 a3 使a1 a2 a3 插入排序演算法的偽 是以乙個過程的形式給出的,稱為insertion sort,它的引數是乙個陣列。包括了n...

演算法導論目錄

出版者的話 專家指導委員會 譯者序前言 第一部分 基礎知識 引言 第1章 演算法在計算中的作用 1.1 演算法 1.2 作為一種技術的演算法 第2章 演算法入門 2.1 插入排序 2.2 演算法分析 2.3 演算法設計 2.3.1 分治法 2.3.2 分治法分析 第3章 函式的增長 3.1 漸近記號...