五種演算法思想
Ⅰ 演算法的五大特性是什麼
輸入:在演算法中可以有零個或者多個輸入。
輸出:在演算法中至少有一個或者多個輸出。
有窮行:在執行有限的步驟之後,自動結束不會出現無限循環並且每一個步驟在可接受的時間內完成。
確定性:演算法的每一個步驟都具有確定的含義,不會出現二義性。
可行性:演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限的次數完成。
Ⅱ 什麼叫演算法演算法有哪幾種表示方法
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。計算機科學家往往將「演算法」一詞的含義限定為此類「符號演算法」。「演算法」概念的初步定義:一個演算法是解決一個問題的進程。而並不需要每次都發明一個解決方案。
已知的演算法有很多,例如「分治法」、「枚舉測試法」、「貪心演算法」、「隨機演算法」等。
(2)五種演算法思想擴展閱讀
演算法中的「分治法」
「分治法」是把一個復雜的問題拆分成兩個較為簡單的子問題,進而兩個子問題又可以分別拆分成另外兩個更簡單的子問題,以此類推。問題不斷被層層拆解。然後,子問題的解被逐層整合,構成了原問題的解。
高德納曾用過一個郵局分發信件的例子對「分治法」進行了解釋:信件根據不同城市區域被分進不同的袋子里;每個郵遞員負責投遞一個區域的信件,對應每棟樓,將自己負責的信件分裝進更小的袋子;每個大樓管理員再將小袋子里的信件分發給對應的公寓。
Ⅲ 什麼是演算法構造演算法的基本思想是什麼
1順序結構
按從上到下的順序進行
2選擇結構
根據條件作判斷,再決定執行哪一種操作的演算法結構
必須包含判斷框
3循環結構
Ⅳ 小學數學思想方法梳理
小學階段的數學思想方法
抽象、推理和模型是數學的基本思想方法,是最高層面的思想方法,在實踐中又派生出很多與具體內容結合的思想方法。
在小學階段,數學思想方法主要有符號化思想方法、類比思想方法、化歸思想方法、分類思想方法、方程思想方法、函數思想方法、集合思想方法、對應思想方法、數形結合思想方法、數學建模思想方法、代換思想方法、優化的思想方法、假設的思想方法、極限思想方法、統計思想方法。
(一)符號化思想方法
用符號化的語言(包括字母、數字、圖形和各種特定的符號)來描述數學內容,這就是符號思想方法。在實際教學中,符號化的數學思想方法經常使用。如數學中各種數量關系(時間、速度和路程 :S=vt ;反比例關系:xy=k );還有量的變化及量與量之間進行推導和演算,都是用小小的字母表示數,以符號的濃縮形式表達大量的信息。如定律(加法交換律: a + b =b + a ;乘法分配律 : a (b+c) = ab + ac )、公式(平行四邊形面積:S = ah ;圓柱的體積: V= sh );以及用符號表示圖形(如三角形ABC 有符號表示角:∠1、∠2、∠3;兩線段平行:AB∥CD ) ;還有其他的符號化思想方法的具體應用。通過這樣的教學,使學生感受到使用符號的簡潔性,逐步形成符號思想方法。
(二)、類比思想方法
無論是學習新知識,還是利用已有知識解決新問題,如果能夠把新知識和新問題與已有的相類似的知識進行類比,進而找到解決問題的方法,這樣就實現了知識和方法的正遷移。因此,要引導學生在學習數學的過程中善於利用類比思想方法,提高解決問題的能力。例如在數與代數中,與整數的運算順序和運算定律相類比,可以導出到小數、分數的運算順序和運算定律;還有與分數的基本性質相類比,可以導出比也具有類似的性質,並且可以推出它和分數一樣能夠進行化簡和運算。問題解決中數量關系相近的問題的類比(如修一座橋,已知工作總量和工作時間,求工作效率的問題。通過類比的方法,修一條公路、生產一批零件的問題等,用同樣方法可以解決);使用此方法最記憶猶新的就是在推導三角形的面積時,就類比了平行四邊形面積的推導方法,從而使得面積的推導更加輕松易懂,也讓學生體會到類比方法的好處,從而形成類比思想方法。而這兩種圖形面積的推導方法就是接下來我們要說的轉化的數學思想方法。
(三)、化歸思想方法
化歸思想方法就是轉化的思想方法。轉化思想方法是由一種形式變換成另一種形式的思想方法。在實際教學中,如幾何的等面積變換(例如:五年級上冊學習有關平行四邊形面積的推導過程時,我們把未知的知識轉化為已知的知識來進行探討,就是把平行四邊形的面積轉化為長方形的面積,在這個轉化的過程中,面積不變,只是形狀發生了變化,繼而通過長方形面積推導出平行四邊形的面積);還有在解方程中(例如:解方程的過程,利用一些等式的性質、積與因數的關系等,實際就是不斷把方程轉化為未知數前邊的系數是1的過程(x=a) );公式的變形中也常用到轉化的思想方法(例如:小數乘法和小數除法就是轉化為我們熟悉的整數乘法和整數除法來進行解答)。
(四)、分類思想方法
分類思想方法不是數學獨有的方法,就是以一定標准對某一對象進行分類。對數學對象的正確、合理分類取決於分類標準的正確、合理性,數學知識的分類有助於學生對知識的梳理和建構。在教學中,此思想方法經常用。如自然數的分類,若按能否被2整除分為奇數和偶數;若按約數的個數分為質數和合數。又例如我在教學《銳角和鈍角》時,就採用了此方法,讓學生給一堆凌亂的角進行分類,通過分類讓學生總結銳角和鈍角的特徵;還比如,在教學《認識圖形》時,通過讓學生對實際物品進行分類,從而抽象出各種圖形。
(五)、方程思想方法
方程思想方法的核心是將問題中未知量用數字以外的數學符號(常用x、y等字母)表示,根據數量關系之間的相等關系構建方程模型。方程思想方法體現了已知與未知數的對立統一。小學數學在學習方程之前的問題,都通過算術方法解決,在引入方程之後,小學數學中比較復雜的有關數量關系的問題,都可以通過方程解決,方程思想方法是小學思想方法的重要思想方法。例如用一元一次方程解決整數、小數、分數,百分數和比例等各種問題,還有用方程解決雞兔同籠問題等。
(六)、函數思想方法
設集合ab是兩個非空數集,如果按照某種確定的對立關系f,如果對於集合a中的任意一個數x,在集合b中都有唯一確定的數y和它的對應,那麼就稱y是x的函數,記作y=f(x)。其中x叫做自變數,x的取值范圍a叫做函數的定義域;y叫做函數或因變數,與x相對應的y的值叫做函數值,y的取值范圍b叫做值域。這是函數定義的。函數思想方法體現了運動變化的、普遍性的觀點。雖然在小學數學里沒有學習函數的概念,但是有函數思想方法的滲透。與函數最為接近的就是有積的變化規律(一個因數不變,積隨著另一個因數的變化而變化, 表示為Y=KX. 滲透正比例函數關系)、商的變化規律(除數不變,商隨著被除數的變化而變化,可表示為Y=XK,滲透正比例函數思想方法; 被除數不變, 商隨著除數的變化而變化, 可表示為K=YX, 滲透反比例函數思想方法)、還有六年級有關的正比例關系和反比例關系這塊內容就是函數思想方法最好的體現。
(七)、集合思想方法
把指定的具有某種性質的事物看作一個整體,就是一個集合(簡稱集),其中每個事物叫做該集合的元素(簡稱元)。集合思想方法就是運用集合的概念、邏輯語言、運算、圖形等來解決數學問題或非純數學問題的思想方法。例如在講約數和倍數是滲透集合的思想方法,而且講述公約數和公倍數時採用了交集的思想方法。還有關於四邊形、梯形、長方形、正方形、平行四邊形的分類也應用了集合的思想方法。
(八)、對應思想方法
對應是人們對兩個集合因素之間的聯系的一種思想方法,小學數學一般是一一對應的直觀圖表,並以此產生函數思想方法。如直線上的點<數軸>與表示具體的數量是一一對應的;還有在一年級上《比多少》的教學中就已經使用了一一對應的數學思想方法,將物品一一對應起來,進而更容易比出多少。通過此方法的應用,學生逐步感受到,將比較的東西一一對應起來會便於比較,解決問題比較方便。
(九)、數形結合思想方法
數和形是數學研究的兩個主要對象,數不離形,形不離數,一方面抽象的數學概念,復雜的數量關系,藉助圖形使之直觀化、形象化、簡單化。另一方面復雜的形體可以用簡單的數量關系表示。如教學《植樹問題》時,就採用了數形結合的數學思想方法,通過「圖」與「式」的結合繼而找出他們之間的數量關系;除此之外,在解應用題中常常藉助線段圖的直觀幫助分析數量關系(如六年級上冊探究「一個數除以分數」的算理時,可以藉助線段圖的方法找出他們之間的聯系,也是數形結合思想方法的應用)。
(十)、數學建模思想方法
數學中的各種概念、公式和理論都是由現實世界的原型抽象出來的,從這個意義上講,所有的數學知識都是刻畫現實世界的模型。數學建模就是建立數學模型來解決問題的思想方法。例如:小學數學五年級的計程車計費的問題。計程車起步價是8元,2千米以後按照每千米1.8元計算。小明去的地方離這里有6千米,需要多少計程車費?對待這個問題,學生難免會出現兩種情況:一是直接用1.8乘6,忽略起步價;二是知道起步價之內公里數先減掉,最後忘記加上起步價。在教育教學中,教師最好用清晰的線段圖示進行分析,讓學生慢慢建立一個有關這類問題的一個模型,用起步價加上計價路程的費用,就是等於一共要付的計程車費用。當學生建立好這樣的一個模型,對待類似有關問題,可以藉助這類模型用同樣的方法發散思維。如五年級上冊小數乘法的一個課後題就是關於上網收費的問題就可以按照這個數學模型來解決。再說另外一個數學建模的例子,就是在六年級上冊學習分數除法的有關知識時,通過學習分數除以整數的知識類比遷移到一個數除以分數的算理,然後再結合整數除法,進行一個有關除法運算的一個知識建構,建立一個針對這幾個類型都能使用的數學模型就是: A ÷ B = A × 1/B (B ≠ 0 ),也就是建立有關這類除法運算的萬能公式模型。
(十一)、代換思想方法
代換思想方法是方程解法的重要原理,解題時可將某個條件用別的條件進行代換。例如小明買了一套衣服,上衣和褲子總共504元,上衣價格是褲子價格的3倍,上衣和褲子的單價各是多少元?在解決問題中,用代換的思想方法,把上衣的價格用褲子的價格進行代換,這樣把求兩個未知量的問題轉化成求一個未知量的問題,這樣就簡單化了,問題迎刃而解了。
(十二)、優化思想方法
「優化思想方法」是數學思想方法的重要組成部分,也是構成一個人數學綜合素養的要素之一。優化思想方法就是在有限種或無限種可行方案(決策)中挑選最優的方案(決策)的思想方法,是一個很重要的數學思想方法。「優化思想方法」在小學數學教材中處處可見滲透痕跡,如計算教學中的「演算法優化」。例:教學中出現如下計算題:27+31=?,讓學生用自己喜歡的演算法進行計算,學生學到的方法有:
(1)筆演算法:7+1=8,20+30=50,8+50=58;
(2)湊整法:27+3+28=(27+3)+28=30+28=58;
(3)分解法:27+1+30=(27+1)+30=28+30=58;
(4)口演算法一:20+30=50,7+1=8,50+8=58;
(5) 口演算法二:27+30=57,57+1=58或31+20=51,51+7=58。
這些演算法,只要引導學生通過比較,很容易得到最優化的方法或基本的演算法,但許多教師在教學兩位數加減兩位數(口算)時,由於片面理解新課程理念倡導的「鼓勵演算法多樣化」理念,認為只要學生喜歡的演算法就應提倡,因而就忽視了演算法最優化的過程。本題教學中,最優化的演算法應該是口演算法二,有些學生已經想到,但教師沒有引導學生通過比較,得出這是最基本、最優化的演算法。實際上,在這五種演算法中,口演算法二的演算法,他的解題過程思考的步驟最少,只有兩步,口算教學的基本原則是盡量減少口算過程暗記次數,學生通過比較是很容易得出這一最優化的演算法的,同時,這一最優化的演算法對於接著學習「兩位數加兩位數進位加法(口算)」有著重要的鋪墊作用。因而數學計算教學鼓勵學生演算法多樣化,必須以演算法優化為基礎,必須通過引導學生比較演算法,從而優化演算法,使學生形成基本演算法,為今後學習和提高計算技能打下良好的基礎。
還有解決問題教學中的「策略優化」。例如:解決「雞兔同籠」的策略有很多,學生通過多種方法的探索,積累了解決問題的經驗,掌握了解決問題的不同方法。但各種方法之間也要突出重點,不能每種方法都泛泛而談。在眾多方法中,列表法、畫圖法都具有各自的局限性,基於這部分內容安排在五年級,因此在教學中應突出體現一般方法——假設法和代數法的教學。由於代數法是四年級已接觸學習過的方法,因此教學中教師以假設法為重中之重來體現,用列表法和圖示法幫助學生理解假設法的算理。這樣無形之中,體現了解決問題策略多樣化、多樣化中有優化的特點。
(十三)、假設思想方法
假設是先對題目中的已知條件或問題作出某種假設,然後按照題中的已知條件進行推算,根據數量出現的矛盾,加以適當調整,最後找到正確答案的一種思想方法。假設思想方法最典型的應用就是《雞兔同籠》問題了。學生學習完雞兔同籠,無不對假設的數學思想方法使用的相當熟練。
例如有3個頭,8隻腳。
假設全是雞
就有3*2=6隻腳
但是還剩2支腳
兔比雞多2隻腳 就是有1個兩只腳
所以有1隻兔子2隻雞。
假設全是兔
就有3*4=12支腳
剩下4隻
雞比兔多2隻腳 就是有2個兩支腳
所以有2隻雞 一隻兔子
(十四)、極限思想方法
極限是用以描述變數在一定的變化過程中的終極狀態的概念。極限的思想方法為建立微積分學提供了嚴格的理論基礎,極限的思想方法為數學的發展提供了有力的思想方法武器。極限思想方法是一種非常重要的思想方法,是形象思維向抽象思維轉化的紐帶。在小學階段滲透極限思想方法,不僅可以提高學生的抽象思維能力,而且有利於掌握數學的思想方法和方法。在小學教學中的在公式推倒過程中滲透極限思想方法。例如在教學「圓面積公式的推導」一課時,教師是這樣設計的。
師:我們過了一些圖形的面積計算公式,今天我們來研究圓的面積公式。你們有什麼辦法嗎?
生:可以把圓轉化為我們學過的圖形。
師:怎麼轉化?
生:分一分。
演示把圓平均分成了2分,把兩個半圓地拚起來,結果還是一個圓。
生:多分幾份試一試。
演示把一個圓分割為完全相同的小扇形,並試圖拚成正方形。從平均分成4個、8個、到16個……
師:你們有什麼發現?
生:分的份數越多,拼成的圖形就越接近長方形。
課件繼續演示把圓平均分成32個、64個……完全相同的小扇形。教師適時說「如果一直這樣分下去,拼出的結果會怎樣?
生:拼成的圖形就真的變成了長方形,因為邊越來越直了。
這個過程中從「分的份數越來越多」到「這樣一直分下去」的過程就是「無限」的過程,「圖形就真的變成了長方形」就是收斂的結果。學生經歷了從無限到極限的過程,感悟了極限思想方法的具大價值。學生有了這個基礎,到將來學習圓柱體積公式的推導時就會很自然地聯想到這種辦法,從而再一次加以利用解決問題,在不斷的應用中學生的極限思想方法會潛移默化地形成。
以上計算公式的推導過程,採用了「變曲為直」、「化圓為方」極限分割思路。在通過有限想像無限,根據圖形分割拼合的變化趨勢,想像它們的最終結果。既使學生掌握了計算公式,又萌發了無限逼近的極限思想方法。
(十五)、統計思想方法
小學數學中的統計圖表是一些基本的統計方法,例如:求平均數應用題是體現出數據處理的思想方法。(統計一個班的學生的身高、體重、年齡等這些參數,算出這些參數的平均數就是用統計的思想方法處理的。)
Ⅳ 數據結構有哪些基本演算法
數據結構是一門研究非數值計算的程序設計問題中的操作對象,以及它們之間的關系和操作等相關問題的學科。
可以理解為:程序設計 = 數據結構 + 演算法
數據結構演算法具有五個基本特徵:輸入、輸出、有窮性、確定性和可行性。
1、輸入:一個演算法具有零個或者多個輸出。以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件。後面一句話翻譯過來就是,如果一個演算法本身給出了初始條件,那麼可以沒有輸出。比如,列印一句話:NSLog(@"你最牛逼!");
2、輸出:演算法至少有一個輸出。也就是說,演算法一定要有輸出。輸出的形式可以是列印,也可以使返回一個值或者多個值等。也可以是顯示某些提示。
3、有窮性:演算法的執行步驟是有限的,演算法的執行時間也是有限的。
4、確定性:演算法的每個步驟都有確定的含義,不會出現二義性。
5、可行性:演算法是可用的,也就是能夠解決當前問題。
數據結果的基本演算法有:
1、圖搜索(廣度優先、深度優先)深度優先特別重要
2、排序
3、動態規劃
4、匹配演算法和網路流演算法
5、正則表達式和字元串匹配
6、三路劃分-快速排序
7、合並排序(更具擴展性,復雜度類似快速排序)
8、DF/BF 搜索 (要知道使用場景)
9、Prim / Kruskal (最小生成樹)
10、Dijkstra (最短路徑演算法)
11、選擇演算法
Ⅵ 配電網的五大演算法是什麼
(1)關聯表矩陣表示法,聯表矩陣,設備編號來分析設備的連接關系,得到網路的拓撲。其中建立了兩個表矩陣,N行13列的結點描述矩陣和M行16列的支路描述矩陣。
(2)網基矩陣表示法:該方法是基於圖論的表示方法。其基本思想是:配電網路是一個變結構的網路,網路由結點和弧構成。
(3)結點消去法:該方法即通過消去中間節點,降低鄰接矩陣的階數,減少計算量和計算冗餘度,提高計算速度。並且祥泰電氣提示這種演算法的基本思想是忽略掉中間結點,只分析對拓撲結構具有重要影響作用的結點之間的連通狀態。
(4)樹搜索法:在樹搜索中,將母線看作圖的頂點,將支路看作是圖的邊。通常對配電網來說,開關變位造成網路結構發生重大變化的情況是很少發生的。
(5)離散處理法:電力系統既含連續動態,也含離散動態。開關狀態變化引起電力系統網路結構變化,是一種典型的離散事件動態過程。
Ⅶ 什麼是演算法,都什麼,舉個例子,謝謝
根據我個人的理解:
演算法就是解決問題的具體的方法和步驟,所以具有以下性質:
1、有窮性: 一個演算法必須保證執行有限步之後結束(如果步驟無限,問題就無法解決)
2、確切性:步驟必須明確,說清楚做什麼。
3、輸入:即解決問題前我們所掌握的條件。
4、輸出:輸出即我們需要得到的答案。
5、可行性:邏輯不能錯誤,步驟必須有限,必須得到結果。
演算法通俗的講:就是解決問題的方法和步驟。在計算機發明之前便已經存在。只不過在計算機發明後,其應用變得更為廣泛。通過簡單的演算法,利用電腦的計算速度,可以讓問題變得簡單。
譬如:計算 1×2×3×4。。。。×999999999×1000000000
如果人為計算,可想而知,即使你用N卡車的紙張都很難計算出來,即使算出來了,也很難保證其准確性。
如果用VB演算法:
dim a as integer
a=1
For i =1 to 1000000000
a=a*i
next i
input a
就這樣,簡單的演算法,通過計算機強大的計算能力,問題就解決了。
關於這段演算法的解釋:i每乘一次,其數值都會增大1,一直乘到1000000000,這樣,就將從1到1000000000的每個數都乘了。而且每乘一次,就將結束賦給a,這樣,a就代表了前面的相乘的所有結果,一直乘到1000000000。最後得到的a,就是我們想要的。
〓以下是網路復制過來的,如果你有足夠耐心,可以參考一下。
演算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。
一個演算法應該具有以下五個重要的特徵:
1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。
計算機科學家尼克勞斯-沃思曾著過一本著名的書《數據結構十演算法= 程序》,可見演算法在計算機科學界與計算機應用界的地位。
[編輯本段]演算法的復雜度
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。
時間復雜度
演算法的時間復雜度是指演算法需要消耗的時間資源。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做
T(n)=Ο(f(n))
因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度(Asymptotic Time Complexity)。
空間復雜度
演算法的空間復雜度是指演算法需要消耗的空間資源。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
詳見網路詞條"演算法復雜度"
[編輯本段]演算法設計與分析的基本方法
1.遞推法
遞推法是利用問題本身所具有的一種遞推關系求問題解的一種方法。它把問題分成若干步,找出相鄰幾步的關系,從而達到目的,此方法稱為遞推法。
2.遞歸
遞歸指的是一個過程:函數不斷引用自身,直到引用的對象已知
3.窮舉搜索法
窮舉搜索法是對可能是解的眾多候選解按某種順序進行逐一枚舉和檢驗,並從眾找出那些符合要求的候選解作為問題的解。
4.貪婪法
貪婪法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
5.分治法
把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合並。
6.動態規劃法
動態規劃是一種在數學和計算機科學中使用的,用於求解包含重疊子問題的最優化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於計算機科學和工程領域。
7.迭代法
迭代是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。
[編輯本段]演算法分類
演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。
[編輯本段]舉例
經典的演算法有很多,如:"歐幾里德演算法"。
[編輯本段]演算法經典專著
目前市面上有許多論述演算法的書籍,其中最著名的便是《計算機程序設計藝術》(The Art Of Computer Programming) 以及《演算法導論》(Introction To Algorithms)。
[編輯本段]演算法的歷史
「演算法」即演演算法的大陸中文名稱出自《周髀算經》;而英文名稱Algorithm 來自於9世紀波斯數學家al-Khwarizmi,因為al-Khwarizmi在數學上提出了演算法這個概念。「演算法」原為"algorism",意思是阿拉伯數字的運演算法則,在18世紀演變為"algorithm"。歐幾里得演算法被人們認為是史上第一個演算法。 第一次編寫程序是Ada Byron於1842年為巴貝奇分析機編寫求解解伯努利方程的程序,因此Ada Byron被大多數人認為是世界上第一位程序員。因為查爾斯·巴貝奇(Charles Babbage)未能完成他的巴貝奇分析機,這個演算法未能在巴貝奇分析機上執行。 因為"well-defined procere"缺少數學上精確的定義,19世紀和20世紀早期的數學家、邏輯學家在定義演算法上出現了困難。20世紀的英國數學家圖靈提出了著名的圖靈論題,並提出一種假想的計算機的抽象模型,這個模型被稱為圖靈機。圖靈機的出現解決了演算法定義的難題,圖靈的思想對演算法的發展起到了重要作用的。
Ⅷ python演算法有哪些
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
一個演算法應該具有以下七個重要的特徵:
①有窮性(Finiteness):演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
②確切性(Definiteness):演算法的每一步驟必須有確切的定義;
③輸入項(Input):一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸 入是指演算法本身定出了初始條件;
④輸出項(Output):一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒 有輸出的演算法是毫無意義的;
⑤可行性(Effectiveness):演算法中執行的任何計算步驟都是可以被分解為基本的可執行 的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性);
⑥高效性(High efficiency):執行速度快,佔用資源少;
⑦健壯性(Robustness):對數據響應正確。
相關推薦:《Python基礎教程》
五種常見的Python演算法:
1、選擇排序
2、快速排序
3、二分查找
4、廣度優先搜索
5、貪婪演算法
Ⅸ 計算機演算法必須具備5個特性
計算機演算法是對計算機上執行的計算過程的具體描述。計算機演算法的五個特點:
1.有窮性。
2. 確定性。
3. 輸入性。
4. 輸出性。
5.有效性。
Ⅹ 演算法有幾種
但是可以分類。 以下是我查到的資料 演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。 演算法可以宏泛的分為三類: 有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。 有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。 無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。 演算法設計與分析的基本方法 1.遞推法 2.遞歸遞歸指的是一個過程:函數不斷引用自身,直到引用的對象已知 3.窮舉搜索法 窮舉搜索法是對可能是解的眾多候選解按某種順序進行逐一枚舉和檢驗,並從眾找出那些符合要求的候選解作為問題的解。 4.貪婪法貪婪法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。 5.分治法把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合並。 6.動態規劃法 動態規劃是一種在數學和計算機科學中使用的,用於求解包含重疊子問題的最優化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於計算機科學和工程領域。 7.迭代法迭代是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。