算法筆記-1:算法、離散數學碎碎念

2021-02-24 汽車人的編程小屋

有的小夥伴在問,錯誤先生這幾天沒發文章,都去幹啥了?

答案是我在看一本書,名字叫《離散數學結構》

(《離散數學結構》第五版,Bernard Kolman等著,羅平譯,高等教育出版社)

為什麼要看這本書呢?繼上回我說完哈希算法之後,想為大家帶來更多算法和數據結構知識的介紹,於是我又登進了VisualGo的網站。

與看第一章「排序算法」的時候的驚為天人不同。「掩碼」和「鍊表」很像是為了某種特定需求定製的數據模式,不夠有趣。而「哈希表」則花了我好多時間各種查資料。等到了後面:「二叉堆」、「二叉搜索樹」、「圖」……我大多數時間都徘徊在「為什麼要這麼幹?」、「這玩意有什麼用?」、「這麼做好麻煩」的想法中。

之前也說到,VisualGo雖然將算法與數據結構動態可視化了。但是對於原理講得太少。不僅如此,刷題網站LeetCode出題也是直接用「鍊表」、 「樹」、 「圖」這樣的術語的。這逼得我不得不求助於號稱看懂就能秒殺90%程序猿的《算法導論》

(《算法導論》Thomas H Cormen等著,潘金貴 等譯,機械工業出版社)

看了一陣後我得出結論:我屬於那被秒殺的90%

看書的過程中,有一個問題還是避不開的。《算法導論》裡會引入各種數學概念術語。可是我對這些概念和術語缺乏基本的了解。比如說看二叉樹,我就在想這個「樹」是什麼?為什麼需要引入「樹」的概念。

網友告訴我:去看《離散數學結構》

果然,一切問題都是數學問題(沒錢也是個數學問題)。

離散數學是研究離散量結構及其相互關係的數學學科,其研究對象一般是有限個或可數個元素。隨著資訊時代的到來,工業革命時代以微積分為代表的連續數學佔主流的地位已經發生了變化,離散數學的重要性逐漸被人們認識。

《離散數學結構》這本書大家有時間還是推薦去看看,這裡放個電子版連結:

連結: https://pan.baidu.com/s/1mVFZehGEWuQvvtIZbdpDWg 

提取碼: uufj 

如果沒有時間看,也當個工具書放在手邊,學習算法的時候,遇到看不懂的概念的時候拿出來翻翻。

以下是這本書的目錄:

前三章基本是我們高中學過的內容,閱讀起來比較輕鬆。從第四章「關係與有向圖」開始難度就高起來了,但第四章必須讀懂不然後面全要撲街。我花了兩天時間認識到數學書畢竟是數學書,沒法兒速讀,只能一邊做筆記一邊慢慢讀和思考。

之前介紹了哈希算法,就算做算法筆記第0期吧。這是第一期,下期我們將介紹數據結構中的「二叉樹」。並著重介紹「樹」結構,敬請期待。

測試留言功能,對本文有什麼看法歡迎來留言哦:

留言區

