⑴ 簡單演算法的概念,並舉例說明它在程序中的作用。
1 什麼叫演算法
演算法(Algorithm)是解題的步驟,可以把演算法定義成解一確定類問題的任意一種特殊的方法。在計算機科學中,演算法要用計算機演算法語言描述,演算法代表用計算機解一類問題的精確、有效的方法。演算法+數據結構=程序,求解一個給定的可計算或可解的問題,不同的人可以編寫出不同的程序,來解決同一個問題,這里存在兩個問題:一是與計算方法密切相關的演算法問題;二是程序設計的技術問題。演算法和程序之間存在密切的關系。
演算法是一組有窮的規則,它們規定了解決某一特定類型問題的一系列運算,是對解題方案的准確與完整的描述。制定一個演算法,一般要經過設計、確認、分析、編碼、測試、調試、計時等階段。
對演算法的學習包括五個方面的內容:① 設計演算法。演算法設計工作是不可能完全自動化的,應學習了解已經被實踐證明是有用的一些基本的演算法設計方法,這些基本的設計方法不僅適用於計算機科學,而且適用於電氣工程、運籌學等領域;② 表示演算法。描述演算法的方法有多種形式,例如自然語言和演算法語言,各自有適用的環境和特點;③確認演算法。演算法確認的目的是使人們確信這一演算法能夠正確無誤地工作,即該演算法具有可計算性。正確的演算法用計算機演算法語言描述,構成計算機程序,計算機程序在計算機上運行,得到演算法運算的結果;④ 分析演算法。演算法分析是對一個演算法需要多少計算時間和存儲空間作定量的分析。分析演算法可以預測這一演算法適合在什麼樣的環境中有效地運行,對解決同一問題的不同演算法的有效性作出比較;⑤ 驗證演算法。用計算機語言描述的演算法是否可計算、有效合理,須對程序進行測試,測試程序的工作由調試和作時空分布圖組成。
2、演算法的特性
演算法的特性包括:① 確定性。演算法的每一種運算必須有確定的意義,該種運算應執行何種動作應無二義性,目的明確;② 能行性。要求演算法中有待實現的運算都是基本的,每種運算至少在原理上能由人用紙和筆在有限的時間內完成;③ 輸入。一個演算法有0個或多個輸入,在演算法運算開始之前給出演算法所需數據的初值,這些輸入取自特定的對象集合;④ 輸出。作為演算法運算的結果,一個演算法產生一個或多個輸出,輸出是同輸入有某種特定關系的量;⑤ 有窮性。一個演算法總是在執行了有窮步的運算後終止,即該演算法是可達的。
滿足前四個特性的一組規則不能稱為演算法,只能稱為計算過程,操作系統是計算過程的一個例子,操作系統用來管理計算機資源,控製作業的運行,沒有作業運行時,計算過程並不停止,而是處於等待狀態。
3、演算法的描述
演算法的描述方法可以歸納為以下幾種:
(1) 自然語言;
(2) 圖形,如N�S圖、流程圖,圖的描述與演算法語言的描述對應;
(3) 演算法語言,即計算機語言、程序設計語言、偽代碼;
(4) 形式語言,用數學的方法,可以避免自然語言的二義性。
用各種演算法描述方法所描述的同一演算法,該演算法的功用是一樣的,允許在演算法的描述和實現方法上有所不同。
人們的生產活動和日常生活離不開演算法,都在自覺不自覺地使用演算法,例如人們到商店購買物品,會首先確定購買哪些物品,准備好所需的錢,然後確定到哪些商場選購、怎樣去商場、行走的路線,若物品的質量好如何處理,對物品不滿意又怎樣處理,購買物品後做什麼等。以上購物的演算法是用自然語言描述的,也可以用其他描述方法描述該演算法。
⑵ 小學數學簡便演算法有幾種並舉例說明
例1 1.24+0.78+8.76
解 原式=(1.24+8.76)+0.78
=10+0.78
=10.78
【解題關鍵和提示】
運用加法的交換律與結合律,因為1.24與8.76結合起來,和正好是整數10。
例2 933-157-43
解 原式=933-(157+43)=933-200=733
【解題關鍵和提示】
根據減法去括弧的性質,從一個數里連續減去幾個數,可以減去這幾個數的和。因此題157與43的和正好是200。
例3 4821-998
=4821-1000+2=3823
【解題關鍵和提示】
此題中的減數998接近1000,我們就把它變成1000-2,根據減法去括弧性質,原式=4821-1000+2,這樣就可口算出來了,計算熟練後,998變成1000-2這一步可省略。
例4 0.4×125×25×0.8
解 原式=(0.4×25)×(125×0.8)=10×100=1000
【解題關鍵和提示】
運用乘法的交換律和結合律,因為0.4×25正好得10,而125×0.8正好得100。
例5 1.25×(8+10)
解 原式=1.25×8+1.25×10=10+12.5=22.5
【解題關鍵和提示】
根據乘法分配律,兩個加數的和與一個數相乘,可用每一個加數分別與這個數相乘,再把所得的積相加。
例6 9123-(123+8.8)
解 原式=9123-123-8.8=9000-8.8=8991.2
【解題關鍵和提示】
根據減法去括弧的性質,從一個數里減去幾個數的和,可以連續減去這幾個數,因為9123減去123正好得9000,需要注意的是減法去掉括弧後,原來加上8.8現已變成減去8.8了。
例7 1.24×8.3+8.3×1.76
解 原式=8.3×(1.24+1.76)=8.3×3=24.9
【解題關鍵和提示】
此種解法是乘法分配律的逆運用。即幾個數同乘以一個數的和,可用這幾個數的和乘以這個數。
例8 9999×1001
解 原式=9999×(1000+1)=9999×1000+9999×1
=10008999
【解題關鍵和提示】
此題把1001看成1000+1,然後根據乘法的分配律去簡算。
例9 32×125×25
解 原式=4×8×125×25
=(4×25)×(8×125)
=100×1000
=100000
【解題關鍵和提示】
把32分解成4×8,這樣125×8和25×4都可得到整百、整千的數。
⑶ 演算法與程序的區別與聯系
演算法和程序的區別是:
(1) 兩者定義不同。演算法是對特定問題求解步驟的描述,它是有限序列指令。而程序是實現預期目的而進行操作的一系列語句和指令。
說通俗一些演算法是解決一個問題的思路,程序,是解決這些問題所具體好寫的代碼。演算法沒有語言界限。他只是一個思路。為實現相同的一個演算法,用不同語言編寫的程序會不一樣。
(2)兩者的書寫規定不同。程序必須用規定的程序設計語言來寫,而演算法很隨意。演算法是一系列解決問題的清晰指令,也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。演算法常常含有重復的步驟和一些邏輯判斷。
簡單演算法舉例 例:求 1*2*3*4*5
步驟 1 :先求 1*2 ,得到結果 2 。
步驟 2 :將步驟 1 得到的乘積 2 再乘以 3 ,得到結果 6 。
步驟 3 :將步驟 2 得到的乘積 6 再乘以 4 ,得到結果 24 。
步驟 4 :將步驟 3 得到的乘積 24 再乘以 5 ,得到最後結果 120 。
演算法與程序的聯系 :
演算法和程序都是指令的有限序列 ,但是程序是演算法,而演算法不一定是 程序。程序 = 數據結構 + 演算法。演算法的主要目的在於為人們提供閱讀了解所執行的工作流程與步驟。數據結構與演算法要通過程序的實現,才能由計算機系統來執行。可以這樣理解,數據結構和演算法形成了可執行的程序。
(3)簡單演算法的設計舉例擴展閱讀
演算法的要素:
一、數據對象的運算和操作:計算機可以執行的基本操作是以指令的形式描述的。一個計算機系統能執行的所有指令的集合,成為該計算機系統的指令系統。一個計算機的基本運算和操作有如下四類:
1、算術運算:加減乘除等運算。
2、邏輯運算:或、且、非等運算。
3、關系運算:大於、小於、等於、不等於等運算。
4、數據傳輸:輸入、輸出、賦值等運算。
二、演算法的控制結構:一個演算法的功能結構不僅取決於所選用的操作,而且還與各操作之間的執行順序有關。
⑷ 演算法有哪些特點並一一舉例說明
1.決策樹
優點:
計算量簡單,可解釋性強,比較適合處理有缺失屬性值的樣本,能夠處理不相關的特徵;
擅長對人、地點、事物的一系列不同特徵、品質、特性進行評估
缺點:
容易過擬合(後續出現了隨機森林,減小了過擬合現象),使用剪枝來避免過擬合;
適用數據范圍:
數值型和標稱型
CART分類與回歸樹:
決策樹分類方法,採用基於最小距離的基尼指數估計函數,用來決定由該子數據集生成的決策樹的拓展形。決策樹回歸方法,採用切分點與切分變數來計算的損失來估計函數。如果目標變數是標稱的,稱為分類樹;如果目標變數是連續的,稱為回歸樹。分類樹是使用樹結構演算法將數據分成離散類的方法。
優點:
非常靈活,可以允許有部分錯分成本,還可指定先驗概率分布,可使用自動的成本復雜性剪枝來得到歸納性更強的樹,產生的分類規則易於理解,准確率較高。
缺點:
在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致演算法的低效。此外,C4.5隻適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。
2.隨機森林
特點:
准確率可以和Adaboost相媲美,對錯誤和離群點更魯棒。准確率依賴於個體分類器的實力和它們之間的依賴性。理想情況是保持個體分類器的能力而不提高它們的相關性。對每次劃分所考慮的屬性數很敏感。通常選取logn2+1個屬性,其中n是數據集的實例數。(一個有趣的觀察是,使用單個隨機選擇的屬性可能導致很好的准確率,常常比使用多個屬性更高。)
場景舉例:用戶流失分析、風險評估
優點:
不易過擬合,可能比Bagging和Boosting更快。由於在每次劃分時只考慮很少的屬性,因此它們在大型資料庫上非常有效。有很好的方法來填充缺失值,即便有很大一部分數據缺失,仍能維持很高准確度。給出了變數重要性的內在估計,對於不平衡樣本分類,它可以平衡誤差。可以計算各實例的親近度,對於數據挖掘、檢測離群點和數據可視化非常有用。
隨機森林方法被證明對大規模數據集和存在大量且有時不相關特徵的項(item)來說很有用
缺點:
在某些雜訊較大的分類和回歸問題上會過擬合。對於有不同級別的屬性的數據,級別劃分較多的屬性會對隨機森林產生更大的影響,所以隨機森林在這種數據上產生的屬性權值是不可信的。
⑸ 舉例說明演算法的應用
舉例說明演算法的應用如下:
1、遞推演算法(常用級數、數列求和、二分法、梯形積分法、窮舉法等)。
2、排序演算法(選擇法、冒泡法)。
3、查找演算法(順序查找、折半查找)。
4、有序數列的插入、刪除操作。
5、初等數論問題求解的有關演算法(最大數、最小數、最大公約數、最小公倍數、素數等)。
6、矩陣的處理(生成、交換及基本運算)。
演算法雹盯虛中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機則御化演算法在內的一些演算法,包含了一些隨機輸入。