0章
這本書講述的是另乙個知識產業的故事:計算機革命的動力:高效演算法。這是令人著迷的故事。請搬好凳子慢慢聽我講來!
有兩個想法改變了世界。
1448
年德國美因茲,乙個名叫
johann gutenberg
的金匠發現了把活動金屬塊這在一起來印刷書籍的方法。隨著知識不斷傳播,黑暗時代從此結束,人類思想被完全解放,科學和技術迎來光明,工業革命爆發。很多歷史學家把這歸功於活版印刷術,設想一下只有極少數人能夠閱讀知識這個世界會是什麼樣子!但還有一部分人這一切的關鍵不是活版印刷術而是運算法則。
今天我們已經習慣於使用阿拉伯數字來書寫數字,象
gutenberg
那樣把1448
寫成mcdxlviii
是非常容易被忘記
的(譯者注:
mcdxlviii
是羅馬數字,它代表
1448
,羅馬數字是歐洲在
阿拉伯數字
(印度數字)傳入之前使用的一種數碼,現在應用較少。它的產生晚於中國甲骨文中的數碼,更晚於埃及人的十進位數字。但是,它的產生標誌著一種古代文明的進步
)。你怎麼樣去對兩個羅馬數字進行相加呢?什麼是
mcdxlviii
+ dcccxii
呢?(再想想如何對它們相乘。)甚至象
gutenberg
這樣聰明的人大概也只會使用手指頭對兩個很小的數字進行加減運算。對於那些複雜的運算他也只能請教算盤專家。
十進位制系統,由印度發明於公元
600年左右,它是定量推理的革命。它僅僅使用了
10個符號,甚至可以很簡潔地寫出很大的數字,它使得後面演示的演算法基本步驟變得非常有效率。儘管如此,由於傳統語言的阻礙,在很長一段時間內它都不被人們所熟知。
對它的傳播產生重大影響的是一本教材,這本書由乙個居住於巴格達的阿拉伯人
al khwarizmi
寫於19
世紀。(
譯者注:
alkhwarizmi
(約780
~約850
),生於
khiva
,卒地不詳。回教的數學家,代數與算術的整理者,被譽為「代數之父」。
alkhwarizmi
離開了家鄉,前往當時的學問中心巴格達,服務於回教勢力極盛的
al-mamun
及al-mutaaiw
宮廷。他引進了印度數字,發展算術,後經
fibonacci
(1170
~1250
年)引介到歐洲,逐漸代替了歐洲原有的算板計算及羅馬的記數系統。歐洲人就把
alkhwarizmi
這個字拉丁化,稱用十進位印度阿拉伯數字來進行有規則可尋之計算的算術為
algorithm
。後來算術轉用其他的字(如
arithmetic
)來表示,而
algorithm
現在則成為電腦科學的行話
──電腦所賴以計算的「運算法則」。
)al khwarizmi
展示了數字的加、減、乘、除的基本方法,甚至展示了如何求平方根和π。這些方法精準、明確、有法可尋、具有效率、正確而且簡單,它們叫「運算法則」,在很多世紀之後,十進位制系統最終被歐州採用,而這個新名詞也是用於紀念這位哲人的。
從那以後,十進位制系統和它的數字運算法則在西方文明扮演了乙個十分重要的角色。它促進了科學和技術的發展;加速了工業和商業的進步。很久以後,隨著計算機的出現,它又明確地表達了位值系統中的位、單詞和演算法單元。科學家不斷發展出複雜演算法用於解決各類問題,並不斷發明新奇的應用軟體,最終改變了世界。(
譯者注:考慮到
al khwarizmi
沒見過電腦,所以有些地方把
algorithms
譯為運算法則而不是演算法
)
減法公式運算法則 加減法運算法則
專項複習 加減法運算法則 一 整數加減法 1.整數加法計算法則 相同數字對齊,從低位加起,哪一位上的數相加滿十,就向前一位進一。2.整數減法計算法則 相同數字對齊,從低位減起,哪一位上的數不夠減,就從它的前一位退一作十,和本位上的數合併在一起,再減。練習 列豎式計算 214 521 26 97 53...
集合運算法則與運算律
1 交換律 a b b a,a b b a 2 結合律 a b c a b c,a b c a b c 3 分配律 a b c a c b c a b c a c b c 4 同一律 a a,a u a,a u u,a 5 等冪律 a a a,a a a 6 吸收律 a a b a,a a b a ...
異或運算法則
1.a a 0 2.a 0 a 3.a b b a 4.a b c a b c a b c 5.d a b c 可以推出 a d b c.6.a b a b.7.若x是二進位制數0101,y是二進位制數1011 則x y 1110 只有在兩個比較的位不同時其結果是1,否則結果為0 即 兩個輸入相同時...