日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数学预备知识

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学预备知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????研究算法的目的就是以設計時間復雜度更小的算法,但要想對算法進行優化必須學會計算每一個步驟的算法大小,進而從中尋找可以縮減的位置。為了計算每一步,有必要掌握一些基本的數學知識,有句話說過:數學水平在一定程度上決定了計算機的高度。

??????對于大多數算法而言,都應用到了for/while循環。在循環不斷進行的過程中,每次運行循環體內基本操作的執行次數都是不同的。想要將每一次的結果相加,就相當于是不規則數的相加,也就是“求和”。同時,大多數算法使用遞歸方法,雖然遞歸有很多隱形的壞處,但是表達十分清晰,也常常被使用。給定遞歸式,尋找到所需總時間和輸入N的關系,也是十分重要的。對數學能力的要求也是非常高的。下面從上文提及的兩方面展開,分別談論所需要的一些數學知識。

2.1集合,關系和函數

?????? 集合是數學中基礎的概念,在集合之上定義了很多集合的操作(交,并,補)。以集合為基礎設計的算法也有很多,例如:并查集(克魯斯卡爾算法求解最小生成樹)等等。關系是以集合依據的,多說一個在集合上的關系。關系的內容也有很多,例如等價關系,傳遞關系等等。相對詳細的內容可以在離散數學中學到。函數可以理解成一種二元關系(x和y之間),一定是每一個x,有一個y與之對應,否則不可以被稱作函數。根據像和原像的關系,函數還可以被分為單射(所有x都有對應且對應不同的y),滿射(所有的y都具有原像),同時滿足單射和滿射的叫做雙射。

2.2證明

??????證明是算法中很常見的考察方法,例如課后題中就包括很多時間復雜度的證明。在學習算法之前,我們已經學習了離散數學。我認為離散數學的一個教學目標就是教如何使用符號做證明,使證明過程更清晰易懂。證明的方法大概可以分成五種:

??????1)直接證明法:從現有條件出發,使用定理或者公理,最終得出想要的結論。直接證明也有兩種方向,可以從條件證結論,也可以從結論證條件。要求過程中的每一個步驟都必須是充要條件。

??????2)間接證明法:證明原來命題的逆否命題成立。或者從中間出發,向兩頭延伸,最終得到條件和結論。

??????3)反證法:是一種常用的證明方法,當結論有明顯的一個方向的傾向時可以使用反證法。假設結論不成立,推導和條件之間的矛盾。

??????4) 反例證明法:反例證明法往往用于結論已經明確。舉出一個錯誤不滿足明確的關系,即可證明。大多數情況下,反例很難被列舉出來。

??????5)數學歸納法:數學歸納法常用于正確結論已經知道,但是需要詳細的過程進行推導。具有相對固定的模板,已知n=1時成立,假設n=k時成立,通過n=k式子的變形推導出n=k+1也同樣成立。

2.3對數

??????在算法分析中很多時間復雜度是和和㏒n有關的(在計算機中所有的對數函數的都是以2為底的),關于對數有計算公式如下:

2.4頂函數與底函數

??????在算法中常常會對整數做除以2的操作,但此時如果不知道整數的奇偶性,就會出現小數。為了進一步明確范圍,會使用頂函數和底函數。頂函數是大于等于x的最小整數,底函數是小于等于x的最大整數。
??????關于頂函數和底函數有以下重要等式:

2.5階乘和二項式系數

??????階乘來源于排列,表示第一個位置有多少種排法,進而第二個位置有多少種排法,依此類推。常用大寫P表示,階乘的時間復雜度是很高的,經常的表示公式為:

??????二項式系數來源于組合。組合即不考慮順序,是階乘的推廣。重要的是組合數公式:

2.6鴿巢原理

??????鴿巢定理講的是一定分配的必然性,比如十一只鴿子進入十個洞穴,必然至少有兩個鴿子在其中一個洞穴。從至多至少兩個角度,可得如下公式:

2.7和式

??????和式有以下公式:

??????當被加式子不再只取整數,而變成一個函數時,需要使用積分的知識求解。可以使用不等式來確定上下界,當左右兩式達到相同的數量級時,就證明了時間復雜度。

2.8遞推關系:

??????遞推關系用于計算遞歸函數的時間復雜度,分為以下幾類:
??????對于齊次和非齊次的定義是由如下式子決定的:

??????1)線性齊次遞推式(實例見書P53頁):

??????2)非齊次遞推關系(實例見書P55頁):

??????3)分治遞推關系:
??????在算法中,對很多大規模都會采用分治思想,將時間復雜度不斷細分再將更小規模整合,其中二分法是最常見的。

??????分治遞推關系主要有三種方法求解:

????????(1)展開遞推式(具體見書P57):
???????? 將遞推式不斷展開,直到某已知項,多為f(1)/f(0)。但展開遞推式存在若干缺點:有些情況下耗時,呆板,也容易出現計算錯誤。

????????(2)代入法(具體見書P59)
????????這種方法,通常用來證明上下界,也可證明精確解。需要猜想一個解,結合數學歸納法求出所設的參數值。對于猜想的解是依靠經驗或者之前學過的一些定理或者推論。

????????(3)更換變元(具體見書P62)
????????更換變元可以是用指數函數代替原來的分子分母式,盡力轉化成前面齊次的形式在進行求解。

總結

以上是生活随笔為你收集整理的数学预备知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。