iT邦幫忙

鐵人檔案

2021 iThome 鐵人賽
回列表
自我挑戰組

30天不怕演算法:白話文版 系列

程式小學徒用生活案例 + 虛擬碼 + 程式碼看無所不在的演算法。

鐵人鍊成 | 共 30 篇文章 | 21 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21:貪婪演算法(greedy algorithm)

之前寫到過分治法,它並不是單一個演算法,而是許多演算法設計的基礎。同理,貪婪演算法也是一種設計模式。這類演算法的作法是,在每一個階段選擇當前最佳解,並以此達到整...

2021-10-04 ‧ 由 ramenkun 分享
DAY 22

Day 22:貪婪演算法(2)

上一回寫到大部分貪婪演算法並非永遠正確,那哪些問題適合用它來解呢? 最佳子結構 貪婪演算法既是在過程中不斷地尋求局部最佳解,換句話說,它也就適合解決有辦法透過局...

2021-10-05 ‧ 由 ramenkun 分享
DAY 23

Day 23:最小生成樹(MST)

貪婪演算法可以解決的一個問題就是找到一張圖中的最小生成樹(minimum spanning tree)。 樹、生成樹與最小生成樹 我們之前提到資料結構中的樹是有...

2021-10-06 ‧ 由 ramenkun 分享
DAY 24

Day 24:霍夫曼編碼(Huffman coding)

這回寫到的霍夫曼編碼是在Algorithms Illuminated Part 3: Greedy Algorithms and Dynamic Program...

2021-10-07 ‧ 由 ramenkun 分享
DAY 25

Day 25:動態規劃(dynamic programming)

動態規劃也是一種演算法設計模式,常用來解決最佳化問題。它的方法是將問題(通常是遞迴地)分解成子問題,再以子問題的最佳解組成原問題的最佳解。 這樣的描述看起來完全...

2021-10-08 ‧ 由 ramenkun 分享
DAY 26

Day 26:旅行推銷員問題(TSP)

之前在貪婪演算法的文章中有提到,現實生活中並不是所有問題都能用演算法快狠準地解決,有些困難的問題只有非常慢的解法。旅行推銷員問題(travelling sale...

2021-10-09 ‧ 由 ramenkun 分享
DAY 27

Day 27:碰到困難問題,演算法也救不了?

上一回我們說旅行推銷員問題(TSP)是一個NP困難問題,沒有快速的演算法可以解決。 那一個問題怎樣叫做「困難」,演算法又要多快才叫做快呢? 如果說所有運算問題有...

2021-10-10 ‧ 由 ramenkun 分享
DAY 28

Day 28:Diffie–Hellman演算法

一路到了鐵人賽最後階段,最後寫兩個完全不同但都蠻有趣的演算法。 我們之前寫到SHA家族演算法可以用來為資料加密,今天的演算法也跟加密有關,不過並不是直接用來改變...

2021-10-11 ‧ 由 ramenkun 分享
DAY 29

Day 29:K-近鄰演算法(k-nearest neighbors)

K-近鄰演算法是一個以已知的資料作為輸入,為資料進行分類的演算法,在日常生活中有非常多應用。 舉例來說,假設我們想要幫一些不知道是章魚還是烏賊的動物分類,我們依...

2021-10-12 ‧ 由 ramenkun 分享
DAY 30

Day 30:寫在不怕演算法之後

如果說演算法讓人以更好的方法解決問題,那麼對於以程式解決問題的人而言,演算法理當能讓我們寫出更好的程式。所以隨著鐵人賽來到了終點,經過了沐浴在演算法光輝中的一個...

2021-10-13 ‧ 由 ramenkun 分享