第一章 引言

算法在計(jì)算機(jī)科學(xué)中的角色

算法是計(jì)算機(jī)科學(xué)的主題
解決一個(gè)計(jì)算問題的過程:
可計(jì)算否---》能行可計(jì)算否---》算法設(shè)計(jì)與分析---》用計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)算法---》軟件系統(tǒng)
可計(jì)算理論
--計(jì)算模型
--可計(jì)算問題、不可計(jì)算問題
--計(jì)算模型的等價(jià)性--圖靈/church命題
計(jì)算復(fù)雜性理論
--在給定計(jì)算模型下研究問題的復(fù)雜性
*固有復(fù)雜性
*上界
*下界
*平均
*復(fù)雜性問題分類
*抽象復(fù)雜性研究

算法的概念

算法的定義

  • 計(jì)算:可有一個(gè)給定計(jì)算模型機(jī)械地執(zhí)行規(guī)則或計(jì)算步驟序列成為該計(jì)算模型的一個(gè)計(jì)算。
    一個(gè)計(jì)算機(jī)程序是一個(gè)計(jì)算(計(jì)算模型是計(jì)算機(jī))
    計(jì)算可能永遠(yuǎn)不停止——不是算法
  • 算法:滿足
    有窮性:有限步內(nèi)必須停止
    確定性:每一步都是嚴(yán)格定義和確定的動(dòng)作
    能行性:每一個(gè)動(dòng)作都能夠被精確地機(jī)械執(zhí)行
    輸入:有一個(gè)滿足給定約束條件的輸入
    輸出:滿足給定約束條件的結(jié)果
  • 問題:是算法的目的。定義了輸入集合和輸出集合的映射關(guān)系。
  • 問題實(shí)例:一個(gè)算法面向一個(gè)問題,而不是僅求解一個(gè)問題的一個(gè)或幾個(gè)實(shí)例。

算法的分析

算法的正確性分析

  • 算法正確性:算法對(duì)于每一個(gè)輸入都最終停止,而且產(chǎn)生正確輸出。
    不正確算法:不停止(在某個(gè)輸入上)。對(duì)所有輸入都停止,但對(duì)某輸入產(chǎn)生不正確結(jié)果
    近似算法:對(duì)所有輸入都停止。產(chǎn)生近似正確的解或產(chǎn)生不多不正確解。
  • 算法正確性證明:證明算法對(duì)所有輸入都停止,證明對(duì)每個(gè)輸入都產(chǎn)生正確結(jié)果。
    調(diào)試程序不等于程序正確性證明。調(diào)試程序只能證明程序有錯(cuò),不能證明程序無(wú)錯(cuò)。
  • 循環(huán)不變量方法——證明主要結(jié)構(gòu)是循環(huán)結(jié)構(gòu)的算法正確性。
    循環(huán)不變量:數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵性質(zhì),依賴具體算法和算法的特點(diǎn)。
    初始:循環(huán)開始前循環(huán)不變量成立。
    循環(huán)步驟:循環(huán)體每執(zhí)行一次,循環(huán)不變量成立。
    終止:算法結(jié)束后,循環(huán)不變量保證算法正確。

算法的復(fù)雜性分析

  • 目的:預(yù)測(cè)算法對(duì)不同輸入所需的資源量
  • 復(fù)雜性測(cè)度:時(shí)間,空間,I/O等,是輸入大小的函數(shù)。
    *其他概念:輸入大小,時(shí)間復(fù)雜度性,空間復(fù)雜性,最壞復(fù)雜性,最小復(fù)雜性,平均復(fù)雜性。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容