通識報告
TRANSCRIPT
計算機大小事- 通識報告 文化脈絡中的數學
資工 3B 楊翔雲
為什麼講這個主題 ?
• 計算機很快,但是為什麼會快 ?
• 身為資工系
從這裡下手
作業曾經要我們查查 “Grace Hopper“
也許又因為 12/09Google 搜尋頁上的 COBOL
單教授做的網頁
數形結合、數形變換 ?
• 用一個幾何的方法去解決一個代數問題
• 那令人痛恨的高中數學,又有多少是這種
• 真的有說的那麼簡單嗎 ?
再這樣說下去
• 越來越艱深的專業用語
舉個例子 – 最大平均值問題
找一段長度至少 L,平均價值最高的。
好比一張淋濕的紙,找一段質量最好剪下來
njiij
ix
nxf
j
ik 0),1
][
max()[],(
這問題並不難啊
• 任抓一個區間計算不就得了!
C(n, 2) = O(n2)
• 但是不夠快
一頁思路解決它、加快它• 平面上一點 (x, y)
• 找斜率最大的一條線
《浅谈数形结合思想在信息学竞赛中的应用》
y
x
Z
A
njiij
ix
nxf
j
ik 0),1
][
max()[],(
i
k
kxy
ix
0
][
有多快 ?
• O(n)
• 好比看完題目的時間,答案就算出來了。
• 能這樣考試有多好辦事
數形,告一段落。
• 說不定是誤會數形了
• 談點大家都明白的數學計算
根號 √
• √n 如何計算其值 ?
• 國中數學 - 十分逼近法、二分逼近法
• 直式開平方法 (中國直式開方法)
直式開平方法 (一閃而過)
951*951=904401
9, 5, 1----------
口->9 |90,44,01 + 口->9 81----- --------
18口->5 9,44,01+ 口->5 9,25
------ -------190口->1 19,01
+ 口->1 19,01--------- ------
1902 0
大學時期
牛頓迭代法
)('
)(1
n
n
nnxf
xfxx
《一個sqrt函數引發的血案》
• 這計算不能再快了!
• 讀到大學,
想必基礎計算已經達到頂峰了 ?
《一個sqrt函數引發的血案》
• 有人提出 1/√n 比 √n 更好算
• 只差一個倒數,倒回來不是更痛苦!
怎麼可能比較好算。
《一個sqrt函數引發的血案》
• 0x5f375a86 常數打哪來 ?
float InvSqrt(float x){
float xhalf = 0.5f*x;int i = *(int*)&x; // get bits for floating VALUEi = 0x5f375a86- (i>>1); // gives initial guess y0x = *(float*)&i; // convert bits BACK to floatx = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracyx = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracyx = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy
return 1/x;}
圖片來源 - 西乔的九卦
外星人程序
• 非常精簡
• 摸不著頭緒的流程
• 莫名其妙,中間夾雜了奇怪的不明物
• extra.外星人计算PI的程序精确到800位
更殘酷的事實
• √n 平常根本用不到
• 2 個 n 位數字相乘,算是更和藹可親吧 ?
看點最近發生過的事情
• 人腦計算機 (2013/11/04 Google Event)
• 印度的數學家 Shakuntala Devi (1929-2013)
看點最近發生過的事情
1980年(51 歲),僅花28秒就正確算出兩
個13位數字相乘的答案
「7 686 369 774 870 X 2 465 099 745 779 =?」
兩數相乘-直式乘法1234
x 5678__________
98728638_
7404__6170___
__________7006652
兩個 n 位數字相乘
• 使用 n2 次的乘法。
• O(n2)
兩數相乘 - more
1234x 5678
__________9872
8638_7404__
6170_____________
7006652兩個 n 位數字相乘
• D&C (分而治之) O(n1.59)• FFT (快速傅立葉) O(n lg n lglgn)
• O(n2) 有如 IE 望向 Chrome、FireFox 的感受
仔細一看這份 ppt
• 很多演算法 (Algorithm) 沒有時間說清楚
• Algorithm 從何時說起 ?
Thank You!
Blog Website: mypaper.pchome.com.tw/zerojudge
補充 – 匹配問題
• n 個男生、n 個女生,互相匹配各有好感度
• 求整體好感度總和最大化。
• 賽局理論 ?
• 在 Algorithm 中,還是悄悄地退出場好了。
補充 – 電腦亂數問題
• 為什麼樂透 (Lotto) 還是要用滾筒
公布號碼呢 ?
• 既然有規律,還要買電腦選號嗎 ?
• 為什麼遊戲中裝備總是衝不到 +10 ?其他人是怎麼辦到的 ?