演算法導論(1)

2021-07-22 14:42:50 字數 688 閱讀 2582

迴圈不變式主要用來理解演算法的真確性;

有三個必須證明的性質:

初始化:迴圈的第一次迭代之前,它為真,

保持:如果迴圈的某次迭代之前它為真,那麼下次迭代之前它仍為真,

終止:在迴圈終止時,不變式為我們提供乙個有用的性質,該性質有助於證明演算法是真確的。

分析乙個演算法時,需要乙個實現技術的代價,包括描述所用資源及其代價的模型。

ram模型:

均勻的空間耗費:是指計算中曾經使用過的暫存器的總數。均勻的時間耗費是指自始自終被執行的指令和轉移的總條數。

對數耗費:此時空間耗費指計算中普通暫存器存過的自然數的最大長度之和。時間耗費則指被執行的每條指令的時間耗費之和。而一條指令的時間耗費則被認為與被運算的自然數的長度成正比的。

對於ram,還可以定義巡迴(虛擬的並行時間)。它是計算中周相的總數,而乙個周相則是 ram工作的乙個階段,在此階段中,沒有任何乙個普通暫存器先被寫入然後又被讀出。

通常把乙個程式的執行時間描述成其輸入規模的函式。

輸入規模的最佳概念依賴於研究的問題。

代價可以抽象為

執行時間的增長量級或增長率。

分治法:

(1)分解原問題為若干子問題,這些子問題是原問題的規模較小的例項;

(2)解決這些子問題,遞迴地求解各子問題。然而若子問題的規模足夠小,則直接求解。

(3)合併這些子問題的解成原問題的解。

演算法導論(1)

分治策略 1.遞迴式 用來描述遞迴求解的分治演算法的執行時間。求解遞迴式有三種方法 1 代入法,猜測乙個界,然後用數學歸納法證明這個界是正確的。2 遞迴樹法,將遞迴式轉換為一棵樹,利用遞迴式,將每層的代價以及深度都表示出來,節點代表不同層次產生的代價,最後利用邊界和技術求解。遞迴樹法常用來生成乙個好...

演算法導論學習1

第一章 演算法在計算中的作用 演算法的定義 簡單的說就是定義良好的計算過程,由輸入得到輸出!演算法的作用 應用非常廣泛,許多問題都涉及到演算法!演算法的重要性 是否擁有紮實的演算法知識和技術基礎,是區分真正熟練的程式設計師與新手的一項重要特徵。第二章 演算法入門 學習演算法的目的,不僅僅是很快理解演...

演算法導論筆記 1

略過 2.1 插入排序這種方法類似於數學歸納法,只不過,數學歸納法是無限迭代的,而該方法在for或者while語句停止時,歸納停止,運用這種方法,可以幫我們有條理的證明某演算法在for或while迴圈上正確完備的達到了我們的期望。2.2 分析演算法 演算法的複雜度通常有以下幾種情況 2.3 設計演算...