iT邦幫忙

鐵人檔案

2019 iT 邦幫忙鐵人賽
回列表
自我挑戰組

當傳統演算法遇到新的計算模型 系列

一些經典的傳統演算法,在資料量逐漸變大、一台電腦不足以負擔全部的計算量的時候,加入一些新的想法和新的觀察,便能夠提昇效率、解決問題。我想要試著分享一些不同的計算模型、以及在這些計算模型底下大家對傳統的演算法所作的修改。

目標,當然就是努力寫完 30 天份量的內容~( ̄▽ ̄)~!

參賽天數 21 天 | 共 21 篇文章 | 13 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11: 平行計算模型(四) Parallel Computation Model, Part 4 -- 最長嚴格遞增子序列

今天來跟大家聊聊動態規劃當中的一大經典:最長嚴格遞增子序列 Longest Increasing Subsequence:給你 n 個不相同的數字排成一列,對於...

2018-10-26 ‧ 由 卡卡恩 分享
DAY 12

Day 12: 平行計算模型(五)Parallel Computation Model, Part 5 -- 拓撲排序

圖論上的拓撲排序 今天我們來討論討論在圖(Graph)上面的平行演算法。一個圖,是由一些節點(通常被稱為 Vertex 或 Node)以及一些連接兩個點之間的邊...

2018-10-27 ‧ 由 卡卡恩 分享
DAY 13

Day 13: 平行計算模型(六)Parallel Computation Model, Part 6 -- 分而治之法

Work Optimality 前天我們得到一個 時間複雜度的最長嚴格遞增子序列演算法,其中 輸入序列長度、 LIS 的長度、 處理器的數量。但這個演算法在...

2018-10-28 ‧ 由 卡卡恩 分享
DAY 14

Day 14: 線上計算模型(一)Online Algorithms, Part 1

線上計算模型與先前介紹的幾種計算模型(隨機存取模型、外部存取模型、平行計算模型)不太一樣。線上計算模型主要聚焦在資料的變化,而非計算工具的改變。 Online...

2018-10-29 ‧ 由 卡卡恩 分享
DAY 15

Day 15: 線上計算模型(二)Online Algorithms, Part 2 -- 堆疊和佇列

今天來講講眾所皆知、經典到不能再經典的、除了陣列以外的線性資料結構代表:堆疊和佇列。堆疊 (Stack) 是一種先進後出的資料結構,它支援 push() 和 p...

2018-10-30 ‧ 由 卡卡恩 分享
DAY 16

Day 16: 線上計算模型(三)Online Algorithms, Part 3 -- 均攤分析

對於一個線上計算模型的問題來說,如果我們說每一個操作的均攤時間是 f(n),那麼對於任意「從頭開始」的 m 個操作來說,花費的總時間不能超過 。感覺有一點像是說...

2018-10-31 ‧ 由 卡卡恩 分享
DAY 17

Day 17: 伸展樹與配對堆——驚人的對應關係?

今天來試試看農場標題XD 在分析某個演算法或資料結構 A 的時候,如果我們能找到另一個相似的資料結構 B 來描述這個資料結構發生的事情,那麼分析效能的方法也可以...

2018-11-01 ‧ 由 卡卡恩 分享
DAY 18

Day 18: 線上計算模型(五)Online Algorithms, Part 5 -- 檔案排列問題

如果現在有一個大小為 2N 的空陣列,然後連續進行加入 N 筆資料的操作。這些資料都有一個主要的鍵值可以拿來比較大小。但是插入資料的順序並不固定。在資料逐漸一筆...

2018-11-02 ‧ 由 卡卡恩 分享
DAY 19

Day 19: 線剩計算模型(六)Online Algorithms, Part 6 -- 競爭力分析

如果能夠事先得知未來的所有 update,設計出對應的演算法,這就叫做「離線演算法」。顯然在能夠得知未來 update 的情形下,總是可能得出更有效率的演算法。...

2018-11-03 ‧ 由 卡卡恩 分享
DAY 20

Day 20: 隨機計算模型 Randomized Algorithms -- 快速排序法

為了最後十天的內容,我們今天先來聊一下隨機演算法。絕對不是拖台前,絕對不是,絕對(被拖走)。 假想一下,我們有真正的隨機位元產生器。每詢問一次這個產生器,拿到...

2018-11-04 ‧ 由 卡卡恩 分享