• 沒有找到結果。

上課補充 by howard41436 Complexity

N/A
N/A
Protected

Academic year: 2022

Share "上課補充 by howard41436 Complexity"

Copied!
28
0
0

加載中.... (立即查看全文)

全文

(1)

Complexity

上課補充 by howard41436

(2)

• 影片看了嗎

(3)

今天要學的東西

• 今天的課以理論為主,不太會寫到題目

• 但是對於複雜度的知識絕對是寫程式最重要的一環

• 大家都怎麼算複雜度?

(4)

今天要學的東西

• 今天的課以理論為主,不太會寫到題目

• 但是對於複雜度的知識絕對是寫程式最重要的一環

• 大家都怎麼算複雜度?

(5)

今天要學的東西

• 今天的課以理論為主,不太會寫到題目

• 但是對於複雜度的知識絕對是寫程式最重要的一環

• 大家都怎麼算複雜度?

• 沒有迴圈就是 ,一層迴圈就是 ,兩層就

(6)

今天要學的東西

• 今天的課以理論為主,不太會寫到題目

• 但是對於複雜度的知識絕對是寫程式最重要的一環

• 大家都怎麼算複雜度?

• 沒有迴圈就是 ,一層迴圈就是 ,兩層就

• 真的是如此嗎?

(7)

複雜度的正確算法

• 數迴圈有幾層的優缺點:

• 優點:大部分的程式我們大概都可以這樣算啦

• 缺點:

• 有些操作可能不是

• 無法計算遞迴的時間複雜度

• 可能會錯估均攤複雜度

(8)

複雜度的正確算法

• 首先,先來討論複雜度的正確算法

• 正式的數學定義手寫作業有,也會讓大家證一些東西

• 不過在 的時候,複雜度都這樣算就好了:

• 計算總共需要的操作數,留下量級最大那一項,常數去掉

(9)

案例

• 計算 的 次方模 :

• 沒有迴圈,所以

• 實測時間

(10)

案例

• 事實上,計算 的 次方時,通常是在 很小,或著是在做 或 為 浮點數的運算時,我們才會用內建的 函數,且將複雜度當作

• 當計算整數 的 次方時,內建的 函數似乎變成與 成線性時 間,複雜度應為

• 利用快速冪可以將複雜度降為

(11)

案例

• 估算遞迴的複雜度

• 這種自己呼叫自己的函式,沒有迴圈可以數,複雜度要怎麼算?

(12)

案例

• 估算遞迴的複雜度

• 這種自己呼叫自己的函式,沒有迴圈可以數,複雜度要怎麼算?

(13)

案例

• 模擬一個 ,有 種操作

• : 連續 掉 個物品,其中 的大小

• 每個操作的時間複雜度是多少?

• 執行 次操作的總複雜度是多少?

(14)

案例

• 模擬一個 ,有 種操作

• : 連續 掉 個物品,其中 的大小

• 每個操作的時間複雜度是多少?

• 執行 次操作的總複雜度是多少?

(15)

案例

• 模擬一個 ,有 種操作

• : 連續 掉 個物品,其中 的大小

• 每個操作的時間複雜度是多少?

• 執行 次操作的總複雜度是多少?

• 掉的物品數 進的物品數

• 均攤複雜度

(16)

複雜度的重要性

• 在競賽程式中,複雜度計算通常是為了讓我們判斷這個演算法 寫了會不會

• 如果把題目的變數限制代進複雜度後算出來 ,通常可行

• 如果算出來後 ,通常不可行 假設時限是 秒左右

• 這件事也告訴我們,除非複雜度在 左右,否則演算法的常數 不是很重要,如果複雜度相同挑最好寫的方式寫就好

(17)

計算理論中的複雜度類

(18)

計算理論中的複雜度類

對於答案是 的輸入,能夠輸出

對於答案是 的輸入,則不一定跑的完

(19)

計算理論中的複雜度類

對於答案是 的,能輸出 對於答案是 的,能輸出

此複雜度類的問題才有 演算法

(20)

計算理論中的複雜度類

