1. 程式人生 > >資料結構與演算法python(一)引言

資料結構與演算法python(一)引言

1.程式設計解決的兩個問題:

(1)處理實際問題中的各種物件及其相互關係,即對映到python能處理的某種結構

(2)實際問題的求解過程對映到一個計算過程,用程式實現該過程

2.解決一個實際問題而開發程式的工作氛圍四個階段:

(1)分析:弄清楚要求解的問題,給出儘可能嚴格的描述

(2)設計:資訊到資料表示的對映,規劃求解過程等

(3)編碼:使用python程式設計

(4)測試與維護:確認得到的程式能解決問題,以及為滿足某些實際目標或需要而修改程式,擴充功能等

3.問題求解例項:

(1)分析,構造問題的求解模型:將路口交叉分組問題抽象為節點分組問題,

再等價為地圖著色問題

(2)考慮求解演算法:法1,窮舉法,逐個枚舉出所有可能分組,但需指數時間

法2,貪心法






4.演算法

對於一個給定問題,用某種嚴格的方式描述一個求解過程,對該問題的每個勢力,該過程都能給出解,

這個描述就是解決該問題的一個演算法。

(1)一個問題,是具有相同性質的例項的集合

(2)可能用一個演算法統一地求解一個問題的(所有)例項,為此需要:

設計問題例項的表示方法,設計一個求解演算法,使用演算法就是把問題例項送給它,得到相應的解。

5.演算法是問題求解過程的精確描述,具有:

(1)有窮性:描述的有窮性,由有限條“指令”/“語句”構成

(2)能行性:指令(語句)簡單明確,科技鞋執行

(3)確定性:確定性演算法

(4)終止性:行為的有窮性

(5)輸入、輸出

6.演算法的描述:

自然語言、嚴格的形式化記法、虛擬碼

7.程式:是演算法的實現(具體程式語言的描述)

8.演算法的一些核心通用想法可稱為演算法設計模式,常見:

貪心法、分治法、回溯法(搜尋法)、動態規劃法、分支界限法

9.演算法的度量

(1)時間代價:T(n)

(2)空間代價:S(n)

(3)問題規模:n,問題例項基於某種規模度量,反應例項大小,如:影象大小

10.大    O 記法——演算法的複雜性,表示上界,還可考慮下界、上確界、下确界