昝道廣 梁肖裕 劉忠青 徐西彤 李晨輝 山東科技大學電氣信息系
計算機通過執(zhí)行程序員設計的計算機算法進行工作,計算機算法作為計算機程序的先導和運行基礎,與數(shù)據(jù)結構共同構成計算機程序。在解決具體實際的問題時,計算機算法具有運算序列,進行具體運算描述。計算機算法分為兩大類:(一)數(shù)值運算算法;(二)非數(shù)值運算算法。對于具體實際問題,選擇精確高效的算法和設計準確高效的算法能更加快速高效的解決問題。
1.1.1 有窮性。算法的步驟應該是有限的,超過合理的限度通常認為是無效算法。
1.1.2 確定性。算法設計中的每一步驟都是確定的,必須被解釋成唯一的算法含義。
1.1.3 有零個或多個輸入。執(zhí)行算法時的執(zhí)行信息。
1.1.4 有一個或多個輸出。算法的執(zhí)行是為了得到問題的結果,得不出結果的算法是沒有意義的。
1.1.5 有效性。算法設計中的每一個步驟都必須有效執(zhí)行,得到確定的結果。
計算機算法分為兩大類:1.數(shù)值運算算法。包括迭代法、遞推法和遞歸法等;2.非數(shù)值運算算法。包括窮舉法、分治法、貪心法和回溯法等。
在設計計算機算法時,要結合實際問題,對已存在的計算機算法作出合理的分析和判斷,必要時重新設計更加準確高效的算法以達到計算機在執(zhí)行時采用最優(yōu)算法的標準,減少解決問題的時間,提升解答問題時的準確性。在進行計算機算法的設計和分析時主要從以下幾個方面進行考慮:
計算復雜性是計算理論中的一個特點,研究計算問題時所需的資源,比如時間和空間,以及如何盡可能的節(jié)省這些資源。最常見的是時間(要通過多少步才能解決問題)和空間(在解決問題時需要多少內存)。時間復雜度是指在計算機科學與工程領域內完成一個算法所需的時間,是衡量一個算法優(yōu)劣的重要參數(shù)。時間復雜度越小,說明該算法效率越高,則該算法越有價值??臻g復雜度是指計算機科學領域完成一個算法所需要占用的存儲空間,一般是輸入?yún)?shù)的函數(shù)。它是算法優(yōu)劣的重要度量指標,一般來說,空間復雜度越小,算法越好。
計算機算法的運行穩(wěn)定性可以作為衡量算法的一個評價標準。具體反映在面對給定的錯誤指令時,計算機算法自身能具有較強的判斷力和決策能力。判斷力高的計算機算法可以降低執(zhí)行時反復核實運算流程,高決策能力的計算機算法可以有效控制運算進行時不受錯誤指令反復累積迭代的影響,從而避免反復運算的現(xiàn)象。
在處理遇到的問題時,計算機算法自身可能得不到最優(yōu)解集。計算機會受到約束條件的干擾,從算法自己中選擇比較相似的或者靠近最優(yōu)解集的運算路徑,在這種錯誤的最優(yōu)化路徑下,輸出計算結果。在有些算法中,算法在執(zhí)行時設置了不存在最優(yōu)解集的條件限制,計算機會輸出模糊的解集。如果不限定有限閾值,在判定最優(yōu)值時,會輸出算法的平均性分析結果。或者是最差的運算指標標準。類似的算法比較適用于簡化的情況,不太能滿足復雜程度高的運算問題。在反復運算找最優(yōu)解集的過程中,自身的時間和空間消耗降低了運算效率。
在計算機的算法設計和分析中,還要多方面考慮計算機算法分析的其他存在的相關問題,如計算機算法的自適應問題、計算機算法的精巧性、實現(xiàn)約束能力、計算機算法的簡明性等。
通過對有n項的線性表的順序搜索算法分析和二分法分析,通常情況下,無序表的查找只能靠順序檢索查找計算機算法,平均查找長度為(n+1)/2,而二分法的查找長度更短。在具體的應用中,一般先把無序線性表的計算機算法轉化成有序線性表,能大大節(jié)省查找的時間。在此過程中,要合理分析計算機算法的最壞情況及平均性狀。這一過程看似簡單,工作量卻很大。對于常用的算法,可以參考算法資料來獲取相關信息。對于常用的計算機算法,用戶可以引用已存在的比較復雜的估算公式,對算法進行評估,看是否滿足應用時的需求。對于特別復雜的計算機算法,可以作簡單的數(shù)量級估計,定量抽象描述計算機算法的復雜性。
在遇到具體問題時,要充分掌握計算機的工作原理和算法執(zhí)行方式,以便更好的分析和設計計算機算法,對于實際問題的特征,選擇最優(yōu)的算法設計方案,從而更加精確和高效的提升計算機算法的執(zhí)行效率,更加快速高效的解決問題。