首頁人工智能學(xué)科動態(tài)正文

什么是算法?算法有哪些特性?

更新時間:2022-05-31 來源:黑馬程序員 瀏覽量:

人工智能培訓(xùn)課程中會講到許多算法,那么究竟什么是算法?

算法(algorithm)是解決特定問題的步驟描述,通俗地講,算法就是描述解決問題步驟的方法。例如,新學(xué)期開學(xué),從家到學(xué)校的交通方式這個問題就有很多解決方案:有的學(xué)生乘坐火車,有的學(xué)生乘坐汽車,有的學(xué)生乘坐飛機,在本市的可能會自己開車或乘坐公共汽車,離學(xué)校近的可能會步行來學(xué)校。這里每一種方案就是一種算法,這么多解決方法就是這么多種算法。

在計算機中,算法也是對某一個問題的求解方法,只是它的表現(xiàn)形式是計算機指令的有序序列,執(zhí)行這些指令就能解決特定的問題。例如,在高級程序設(shè)計語言(如C語言)中,常用的排序算法如選擇排序、冒泡排序等,都是用計算機指令編寫算法,來解決排序問題。

在程序設(shè)計中,算法有3種較為常用的表示方法:偽代碼法、N-S結(jié)構(gòu)化流程圖和流程圖法,用得最多的是流程圖法,接下來就簡單地學(xué)習(xí)算法的流程圖法。流程圖是描述問題處理步驟的一種常用圖形工具,它由一些圖框和流程線組成。使用流程圖描述問題的處理步驟,形象觀,便于閱讀。畫流程圖時必須按照功能選用相應(yīng)的流程圖符號,常用的流程圖符號如圖所示。

1653994328714_流程符號.jpg

圖1-12所示的流程圖符號中列舉了4個圖框、1個流程線和1個連接點,具體說明如下:

·起止框用于表示流程的開始或結(jié)束。

·輸入輸出框用平行四邊形表示,在平行四邊形內(nèi)可以寫明輸入或輸出的內(nèi)容。

·判斷框用菱形表示,它的作用是對條件進行判斷,根據(jù)條件是否成立來決定如何執(zhí)行后續(xù)的操作。

·處理框用矩形表示,它代表程序中的處理功能,如算術(shù)運算和賦值等。

·流程線用單向箭線或直線表示,可以連接不同位置的圖框。流程線的標(biāo)準流向是從左到右和從上到下,可用直線表示,非標(biāo)準流向的流程線應(yīng)使用箭頭指示方向。

·連接點用圓形表示,用于流程圖的延續(xù)。通過上面的講解,讀者對流程圖符號有了簡單的認識。下面以一個數(shù)組選擇排序算法

的流程圖為例,學(xué)習(xí)簡單的流程圖,如圖所示。

1653994349375_流程圖.jpg

假設(shè)一個數(shù)組要從小到大排序,結(jié)合流程圖來分析選擇排序的過程:

第一步,在數(shù)組中選擇出最小的元素,將它與0角標(biāo)元素交換,即放在開頭第1位。

第二步,除0角標(biāo)元素外,在剩下的待排序元素中選擇出最小的元素,將它與1角標(biāo)元素交換,即放在第2位。

第三步,依次類推,直到完成最后兩個元素的排序交換,就完成了升序排列。這樣根據(jù)流程圖來編寫算法的指令代碼,就會變得清晰簡單。讀者在以后設(shè)計算法時,最好先根據(jù)設(shè)計思路出算法的流程圖,其次分析其可行性,最后再完成代碼。

算法的特性

一個好的算法,尤其是一個成熟的算法,應(yīng)該具有以下5個特性:

(1)確定性。算法的每一步都有確定的含義,不會出現(xiàn)二義性。即在相同條件下,只有一條執(zhí)行路徑,相同的輸入只會產(chǎn)生相同的輸出結(jié)果。

(2)可行性。算法的每一步都是可執(zhí)行的,通過執(zhí)行有限次操作來完成其功能。

(3)有窮性。一個算法必須在執(zhí)行有窮步驟之后結(jié)束,且每一步都可在有窮時間內(nèi)完成。這里的有窮概念不是數(shù)學(xué)意義上的,而是指在實際應(yīng)用當(dāng)中可以接受的、合理的時間和步驟。

(4)高效率與低存儲。算法的效率通常指的是算法的執(zhí)行時間,對于同一個問題的多種算法,執(zhí)行時間短的其效率就高。存儲量指的是算法在執(zhí)行過程中所需的最大存儲空間,包括所用到的內(nèi)存及外存。設(shè)計算法時應(yīng)考慮到執(zhí)行效率和存儲需求,設(shè)計出一個“性價比”較高的算法。

要設(shè)計出一個好的算法,就要綜合考慮其正確性、可讀性、健壯性,還要考慮其執(zhí)行效率和存儲量需求。

1653994606311_算法特性.png

分享到:
在線咨詢 我要報名
和我們在線交談!