有的小夥伴在問,錯誤先生這幾天沒發文章,都去幹啥了?
答案是我在看一本書,名字叫《離散數學結構》
(《離散數學結構》第五版,Bernard Kolman等著,羅平譯,高等教育出版社)
為什麼要看這本書呢?繼上回我說完哈希算法之後,想為大家帶來更多算法和數據結構知識的介紹,於是我又登進了VisualGo的網站。
與看第一章「排序算法」的時候的驚為天人不同。「掩碼」和「鍊表」很像是為了某種特定需求定製的數據模式,不夠有趣。而「哈希表」則花了我好多時間各種查資料。等到了後面:「二叉堆」、「二叉搜索樹」、「圖」……我大多數時間都徘徊在「為什麼要這麼幹?」、「這玩意有什麼用?」、「這麼做好麻煩」的想法中。
之前也說到,VisualGo雖然將算法與數據結構動態可視化了。但是對於原理講得太少。不僅如此,刷題網站LeetCode出題也是直接用「鍊表」、 「樹」、 「圖」這樣的術語的。這逼得我不得不求助於號稱看懂就能秒殺90%程序猿的《算法導論》
(《算法導論》Thomas H Cormen等著,潘金貴 等譯,機械工業出版社)
看了一陣後我得出結論:我屬於那被秒殺的90%
看書的過程中,有一個問題還是避不開的。《算法導論》裡會引入各種數學概念術語。可是我對這些概念和術語缺乏基本的了解。比如說看二叉樹,我就在想這個「樹」是什麼?為什麼需要引入「樹」的概念。
網友告訴我:去看《離散數學結構》
果然,一切問題都是數學問題(沒錢也是個數學問題)。
離散數學是研究離散量的結構及其相互關係的數學學科,其研究對象一般是有限個或可數個元素。隨著資訊時代的到來,工業革命時代以微積分為代表的連續數學佔主流的地位已經發生了變化,離散數學的重要性逐漸被人們認識。
《離散數學結構》這本書大家有時間還是推薦去看看,這裡放個電子版連結:
連結: https://pan.baidu.com/s/1mVFZehGEWuQvvtIZbdpDWg
提取碼: uufj
如果沒有時間看,也當個工具書放在手邊,學習算法的時候,遇到看不懂的概念的時候拿出來翻翻。
以下是這本書的目錄:
前三章基本是我們高中學過的內容,閱讀起來比較輕鬆。從第四章「關係與有向圖」開始難度就高起來了,但第四章必須讀懂不然後面全要撲街。我花了兩天時間認識到數學書畢竟是數學書,沒法兒速讀,只能一邊做筆記一邊慢慢讀和思考。
之前介紹了哈希算法,就算做算法筆記第0期吧。這是第一期,下期我們將介紹數據結構中的「二叉樹」。並著重介紹「樹」結構,敬請期待。
測試留言功能,對本文有什麼看法歡迎來留言哦:
留言區