常常聽到的 問題,並不是指非多項式 時間 裡面很多非多項式但 也不是 的問題

是指如果我們多給程式一個 , 就有辦法在多項式時間內得知答案是

(21)

計算理論中的複雜度類

這個就很直觀了,是指能夠在多項式時 間內判斷答案是 還是

一般我們能有效率解決的問題都是 問題

(22)

• 所有 問題都是 問題

• 我們可能會很想幫 和 之間的區域取一個 名字,這樣當我們發現一個問題很難,我

可就可以試圖去證明它屬於那個區域

(23)

• 所有 問題都是 問題

• 我們可能會很想幫 和 之間的區域取一個 名字,這樣當我們發現一個問題很難,我

可就可以試圖去證明它屬於那個區域

• 但目前我們不確定那個區域是否存在

• 也就是有可能

• 於是我們定義 問題裡最難的那些問題為

,如果有一天確定了 ,那 那些 的問題肯定不屬於

(24)

多項式時間複雜度

• 剛剛 和 都有提到的多項式時間,大家都知道多項式要有一個 變數,那麼題目裡的變數有時候是指個數,有時候是數字範圍,

有時候甚至超過一個變數,多項式時間是指哪個變數的多項式呢

• 印出 :

• 使用公式解

• 使用暴力法

• 上述哪些是多項式時間演算法,哪些不是呢?

(25)

多項式時間複雜度

• 剛剛 和 都有提到的多項式時間,大家都知道多項式要有一個 變數,那麼題目裡的變數有時候是指個數,有時候是數字範圍,

有時候甚至超過一個變數,多項式時間是指哪個變數的多項式呢

• 輸入總長度(字元數), ,的多項式

• 因此當你的複雜度裡面有代表數字大小而非個數的變數時,其實 不能算是多項式演算法,因為長度為 的輸入可以表示出約 大 小的數字。

• 這種看似是多項式時間的演算法,我們會稱其為 偽多項式時間 演算法。在題目有限制數字範圍不會太大時依然很有效率。

(26)

問題的重要性

• 當我們在歸類一個問題為 問題時,等於不在乎他的複雜度是 還是 之類的,只要是多項式時間就好。

• 這是因為多項式次數的差別可以透過運算速度隨著科技進步的 提升,或是更多更高級的運算資源來突破。但是非多項式時間的 問題我們基本上就是永遠沒辦法有效率的解決。

(27)

問題的重要性

• 當我們在歸類一個問題為 問題時,等於不在乎他的複雜度是 還是 之類的,只要是多項式時間就好。

• 這是因為多項式次數的差別可以透過運算速度隨著科技進步的 提升,或是更多更高級的運算資源來突破。但是非多項式時間的 問題我們基本上就是永遠沒辦法有效率的解決。

• 存在無法多項式時間解決的問題並不是壞事,例如這讓我們可以 用夠強的加密系統來讓解密無法有效率地進行

• 如果 會發生什麼事?

(28)

參考文獻

相關文件

我們一般所探究的不僅是科學及其經驗 方式的問題―我們所探究的是人的世

兒院門口,A 一直是孤單的 一個人生活著,直到上小學 的時候認識 BC 這兩位好朋 友,ABC 之間的關係就像家 人一樣,之間一點秘密也沒

這兩個問題所牽涉到的極限類型是一樣的,而我們特別把這 種割線斜率的極限稱為導數 (derivative)

 今年全國媒體、人民幾乎將所有關注焦點都放在新型冠狀病毒疫情,但我很希 望大家不要忽略了社會上其他的問題。博幼基金會主要是推動教育脫貧計畫,我 們在 33 個鄉鎮有

我一開始對這門課的目標只是想單純上課認真抄筆記、作業好好 寫、絕不早退外,還從未想過會上台報告。雖然我是老師點到要

這是針對特定人的特定事相來說,真正的問題在於:我們怎麼知道 誰是阿羅漢?在《雜阿含經》第 1148 經(大正 2,頁 305 下-頁 306

There would be no special value in "creative leaps," no fundamental gap between solving a problem and recognizing the solution once it's found. Everyone who could