演算法的質量
❶ 從哪四個方面來評判演算法質量
正確性、可讀性、復雜性(高效和低存儲)、可移植性(魯棒性)
❷ 物體的質量是如何計算的
質量是物理物體的一種屬性,也是衡量物體對加速度抵抗程度的指標。人們可以把一個物體的質量看作是組成該物體的物理「物質」的量。
例如,假設我們對一個金屬立方體施加748牛的力,我們測量它的加速度為21m/s2。這個金屬立方體的質量是多少?我們可以用力的大小除以加速度的大小來計算質量
m=F/a
m=(748N)/(21m/s2)≈35.62 kg
所以我們知道這個金屬立方體的質量一定是35.62千克。
從重量嚴格地說,重量和質量是兩個不同的東西。在英語中,「重量」和「質量」是同義詞,但它們在物理科學中有不同的含義。質量是一個不變的屬性,不會因位置而改變。重量是作用在一個大質量物體上的引力場強度的量度。由於引力場強度是不同的,也就是說,月球的引力場強度比地球弱,物體的重量在不同的環境中也會不同。
質量和重量之間的關系由W = mg給出,其中g是重力加速度的測量值。g的准確值隨位置的不同而不同。在地球上,g的值約為9.81 m/s2,而在月球上,g約為1.6 m/s2。表達式W=mg以牛頓表示重量,而日常對重量的理解是以磅(磅)表示的,從牛頓到磅的換算率約為1 N=0.22磅。
例如,在g=9.81 m/s2的地球表面,一個50公斤的物體的重量是:
W=(50kg)(9.81m/s2)=490.5N
同樣地,如果我們知道一個物體的重量,我們就可以反過來算出它的質量。假設一個物體在地球上重180磅,我們可以這樣計算物體的質量:
180lbs(1N/0.22lbs)=818.18N
818.18N=m(9.81m/s2)
m=818.18N/(9.81m/s2)≈83.4 kg
所以一個180磅重的物體在地球上的質量大約是84.3千克。
❸ 演算法的評定
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。 演算法的時間復雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做。
T(n)=Ο(f(n))
因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度(Asymptotic Time Complexity)。
健壯性是指一個演算法對不合理數據輸入的反應能力和處理能力,也稱為容錯性。
❹ 評價演算法的四個標準是什麼
評價演算法的四個標准:
1.正確性
能正確地實現預定的功能,滿足具體問題的需要。處理數據使用的演算法是否得當,能不能得到預想的結果。
2.易讀性
易於閱讀、理解和交流,便於調試、修改和擴充。寫出的演算法,能不能讓別人看明白,能不能讓別人明白演算法的邏輯?如果通俗易懂,在系統調試和修改或者功能擴充的時候,使系統維護更為便捷。
3.健壯性
輸入非法數據,演算法也能適當地做出反應後進行處理,不會產生預料不到的運行結果。數據的形式多種多樣,演算法可能面臨著接受各種各樣的數據,當演算法接收到不適合演算法處理的數據,演算法本身該如何處理呢?如果演算法能夠處理異常數據,處理能力越強,健壯性越好。
4.時空性
演算法的時空性是該演算法的時間性能和空間性能。主要是說演算法在執行過程中的時間長短和空間佔用多少問題。
演算法處理數據過程中,不同的演算法耗費的時間和內存空間是不同的。
(4)演算法的質量擴展閱讀:
演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個或多個操作。此外,一個演算法還具有下列5個重要的特性。
(1)、有窮性
一個演算法必須總是(對任何合法的輸入值)在執行有窮步之後結束,且每一步都可在有窮時間內完成。
(2)、確定性
演算法中每一條指令必須有明確的含義,讀者理解時不會產生二義性。即對於相同的輸入只能得到相同的輸出。
(3)、可行性
一個演算法是可行的,即演算法中描述的操作都是可以通過已經實現的基本運算執行有限次來實現的。
(4)、輸入
一個演算法有零個或多個的輸入,這些輸入取自於某個特定的對象的集合。
(5)、輸出
一個演算法有一個或多個的輸出,這些輸出是同輸入有著某種特定關系的量。
❺ 評價演算法優劣的標準是
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。
時間復雜度
演算法的時間復雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做。
T(n)=Ο(f(n))
因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度
空間復雜度
演算法的空間復雜度是指演算法需要消耗的內存空間。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
正確性
演算法的正確性是評價一個演算法優劣的最重要的標准。
可讀性
演算法的可讀性是指一個演算法可供人們閱讀的容易程度。
健壯性
健壯性是指一個演算法對不合理數據輸入的反應能力和處理能力,也稱為容錯性。
(5)演算法的質量擴展閱讀
演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法,厄米變形模型,隨機森林演算法。
演算法可以宏泛的分為三類:
一,有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。
二,有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。
三,無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。
參考資料:演算法--網路
❻ 巧婦難為無米之炊,算力、演算法和數據到底哪個更重要
雖然不能這么絕對的判斷一定誰比誰重要,但在實際應用中很多時候的確是數據更加重要。有幾方面的原因:
在很多問題中,演算法的「好壞」在沒有大量有效數據的支撐下是沒有意義的。換句話說,很多演算法得到的結果的質量完全取決於其和真實數據的擬合程度。如果沒有足夠的數據支撐、檢驗,設計演算法幾乎等於閉門造車。
很多演算法會有一堆可調參數。這些參數的選擇並沒有什麼標准可依,無非是扔給大量數據,看參數的變化會帶來什麼樣的結果的變化。大量、有效的數據成為優化這類演算法的唯一可行方法。
更極端的例子是,演算法本身很簡單,程序的完善全靠數據訓練。比如神經網路。
對於很多成熟的演算法,優化演算法的增量改善通常遠小於增大輸入數據(這是個經濟性的考慮)。
比如問題中舉例的 Google。在它之前的搜索引擎已經把基於網頁內容的索引演算法做得很好了,要想有更大的改善需要換思路。PageRank 演算法的採用大大增加了輸入的數據量,而且鏈接數據本身對於網頁排名相當關鍵(當然他們也做了大量演算法的優化)。
相關介紹:
數據(data)是事實或觀察的結果,是對客觀事物的邏輯歸納,是用於表示客觀事物的未經加工的的原始素材。
數據可以是連續的值,比如聲音、圖像,稱為模擬數據,也可以是離散的,如符號、文字,稱為數字數據。在計算機系統中,數據以二進制信息單元0、1的形式表示。
❼ 質量的計算公式
m(質量)=p(密度)V (體積)
m(質量)=G(重力)/g(9.8N/kg)
例一個長方形鉛塊長Α寬Β高Ρ,查表得密度ρ,則質量m=Α×Β×Ρ×ρ。
M指的是質量,單位為克(g);P為密度,單位克每立方米(g/cm³);V為體積,單位為立方米(cm³)
單位物質的量的物質所具有的質量稱摩爾質量(molar mass),用符號M表示。當物質的量以mol為單位時,摩爾質量的單位為g/mol,在數上等於該物質的原子質量或分子質量。
對於某一化合物來說,它的摩爾質量是固定不變的。而物質的質量則隨著物質的量不同而發生變化。
單位物質的量的物質所具有的質量,稱為摩爾質量(molar mass),用符號M表示。(摩爾質量=式量,單位不同,數字相同)當物質的質量以克為單位時,在數值上等於該物質的相對原子質量或相對分子質量。
(7)演算法的質量擴展閱讀
來源
物質的量是物理量,表示含有一定數目粒子的集合體,符號為n。物質的量的單位為摩爾(mol)。科學上把含有阿伏伽德羅常數(約6.02×10²³)個粒子的集體作為一個單位,叫摩爾。1mol不同物質中所含的粒子數是相同的,但由於不同粒子的質量不同,1mol不同物質的質量也不同。
1971年第十四屆國際計量大會關於摩爾的定義有如下兩段規定:「摩爾是一系統的物質的量,該系統中所包含的基本單元數與0.012kg碳—12的原子數目相等。」
「在使用摩爾時應予以指明基本單元,它可以是原子、分子、離子、電子及其他粒子,或是這些粒子的特定組合。」上兩段話應該看做是一個整體。0.012kg碳12所包含的碳原子數目就是阿伏伽德羅常數(NA),實驗測得的近似數值為NA=6.021687126645×10²³。摩爾跟一般的單位不同,它有1個特點:
它計量的對象是微觀基本單元,如離子,而不能用於計量物質。
1mol它以阿伏加德羅數為計量單位,是個批量,不是以個數來計量分子、原子等微粒的數量。也可以用於計量微觀粒子的特定組合,
例如,用摩爾計量硫酸的物質的量,即1mol硫酸含有6.02×10²³個硫酸分子。摩爾是化學上應用最廣的計量單位,如用於化學反應方程式的計算,溶液中的計算,溶液的配製及其稀釋,有關化學平衡的計算,氣體摩爾體積及熱化學中都離不開這個基本單位。
摩爾質量是物質的質量除以物質的量,單位是克每摩爾,摩爾體積是物質的體積除以物質的量,單位是立方米每摩爾。過去常用的克原子量、克分子量、克分子體積應廢除。
摩爾質量、摩爾體積是物質的量的導出量,應用時必須指明基本單元,對於同一物質規定的基本單元不同,摩爾質量、摩爾體積就不同。
雖然阿伏加德羅常數是一個很大的數值,但用摩爾作為物質的量的單位使用起來卻非常方便,它就像一座橋梁將微觀粒子同宏觀物質聯系在一起。
❽ 演算法及其特性有哪些
1.演算法的重要特性(1)有窮性:一個演算法必須在執行有窮步驟之後正常結束,而不能形成無窮循環。
(2)確定性:演算法中的每一條指令必須有確切的含義,不能產生多義性。
(2)可行性:演算法中的每一條指令必須是切實可執行的,即原則上可以通過已經實現的基本運算執行有限次來實現。
(4)輸入:一個演算法應該有零個或多個輸入。
(5)輸出:一個演算法應該有一個或多個輸出,這些輸出是同輸入有特定關系的量。
2.演算法描述的方法(1)框圖描述:該方法使用流程圖或N-S圖來描述演算法。
(2)自然語言描述:該方法採用自然語言,同時添加高級程序設計語言如while、for和if等基本控制語句來描述演算法。這類描述方法自然、簡潔,但缺乏嚴謹性和結構性。
(2)類語言描述:這是介於程序設計語言和自然語言之間演算法描述形式,其特徵是突出演算法設計的主體部分而有意忽略某些過於嚴格的語法細節,如類C或C++的偽語言。這種演算法不能直接在計算機上運行,但專業設計人員經常使用它來描述演算法,它具有容易編寫、閱讀和格式統一的特點。
(4)程序設計語言描述:採用某種高級程序設計語言(如C或C++)來描述。這是可以在計算機上運行並獲得結果的演算法描述。
本課程將採用偽C語言進行演算法描述。
2.演算法與程序的關系演算法的含義與程序十分相似,但二者是有區別的。演算法和程序都是用來表達解決問題的邏輯步驟;演算法是對解決問題方法的具體描述,程序是演算法在計算機中的具體實現;一個程序不一定滿足有窮性(死循環),而演算法一定滿足有窮性;程序中的指令必須是機器可執行的,而演算法中的指令則無此限制;一個演算法若用計算機語言來書寫,則它就可以是一個程序。因此,程序是演算法,但演算法不一定是程序。4.演算法設計要求在演算法設計中,對同一個問題可以設計出不同的求解演算法。如何評價這些演算法的優劣,從而為演算法設計和選擇提供可靠的依據?通常可從以下四個方面評價演算法的質量:
(1)正確性:演算法應該能夠正確地執行預先規定的功能,並達到所期望的性能要求。
(2)可讀性:演算法應該好讀,以有利於讀者對程序的理解,便於調試和修改。
(2)健壯性:演算法應具有容錯處理。當輸入非法數據時,演算法應對其作出反應,而不是產生莫名其妙的輸出結果。
(4)效率與低存儲量需求:效率指的是演算法執行的時間。對於同一個問題,如果有多種演算法可以求解,執行時間短的演算法效率高。演算法存儲量指的是演算法執行過程中所需要的最大存儲空間。高效率和低存儲量這兩者與問題的規模有關。
❾ 數據結構中評價演算法的兩個重要指標是什麼
數據結構中評價演算法的兩個重要指標是時間復雜度和空間復雜度。
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。
1、時間復雜度:
演算法的時間復雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做。
2、空間復雜度:
演算法的空間復雜度是指演算法需要消耗的內存空間。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
(9)演算法的質量擴展閱讀:
評估演算法效率的方法:
1、事後統計方法
這種方法主要是通過設計好的測試程序和數據,利用計算機計時器對不同演算法編制的程序的運行時間進行比較,從而確定演算法效率的高低。
2、事前分析估算方法
在計算機程序編寫前,依據統計方法對演算法進行估算。經過總結,可以發現一個高級語言編寫的程序在計算機上運行時所消耗的時間取決於下列因素:演算法採用的策略、編譯產生的代碼質量、問題的輸入規模、機器執行指令的速度。
參考資料來源:網路-演算法
❿ 演算法與程序的區別與聯系
演算法和程序的區別是:
(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 。
演算法與程序的聯系 :
演算法和程序都是指令的有限序列 ,但是程序是演算法,而演算法不一定是 程序。程序 = 數據結構 + 演算法。演算法的主要目的在於為人們提供閱讀了解所執行的工作流程與步驟。數據結構與演算法要通過程序的實現,才能由計算機系統來執行。可以這樣理解,數據結構和演算法形成了可執行的程序。
(10)演算法的質量擴展閱讀
演算法的要素:
一、數據對象的運算和操作:計算機可以執行的基本操作是以指令的形式描述的。一個計算機系統能執行的所有指令的集合,成為該計算機系統的指令系統。一個計算機的基本運算和操作有如下四類:
1、算術運算:加減乘除等運算。
2、邏輯運算:或、且、非等運算。
3、關系運算:大於、小於、等於、不等於等運算。
4、數據傳輸:輸入、輸出、賦值等運算。
二、演算法的控制結構:一個演算法的功能結構不僅取決於所選用的操作,而且還與各操作之間的執行順序有關。