為什么要研究算法?
修竹
算法的優(yōu)劣是程序質(zhì)量的重要標(biāo)志。當(dāng)我們遇到難題時(shí),總是要求計(jì)算機(jī)在較短時(shí)間內(nèi)解決難題,這樣我們就得深入研究算法,挑選出好的算法,以編出高效、實(shí)用的軟件,使計(jì)算機(jī)更快、更出色地完成任務(wù)。
通俗地說(shuō),算法就是解決問(wèn)題的具體辦法。在《三國(guó)演義》中,周瑜與諸葛亮為了打破曹操?gòu)?qiáng)大的80萬(wàn)大軍的進(jìn)攻,先設(shè)法除去曹軍中諳熟水戰(zhàn)的水軍將領(lǐng)蔡瑁、張?jiān)剩谑蔷陀辛?ldquo;群英會(huì)蔣干中計(jì)”;曹軍中沒(méi)有了真正懂得水戰(zhàn)規(guī)律的將領(lǐng),加上北方軍人不適應(yīng)艦船上生活,于是龐統(tǒng)的連環(huán)計(jì)獲得成功;由于是隆冬季節(jié)在大江之上作戰(zhàn),所以就要有黃蓋使苦肉計(jì)和草船借箭,然后,東吳水軍才能在東南風(fēng)起時(shí)火燒赤壁,取得破曹的決定性勝利。這也是周瑜、諸葛亮的破曹算法。以上環(huán)節(jié)中如果有一個(gè)環(huán)節(jié)失誤,后果不堪設(shè)想。
在日常生活中,要解決一個(gè)問(wèn)題,也總要先找出解決這個(gè)問(wèn)題的步驟或辦法。問(wèn)題簡(jiǎn)單,解決問(wèn)題的步驟就少些;問(wèn)題復(fù)雜,解決問(wèn)題的步驟就多。
許多著名的問(wèn)題能得到解決,都是因?yàn)橛腥颂岢隽饲擅畹乃惴?。舉一個(gè)簡(jiǎn)單的例子:9枚外表相同的硬幣中混進(jìn)了一枚假幣,知道它與真幣重量不同,如果給你一架天平,至少需要稱幾次才能找到那枚假幣?這個(gè)算法你可能很快就會(huì)設(shè)計(jì)出來(lái)。但如果999枚硬幣中混進(jìn)一枚假幣,你又怎樣用天平將它稱出來(lái)呢?再舉一個(gè)例子:有幾個(gè)公路互通的城市,售貨員從一個(gè)城市出發(fā),要乘車走遍所有幾個(gè)城市,最后回到出發(fā)點(diǎn),該怎樣找出售貨員可以走的最短線路?用計(jì)算機(jī)與人下棋,如果是下五子棋,走棋的算法較簡(jiǎn)單,可能很多人都能設(shè)計(jì)出來(lái),若是走圍棋呢?恐怕就很難設(shè)計(jì)算法了!
在計(jì)算機(jī)領(lǐng)域,算法是指計(jì)算機(jī)用來(lái)解決某一問(wèn)題的精確的方法。它是計(jì)算機(jī)程序的重要組成部分,算法的優(yōu)劣是程序質(zhì)量的重要標(biāo)志。當(dāng)我們遇到難題時(shí),總是要求計(jì)算機(jī)在較短時(shí)間內(nèi)解決難題,這樣我們就得深入研究算法,挑選出好的算法,以編出高效、實(shí)用的軟件,使計(jì)算機(jī)更快、更出色地完成任務(wù)。