㈠ 設計演算法的原則
設計演算法的原則:
1、正確性:演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需要、能夠得到問題的正確答案。
2、可讀性:設計演算法的目的,一方面是為了讓計算機執行,但還有一個重要的目的就是為了便於他人的閱讀,讓人理解和交流,自己將來也可閱讀。如果可讀性不好,時間長了自己都不知道寫了什麼,可讀性是評判演算法(也包括實現它的程序代碼)好壞很重要的標志。
3、健壯性:當輸入的數據非法時,演算法應當恰當地做出反應或進行相應處理,而不是莫名其妙談仿的輸出含侍纖結果。並且處理出錯的方法不應是中斷程序的執行,而應是返回一個表示錯誤或錯誤性質的值,以便於在更高的抽象層次上談仿進行處理。
4、高效率與低存儲量:通常,演算法的效率指的是演算法的執行時間;演算法的存儲量指的是演算法執行過程中所需要的最大存儲空間,兩者的復雜度都與問題的規模有關。演算法分析的任務是對設計的每一個具體的演算法,利用數學工具,討論其復雜度,探討具體演算法對問題的適應性。
(1)一個好的演算法要滿足的要求是擴展閱讀:
演算法的「正確」通常在用法上有很大的差別,大體分為以下4個層次:
1、演算法程序沒有語法錯誤;
2、演算法程序能夠根據正確的輸入的值得到滿足要求的輸出結果;
3、演算法程序能夠根據錯誤的輸出的值滿足規格說明的輸出結果;
4、演算法程序對於精心設計、極其刁難的測試數據都能滿足要求的輸出結果。
對於這4層含義,層次要求最低,因為僅僅沒有語法錯誤實在談不上是好的演算法。而層次(4)是最困難的,人們幾乎不可能逐一驗證所有的輸入都得到正確的結果。因此,演算法的正確性在大部分情況下都不可能用程序來證明,而是用數學方法證明的。
㈡ 如何衡量一個演算法的優劣有哪些標准
如何衡量一個演算法的優劣,見人見智。一個好的演算法首先是要能夠滿足場景的需求,其次是在能夠最大限度的節省資源(最低成本原則),最後是實現邏輯簡單,比較容易理解(本質上也是最低成本原則)。但是,在現實中硬體資源不變,演算法不變情況下,演算法執行的效率提高,相對應往往是資源消耗增加。一個合格的演算法是在一個可以接受的范圍內滿足場景需求,而一個優秀的演算法則是在滿足場景需求的基礎上,最大限度的節省資源,簡化邏輯。
比如我要完成一項計算任務,要求是在5分鍾執行完成。現在有演算法1:需要執行1分鍾,消耗內存8G;演算法2需要執行3分鍾,需要消耗內存256M。那麼,我們應該如何選擇呢?首先,這兩種方案都能滿足我們的需求;其次:演算法1的需要消耗的資源是演算法2的32倍,演算法1的效率是演算法2的3倍。在這種滿足需求的情況下,往往更傾向於選擇演算法2。衡量一個演算法的優劣往往要評估多方因素,結合實踐,綜合比較最終得出結論。
衡量一個演算法的的標准主要有3個: 演算法的執行效率 , 演算法的內存消耗 和 演算法的穩定性 。
㈢ 計算機演算法必須具備哪5個特性
1、有窮性。一個演算法應包含有限的操作步驟,而不能是無限的。事實上「有窮性」往往指「在合理的范圍之內」。如果讓計算機執行一個歷時1000年才結束的演算法,這雖然是有窮的,但超過了合理的限度,人們不把他視為有效演算法。
2、確定性。演算法中的每一個步驟都應當是確定的,而不應當是含糊的、模稜兩可的。演算法中的每一個步驟應當不致被解釋成不同的含義,而應是十分明確的。也就是說,演算法的含義應當是唯一的,而不應當產生「歧義性」。
3、有零個或多個輸入性。所謂輸入是指在執行演算法是需要從外界取得必要的信息。
4、有一個或多個輸出。演算法的目的是為了求解,沒有輸出的演算法是沒有意義的。
5、有效性。 演算法中的每一個 步驟都應當能有效的執行。並得到確定的結果。
(3)一個好的演算法要滿足的要求是擴展閱讀
計算機演算法的產生背景:
歐幾里得演算法被人們認為是史上第一個演算法。 第一次編寫程序是Ada Byron於1842年為巴貝奇分析機編寫求解伯努利方程的程序,因此Ada Byron被大多數人認為是世界上第一位程序員。
因為查爾斯·巴貝奇未能完成他的巴貝奇分析機,這個演算法未能在巴貝奇分析機上執行。 因為"well-defined procere"缺少數學上精確的定義,19世紀和20世紀早期的數學家、邏輯學家在定義演算法上出現了困難。
㈣ 數據結構中評價一個好的演算法,應該從哪幾個方面來考慮
數據結構中評價一個好的演算法,應該從四個個方面來考慮,分別是:
一、演算法的正確性。
二、演算法的易讀性。
三、是演算法的健壯性。
四、是演算法的時空效率(運行)。
演算法的設計取決於數據(邏輯)結構,而演算法的實現依賴於採用的存儲結構。數據的存儲結構實質上是它的邏輯結構在計算機存儲器中的實現,為了全面的反映一個數據的邏輯結構,它在存儲器中的映象包括兩方面內容,即數據元素之間的信息和數據元素之間的關系。
不同數據結構有其相應的若干運算。數據的運算是在數據的邏輯結構上定義的操作演算法,如檢索、插入、刪除、更新和排序等。
(4)一個好的演算法要滿足的要求是擴展閱讀:
分類
1、集合結構。該結構的數據元素間的關系是「屬於同一個集合」。
2、線性結構。該結構的數據元素之間存在著一對一的關系。
3、樹型結構。該結構的數據元素之間存在著一對多的關系。
4、圖形結構。該結構的數據元素之間存在著多對多的關系,也稱網狀結構。
㈤ 評價演算法的四個標準是什麼
評價演算法的四個標准:
1.正確性
能正確地實現預定的功能,滿足具體問題的需要。處理數據使用的演算法是否得當,能不能得到預想的結果。
2.易讀性
易於閱讀、理解和交流,便於調試、修改和擴充。寫出的演算法,能不能讓別人看明白,能不能讓別人明白演算法的邏輯?如果通俗易懂,在系統調試和修改或者功能擴充的時候,使系統維護更為便捷。
3.健壯性
輸入非法數據,演算法也能適當地做出反應後進行處理,不會產生預料不到的運行結果。數據的形式多種多樣,演算法可能面臨著接受各種各樣的數據,當演算法接收到不適合演算法處理的數據,演算法本身該如何處理呢?如果演算法能夠處理異常數據,處理能力越強,健壯性越好。
4.時空性
演算法的時空性是該演算法的時間性能和空間性能。主要是說演算法在執行過程中的時間長短和空間佔用多少問題。
演算法處理數據過程中,不同的演算法耗費的時間和內存空間是不同的。
(5)一個好的演算法要滿足的要求是擴展閱讀:
演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。此外,一個演算法還具有下列5個重要的特性。
(1)、有窮性
一個演算法必須總是(對任何合法的輸入值)在執行有窮步之後結束,且每一步都可在有窮時間內完成。
(2)、確定性
演算法中每一條指令必須有明確的含義,讀者理解時不會產生二義性。即對於相同的輸入只能得到相同的輸出。
(3)、可行性
一個演算法是可行的,即演算法中描述的操作都是可以通過已經實現的基本運算執行有限次來實現的。
(4)、輸入
一個演算法有零個或多個的輸入,這些輸入取自於某個特定的對象的集合。
(5)、輸出
一個演算法有一個或多個的輸出,這些輸出是同輸入有著某種特定關系的量。
㈥ 一個完整的計算機演算法必須滿足哪幾個准則,做簡要說明
一個演算法必須具備以下性質:
(1)演算法首先必須是正確的,即對於任意的一組輸入,包括合理的輸入與不合理的輸入,總能得到預期的輸出。如果一個演算法只是對合理的輸入才能得到預期的輸出,而在異常情況下卻無法預料輸出的結果,那麼它就不是正確的。
(2)演算法必須是由一系列具體步驟組成的,並且每一步都能夠被計算機所理解和執行,而不是抽象和模糊的概念。
(3)每個步驟都有確定的執行順序,即上一步在哪裡;下一步是什麼,都必須明確,無二義性。
(4)無論演算法有多麼復雜,都必須在有限步之後結束並終止運行;即演算法的步驟必須是有限的。在任何情況下,演算法都不能陷入無限循環中。
㈦ 評價一個演算法性能好壞的重要標準是
1、時間復雜度
演算法的時間復雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做寬咐。
3、正確性
演算法的正滾旦確性是評價一個演算法優劣的最重要的標准。
4、可讀性
演算法的可讀性是指一個演算法可供人們閱讀的容易程度。
5、健壯性
健壯性是指一個演算法對不合理數據輸大巧擾入的反應能力和處理能力,也稱為容錯性。
㈧ 一個好的演算法應該具備哪些特徵
一個好的演算法應該具畝悔備以下特徵:
正確性:演算法應該正確地解決問題,並且沒有明顯的錯誤。
易於理解:演算法應該清晰明了,容易理解,易於實現和調試。
可證明性:演算法應該有明確的證明,證明其正確性和最優性。
效率:演算法應該具有較高的效率,能夠在可接受的時間內完成計算。
穩定性:演算法的結果應該穩定,不會隨著數據的變化而變化。
適用性:演算法應該適用於不同的數據類型和規模
可源耐源擴展性:演算法應該具有可擴展性,能夠適應不斷增長的數據量。
雹態
㈨ 演算法的基本要求有哪些
1、有窮性: 一個演算法必須碧宴保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法雹改有一個或多個輸出,以反映對輸入數據加工後的結果.沒有輸出的悔肆銀演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成.
㈩ 衡量一個演算法好壞的主要標準是代碼短( )
衡量一個演算法好壞的標準是( ).
A . 運行速度快
B .佔用空間少
C .時間復雜度低
D .代碼短
答案: C 時間復雜度低。
衡量一個演算法好壞的標准,包括以下三方面:
1.演算法的執行效率
往往和演算法本身以及具體的數據有關系。通常會從3個維度的時間復雜度來衡量演算法的的執行效率: 最好情況
時間復雜度,最壞情況時間復雜度和平均情況時間復雜度。
2.演算法的內存消耗
演算法的內存消耗:往往和演算法本身有關系。可以通過調整演算法,以空間換時間來提升演算法的執行效率。
3.演算法的穩定性
演算法的執行效率隨著數據規模增長的變化也是衡量演算法的穩定性的一個因素;同時,演算法的內存消耗和數據規
如何衡量一個演算法敏高的優劣,見人見智。一個好的演算法首先是要能夠滿足場景乎臘的需求,其次是在能夠最大限度的
節省資源(最低成本原則),最後是實現邏輯簡單,比較容易理解(本質上也是最低成本原則)。
但是,在現實中硬體資源不變,演算法不變情況歲拿滑下,演算法執行的效率提高,相對應往往是資源消耗增加。一個合
格的演算法是在一個可以接受的范圍內滿足場景需求,而一個優秀的演算法則是在滿足場景需求的基礎上,最大限度的節省資源,簡化邏輯。