一、引言
中學(xué)數(shù)學(xué)中引入計(jì)算機(jī)算法相關(guān)的內(nèi)容是為了體現(xiàn)信息社會(huì)發(fā)展的需要,其重要性是顯而易見的。由于計(jì)算機(jī)具有強(qiáng)大的重復(fù)計(jì)算能力,現(xiàn)代社會(huì)越來越多的事情需要交由計(jì)算機(jī)來進(jìn)行自動(dòng)化處理以提高勞動(dòng)生產(chǎn)率。受制于經(jīng)濟(jì)條件,中國(guó)計(jì)算機(jī)教育起步比西方發(fā)達(dá)國(guó)家要晚,尤其在小學(xué)和中學(xué)階段,然而盡早形成算法思維對(duì)今后有效地使用計(jì)算機(jī)來解決實(shí)際問題非常重要。鑒于此,我們有必要對(duì)計(jì)算機(jī)算法的一些基本特點(diǎn)進(jìn)行探討,以此來促進(jìn)算法課程的教學(xué)工作,幫助學(xué)生適應(yīng)和理解用計(jì)算機(jī)解決實(shí)際問題的一般性思維。
二、算法的概念
算法這個(gè)詞并不是計(jì)算機(jī)領(lǐng)域?qū)S械模缭谥袊?guó)古代就有算法的概念,從字面上理解算法就是計(jì)算的方法。具體的講,算法就是為了解決某一具體問題而提出的計(jì)算上可行的方案。在計(jì)算機(jī)出現(xiàn)之前,人們就對(duì)很多經(jīng)典的數(shù)學(xué)問題提出了很多可行的解決方案,這些方案都可以稱作算法。在計(jì)算機(jī)出現(xiàn)之后,很多以前由于計(jì)算復(fù)雜度太大而無法手工模擬的算法可以遷移到計(jì)算機(jī)上得以實(shí)現(xiàn),同時(shí)也出現(xiàn)了很多針對(duì)計(jì)算機(jī)環(huán)境而設(shè)計(jì)的新算法。從這些概念可以看出,算法并不是計(jì)算機(jī)領(lǐng)域?qū)S械母呱罾碚?,它本質(zhì)上就是一種解決問題的方法和步驟。
一個(gè)算法首先要是正確的才有意義,正確在這里意味著該算法可以對(duì)相應(yīng)的問題提供確切可行的答案,這是對(duì)算法的基本要求。但有一種情況是,由于計(jì)算機(jī)所能提供的精度是有限的,我們無法在計(jì)算機(jī)上對(duì)部分實(shí)際問題作精確表示,這種情況下的算法我們稱之為近似算法,這種算法也可以認(rèn)為是正確的。除此之外,考慮到計(jì)算機(jī)的實(shí)際情況,算法還需要在時(shí)間和空間上可行。雖然目前計(jì)算機(jī)的速度越來越快,但是一個(gè)時(shí)間復(fù)雜度太大的算法隨著問題規(guī)模的迅速增長(zhǎng)也將會(huì)變得不可行。同樣的,計(jì)算機(jī)的內(nèi)存空間也是有限的,如果一個(gè)算法消耗太多的內(nèi)存資源,它也將在實(shí)踐上是不可行的。
三、算法的元素
在計(jì)算上解決問題跟實(shí)際生活中解決問題的一個(gè)不同之處在于,計(jì)算機(jī)上所有的問題最終都是以機(jī)器語言的形式來表示,計(jì)算機(jī)無法理解人類用自然語言描述的問題。這就是說,我們必須將算法用計(jì)算機(jī)所能接受的格式進(jìn)行規(guī)范化,然后才有可能利用到計(jì)算機(jī)的高速計(jì)算能力。一般來說,一個(gè)算法都有輸入、輸出和處理等基本單元,并且每個(gè)單元都有其相對(duì)固定的結(jié)構(gòu)。這樣我們可以很自然地看到,在教材上出現(xiàn)的一些程序基本結(jié)構(gòu)就是為了算法設(shè)計(jì)的標(biāo)準(zhǔn)化和直觀化而提出的。不管問題有多復(fù)雜,都必須通過這些最基本的元素的各種組合來表示才能最終付諸實(shí)施,所以掌握這些最基本的元素對(duì)今后進(jìn)一步學(xué)習(xí)復(fù)雜算法是至關(guān)重要的。更關(guān)鍵的是,這些基本元素體現(xiàn)的是一種計(jì)算機(jī)思維,即計(jì)算機(jī)解決問題的基本方式,這恰恰是算法教學(xué)中最重要的一環(huán)。受限于計(jì)算機(jī)的硬件體系結(jié)構(gòu),我們目前還無法用人類的思維方式來設(shè)計(jì)計(jì)算機(jī)。雖然有過很多的努力和嘗試,但目前計(jì)算機(jī)還僅僅是一個(gè)機(jī)器,它的“思維方式”也完全是機(jī)械式。
四、中學(xué)算法教學(xué)
上面已經(jīng)提到,思維方式的改變是中學(xué)算法教學(xué)與學(xué)習(xí)的重要目標(biāo),然而這往往是很難在短期內(nèi)實(shí)現(xiàn)的一個(gè)目標(biāo)。為了達(dá)到理想的教學(xué)效果,教師必須利用一些可能的機(jī)會(huì)來強(qiáng)化算法的理念,力圖將學(xué)生從多年養(yǎng)成的“動(dòng)物性”思維中轉(zhuǎn)變過來。比如在日常的教學(xué)工作中,除了在教材中能接觸到的一些實(shí)例,我們也應(yīng)該更多地結(jié)合現(xiàn)實(shí)生活來展示算法在描述現(xiàn)實(shí)應(yīng)用時(shí)的強(qiáng)大之處,這樣可以吸引學(xué)生嘗試對(duì)未知的一些問題利用算法工具來建模處理,其引導(dǎo)和啟發(fā)作用是很明顯的。我們雖然不可能把算法專門作為一門課程在高中階段進(jìn)行長(zhǎng)時(shí)間深入的教學(xué)與訓(xùn)練,但是相信通過合理的引導(dǎo)和重點(diǎn)的突出,我們依然可以使學(xué)生在相對(duì)較短的時(shí)間內(nèi)認(rèn)識(shí)到算法精髓,并能在今后的實(shí)際問題中一定程度上進(jìn)行應(yīng)用。
中學(xué)算法學(xué)習(xí)中的另一個(gè)要點(diǎn)就是各種流程圖的作圖,這同樣對(duì)于今后的深入學(xué)習(xí)必不可少。與文字相對(duì),流程圖能使算法的設(shè)計(jì)者對(duì)算法的整體有更好的把握,這樣能在很大程度上提高設(shè)計(jì)的效率。同時(shí),標(biāo)準(zhǔn)的流程圖比文字更便于與人交流。由于這些圖表跟現(xiàn)實(shí)生活并不直接相關(guān),具有一定的枯燥性,教師必須耐心對(duì)這部分內(nèi)容進(jìn)行介紹。為了使學(xué)生能對(duì)這些技術(shù)有較深的認(rèn)知,足夠量的訓(xùn)練也是必不可少的。這個(gè)過程會(huì)比較枯燥,但是在完成這一階段的訓(xùn)練之后,學(xué)生自己也會(huì)發(fā)現(xiàn)算法知識(shí)本身的巨大魅力。
五、總結(jié)
算法教學(xué)作為銜接中學(xué)課程和大學(xué)課程的一個(gè)紐帶很好地發(fā)揮著特別的作用。鑒于其與傳統(tǒng)數(shù)理化課程的不同點(diǎn),在算法的教學(xué)中,我們要著重注意引導(dǎo)學(xué)生轉(zhuǎn)變思維方式,同時(shí)對(duì)于流程圖等基本知識(shí)要注意理論聯(lián)系實(shí)際進(jìn)行一定量的訓(xùn)練,激發(fā)學(xué)生興趣。相信通過對(duì)這些教學(xué)要點(diǎn)的合理強(qiáng)化,本部分課程的教學(xué)肯定可以獲得比較滿意的成效,學(xué)生也能建立起對(duì)計(jì)算機(jī)等學(xué)科的初步興趣。
?。ㄗ髡邌挝?湖北省天門市天門中學(xué)分校)