之前寫到過分治法,它並不是單一個演算法,而是許多演算法設計的基礎。同理,貪婪演算法也是一種設計模式。這類演算法的作法是,在每一個階段選擇當前最佳解,並以此達到整...
上一回寫到大部分貪婪演算法並非永遠正確,那哪些問題適合用它來解呢? 最佳子結構 貪婪演算法既是在過程中不斷地尋求局部最佳解,換句話說,它也就適合解決有辦法透過局...
貪婪演算法可以解決的一個問題就是找到一張圖中的最小生成樹(minimum spanning tree)。 樹、生成樹與最小生成樹 我們之前提到資料結構中的樹是有...
這回寫到的霍夫曼編碼是在Algorithms Illuminated Part 3: Greedy Algorithms and Dynamic Program...
動態規劃也是一種演算法設計模式,常用來解決最佳化問題。它的方法是將問題(通常是遞迴地)分解成子問題,再以子問題的最佳解組成原問題的最佳解。 這樣的描述看起來完全...
之前在貪婪演算法的文章中有提到,現實生活中並不是所有問題都能用演算法快狠準地解決,有些困難的問題只有非常慢的解法。旅行推銷員問題(travelling sale...
上一回我們說旅行推銷員問題(TSP)是一個NP困難問題,沒有快速的演算法可以解決。 那一個問題怎樣叫做「困難」,演算法又要多快才叫做快呢? 如果說所有運算問題有...
一路到了鐵人賽最後階段,最後寫兩個完全不同但都蠻有趣的演算法。 我們之前寫到SHA家族演算法可以用來為資料加密,今天的演算法也跟加密有關,不過並不是直接用來改變...
K-近鄰演算法是一個以已知的資料作為輸入,為資料進行分類的演算法,在日常生活中有非常多應用。 舉例來說,假設我們想要幫一些不知道是章魚還是烏賊的動物分類,我們依...
如果說演算法讓人以更好的方法解決問題,那麼對於以程式解決問題的人而言,演算法理當能讓我們寫出更好的程式。所以隨著鐵人賽來到了終點,經過了沐浴在演算法光輝中的一個...