更新時(shí)間:2020-12-29 17:48:27 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1255次
算法(Algorithm)是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問(wèn)題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問(wèn)題的策略機(jī)制。算法概念的誕生到如今算法體系的成熟,經(jīng)歷了許多的波折,也孕育出了許多的優(yōu)質(zhì)算法。算法本身還是人為設(shè)計(jì)出來(lái)的,因此,算法設(shè)計(jì)要求也是客觀存在的。
算法中的指令描述的是一個(gè)計(jì)算,當(dāng)其運(yùn)行時(shí)能從一個(gè)初始狀態(tài)和(可能為空的)初始輸入開(kāi)始,經(jīng)過(guò)一系列有限而清晰定義的狀態(tài),最終產(chǎn)生輸出并停止于一個(gè)終態(tài)。一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移不一定是確定的。也就是說(shuō),能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時(shí)間內(nèi)獲得所要求的輸出。如果一個(gè)算法有缺陷,或不適合于某個(gè)問(wèn)題,執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問(wèn)題。不同的算法可能用不同的時(shí)間、空間或效率來(lái)完成同樣的任務(wù)。下面我們從這些對(duì)算法的描述出發(fā)來(lái)看算法的設(shè)計(jì)要求。
1.正確性
算法至少應(yīng)該具有輸入,輸出和加工處理無(wú)歧義性,能正確反映問(wèn)題的需求,能夠得到問(wèn)題的正確答案 算法程序沒(méi)有語(yǔ)法錯(cuò)誤 算法程序?qū)τ诤戏ㄝ斎肽軌虍a(chǎn)生滿足要求的輸出。
2.可讀性(算法設(shè)計(jì)另一目的是為了便于閱讀,理解和交流)
算法主要是為了人的閱讀與交流,其次才是機(jī)器執(zhí)行。可讀性好有助于人對(duì)算法牟理解;晦澀難懂的程序易于隱藏較多錯(cuò)誤,難以調(diào)試和修改。
3.健壯性
當(dāng)輸入數(shù)據(jù)非法時(shí),算法也能適當(dāng)?shù)刈龀龇磻?yīng)或進(jìn)行處理,而不會(huì)產(chǎn)生黃曉明其妙的輸出結(jié)果。例如,一個(gè)求凸多邊形面積的算法,是采用求各三角形面積之和的策略來(lái)解決問(wèn)題的。當(dāng)輸入的坐標(biāo)集合表示的是一個(gè)凹多邊形時(shí),不應(yīng)繼續(xù)計(jì)算,而應(yīng)報(bào)告輸入出錯(cuò)。并且處理出錯(cuò)的方法應(yīng)是返回一個(gè)表示錯(cuò)誤或錯(cuò)誤性質(zhì)的值,而不是打印錯(cuò)誤信息或異常,并中止程序的執(zhí)行,以便在更高的抽象層次上進(jìn)行處理。
4.時(shí)間效率高和存儲(chǔ)量低
通俗地說(shuō),效率指的是算法執(zhí)行的時(shí)間。對(duì)于同一個(gè)問(wèn)題如果有多個(gè)算法可以解決,執(zhí)行時(shí)間短的算法效率高。存儲(chǔ)量需求算法執(zhí)行過(guò)程中所需要的最大存儲(chǔ)空間。效率與低存儲(chǔ)量需求這兩者都與問(wèn)題的規(guī)模有關(guān)。求 100 個(gè)人的平均分與求 1000 個(gè)人的平均分所花的執(zhí)行時(shí)間或運(yùn)行空間顯然有一空差別。
顯然,同一個(gè)算法用不同的語(yǔ)言實(shí)現(xiàn),或者用不同的編譯器進(jìn)行編譯,或者在不同的計(jì)算機(jī)運(yùn)行時(shí),效率均不相同。這表明使用絕對(duì)的時(shí)間單位衡量算法的效率是不合適的。撇開(kāi)這些與計(jì)算機(jī)硬件、軟件有關(guān)的因素,可以認(rèn)為一個(gè)特定算法“運(yùn)行工作量”的大小,只依賴于問(wèn)題的規(guī)模(通常用整數(shù)量 n 表示),或者說(shuō),它是問(wèn)題規(guī)模的函數(shù)。
以上就是算法設(shè)計(jì)要求的全部?jī)?nèi)容,只有滿足這些要求,設(shè)計(jì)出來(lái)的算法才能算是合理的。從某種程度上來(lái)說(shuō),算法設(shè)計(jì)要求和算法的一些特征是不謀而合的。想要設(shè)計(jì)出一個(gè)優(yōu)秀的算法,還是有很大難度的,我們只能量力而行,在本站的數(shù)據(jù)結(jié)構(gòu)和算法教程中先學(xué)習(xí)一些廣為人知的優(yōu)秀算法,得出自己的心得,以便我們?cè)O(shè)計(jì)出合格的算法。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743