相關焦點

  • 《算法導論(CLRS)》骨灰級筆記分享:目錄
    算法、數據結構都是程序設計中必不可少的精確工具。算法的重要性是每一個程式設計師都十分清楚的。程序設計當中解決相當一部分問題都會涉及各種各樣的科學計算,這需要程式設計師具有什麼樣的基礎呢?實際問題轉換為程序,要經過一個對問題抽象的過程,建立起完善的數學模型,只有這樣,我們才能建立一個設計良好的程序。從中我們不難看出計算數學在程序設計領域的重要性。
  • 高頻開關電源的離散PID算法
    在數字控制中,PID也是一種最基本的調節器形式,稱為離散PID算法。  模擬PID調節器的時域表示式為  常規的離散PID算法有兩種表示形式:即全量式和增量式。  把式(9-17)按著時間離散化,則得到第幾點的控制量為
  • 推薦 | 離散數學(第八版)
    譯 者 序      離散數學是伴隨著計算機科學技術一起成長與發展起來的一個研究離散量所具有的結構和相互關係的數學學科,是現代數學的一個重要分支。離散數學的研究包含了來自很多不同學科領域的知識,能夠將這些重要的思想組織並整理在一起,並對計算機科學的發展產生巨大的推動作用,確實是一件意義重大的事情。與任何數學知識的學習一樣,離散數學的學習可能也容易讓人感到枯燥和冗長。
  • 決策樹學習筆記(三):CART算法,決策樹總結
    m個數值就有m-1個切分點,分別使用每個切分點把連續數值離散劃分成兩類,將節點數據集按照劃分點分為D1和D2子集,然後計算每個劃分點下對應的基尼指數,對比所有基尼指數,選擇值最小的一個作為最終的特徵劃分。
  • 數學建模競賽前必須熟練掌握的十個算法
    數學建模比賽是本科生和研究生階段最重要的比賽之一,包括全國大學生數學建模競賽(俗稱「國賽」)和美國大學生數學建模競賽(俗稱「美賽」)。在這些比賽中取得好成績,不僅有助於保研、有助於找工作,更重要的是形成科學的思維模式。下面列舉了十大算法,在數學建模競賽中有著無比廣泛而重要的應用。
  • 【嵌入式經典算法介紹】DFT算法與FFT算法概述
    一、概述  在諧波分析儀中,我們常常提到的兩個詞語,就是DFT算法與FFT算法,那麼一款功率分析儀/諧波分析儀採用DFT算法或者FFT算法,用戶往往關注的是能否達到所要分析諧波次數的目的,而並未考慮兩種算法之間有什麼不同,採用相關算法的依據。
  • 初談區塊鏈技術背後的理論基石:組合數學(離散數學)
    註:廣義的組合數學就是離散數學;狹義的組合數學是離散數學除圖論、代數結構、數理邏輯等的部分。以上只是不同學者在叫法上的區別(在此不是我們關注的重點)。隨著計算機科學的日益發展,組合數學的重要性越發突出,這很好理解,因為計算機科學的核心內容就是使用算法處理離散的數據(010101)。
  • 聊聊改變世界的5大算法
    如今線性規劃的理論與算法均非常成熟,在實際問題和生產生活中的應用非常廣泛;線性規劃問題的誕生標誌著一個新的應用數學分支———數學規劃時代的到來。過去的 60 年中,數學規劃已經成為一門成熟的學科。其理論與方法被應用到經濟、 金融、 軍事、機器學習等各個領域。數學規劃領域內,其他重要分支的很多問題是在線性規劃理論與算法的基礎上建立起來的, 同時也是利用線性規劃的理論來解決和處理的。由此可見, 線性規劃問題在整個數學規劃和應用數學領域中佔有重要地位。
  • 【算法】決策樹與ID3算法
    小編邀請您,先思考:1 如何構建決策樹?
  • 機器學習算法之LASSO算法
    算法的適用場景: Lasso回歸是有監督機器學習的一種常見的回歸方法。算法的基本邏輯: 一般來說,有監督的機器學習都有以下形式的優化目標:其中第一部分就是Loss函數,第二部分正則化項。由此可以看出基本上所有的有監督機器學習,其核心思想無非就是正則化參數的同時最小化經驗誤差函數。
  • 算法學習筆記
    來源:http://t.cn/8skZJe2學習方法基本數據結構和算法海量數據處理算法設計思想算法問題選編開源項目中的算法推薦閱讀參考連結和學習網站算法虐我千百遍,我待算法如初戀這裡的內容是我學習算法過程的一些記錄
  • 神經網絡分析算法
    其中l為0-1範圍內的數,稱之為學習函數。其實以上函數應用的激活函數還是挺簡單的。有興趣的可以進行詳細的研究和公式的推算,咱這裡只是簡要分析,列舉算法特點。輸出層特點:輸出神經如果對於離散輸入屬性,輸出神經元通常代表可預測可預測屬性的單個預測狀態,其中包括缺失的Null值。如果挖掘模型包含一個或多個僅用於預測的屬性,算法將創建一個代表所有這些屬性的單一網絡,如果挖掘模型包含一個或多個同時用於輸入和預測的屬性,則該算法提供程序將為其中每個屬性構建一個網絡。
  • 數據挖掘算法:常用分類算法總結
    NBC算法NBC 模型發源於古典數學理論,有著堅實的數學基礎。該算法是基於條件獨立性假設的一種算法,當條件獨立性假設成立時,利用貝葉斯公式計算出其後驗概率,即該對象屬於某一類的概率,選擇具有最大後驗概率的類作為該對象所屬的類。
  • 小白入坑(Majorize-Minimize)MM算法?看這些就夠了!
    期望最大化(EM)算法可以被視為MM算法的特殊情況,在機器學習中經常用到。MM算法與EM算法有聯繫但是又有區別,在EM算法中通常涉及條件期望,而在MM算法中,凸性和不等式是主要焦點。file_no=20150628&year_id=2015&quarter_id=6&falg=1  MM的應用例子安利資源:MM算法超短中文版 https
  • 一起學人工智慧:推薦算法並不難,相似性是基礎,來看看相似算法
    我們把這個算法應用評估兩個商品是否相近當中,上述例子,A用戶跟B用戶最終的相似度為sqrt((4-3)^2 + (5-4.5)^2 + (3-4)^2) = 1.5, 很顯然,歐幾裡德越小,說明越相似。
  • 手把手教系列之快速傅立葉算法
    在數學中,傅立葉變換(Fourier transform FT )是一種數學變換,它將一個函數(通常是一個時間的函數,或一個信號)分解成它的組成頻率,例如用組成音符的音量和頻率表示一個音樂和弦。傅立葉變換指的是頻域表示和將頻域表示與時間函數相關聯的數學運算。
  • 數學女孩4:隨機算法
    內容由淺入深,數學講解部分十分精妙,被稱為「絕贊的數學科普書」。 《數學女孩4:隨機算法》以「隨機算法」為主題,從純粹的數學和電腦程式設計兩個角度對隨機算法進行了細緻的講解。內容涉及排列組合、概率、期望、線性法則、矩陣、順序查找算法、二分查找算法、冒泡排序算法和快速排序算法等。整本書一氣呵成,非常適合對數學和算法感興趣的初高中生以及成人閱讀。《數學女孩》系列第四彈!
  • 傅立葉變換算法(一)
    (有什麼問題,也懇請提出,或者批評指正)   ok, 本文,接下來,由傅立葉變換入手,後重點闡述離散傅立葉變換、快速傅立葉算法,到最後徹底實現FFT算法,全篇力求通俗易懂、閱讀順暢,教你徹底理解傅立葉變換算法。由於傅立葉變換,也稱傅立葉變換,下文所稱為傅立葉變換,同一個變換,不同叫法,讀者不必感到奇怪。
  • RSA加密算法數學原理和實現(筆記)
    RSA加密算法以前,讓我們先複習一下數學上的幾個基本概念,它們在後面的介紹中要用到:素數:素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。互質數公約數只有1的兩個數,叫做互質數。」這裡所說的「兩個數」是指自然數。
  • 案例實踐丨最優化算法的前世今生
    基於此,我們簡單根據它的約束條件以及目標函數變量類型將最優化問題分成兩大類,連續優化和離散優化。連續優化正如圖上所畫,線中間沒有斷點,而離散優化的變量取值,是一個不連續的記錄,就如同一開始講的郵差送信問題。