石玉杰 安徽機(jī)電技師學(xué)院
在信息技術(shù)高速發(fā)展的今天,大數(shù)據(jù)、人工智能、云計(jì)算等一系列信息技術(shù)給我們的生活帶來了深刻的改變。而這些,其實(shí)都離不開計(jì)算機(jī)的程序設(shè)計(jì)。在程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)和算法構(gòu)成了程序本身,其中算法優(yōu)化則直接決定了程序執(zhí)行的效率。數(shù)學(xué)算法能夠起到很好的程序優(yōu)化的作用,這點(diǎn)對于計(jì)算機(jī)的編程而言尤為重要。在本文中,通過探究與分析對數(shù)學(xué)算法在計(jì)算機(jī)編程中的應(yīng)用進(jìn)行了解讀。
(一)數(shù)學(xué)算法
我們即使不是專業(yè)人員,也非常清楚數(shù)學(xué)算法是一種數(shù)學(xué)研究的科學(xué)的方法,就其概念而言,是指對發(fā)現(xiàn)的事物中的數(shù)學(xué)問題進(jìn)行研究,利用歸納性的算法進(jìn)行總結(jié)。數(shù)學(xué)算法是一種可以有效減少工作量的方法,不僅如此,還能夠找到最優(yōu)化的方法來提高工作效率,更高效地解決問題??梢?,數(shù)學(xué)算法對于計(jì)算機(jī)編程而言,具有重要的幫助作用,比如我們在程序設(shè)計(jì)語言C語言中的應(yīng)用就比較廣泛,這一點(diǎn)在計(jì)算機(jī)編程人員中,往往會(huì)被忽略。
(二)計(jì)算機(jī)編程
說到計(jì)算機(jī)編程,這個(gè)概念在當(dāng)今時(shí)代已經(jīng)不再陌生,雖然不能從學(xué)理上進(jìn)行定義,但是人們也都能夠大體知道計(jì)算機(jī)編程的概念。所謂的計(jì)算機(jī)編程,就是在計(jì)算機(jī)上編輯一段程序,并讓計(jì)算機(jī)執(zhí)行程序指令的過程。到目前,計(jì)算機(jī)編程的從業(yè)人員越來越多,對計(jì)算機(jī)編程的優(yōu)化也越來越注重。計(jì)算機(jī)編程優(yōu)化離不開數(shù)學(xué)算法,因?yàn)閿?shù)學(xué)算法是高校的技術(shù)方法,由此,不斷優(yōu)化計(jì)算機(jī)編程中的數(shù)學(xué)算法,就成為了提高編程效率,優(yōu)化編程結(jié)果的充分條件。
在科技飛速發(fā)展的時(shí)代,計(jì)算機(jī)軟件開發(fā)要想取得可持續(xù)發(fā)展,就必須能夠解決復(fù)雜的數(shù)學(xué)運(yùn)算,并且能夠解決復(fù)雜的編程問題,而使用起來又需要簡單化的操作,運(yùn)用簡單的程序運(yùn)行。這一切都需要數(shù)學(xué)算法的技術(shù)支撐。數(shù)學(xué)算法最基本的就是數(shù)學(xué)建模,通過數(shù)學(xué)建??梢詫⑸钪械某橄髥栴}進(jìn)行簡單化的處理,可以降低難度,從而提高效率?;跀?shù)學(xué)模型的計(jì)算機(jī)編程優(yōu)化,關(guān)鍵的就是數(shù)學(xué)算法的掌握程度。而計(jì)算機(jī)編程的軟件更新速度又很快,因此其復(fù)雜程度也在不斷提高,這對于編程人員來說,就成為了加重負(fù)擔(dān)的事情。因?yàn)榫幊倘藛T需要對其進(jìn)行系統(tǒng)化的優(yōu)化。
要想進(jìn)行計(jì)算機(jī)編程,首先要建立一個(gè)數(shù)學(xué)算法模型。這個(gè)模型一定要科學(xué)、合理、貼合程序,將數(shù)學(xué)算法和計(jì)算機(jī)程序進(jìn)行結(jié)合,這樣才能保證計(jì)算機(jī)編程的有效、高速的完成。計(jì)算機(jī)編程中,數(shù)學(xué)算法的優(yōu)化對有效資料的搜集和整理有很大作用。通過數(shù)學(xué)算法模型的建立,可以將問題描述的更加直觀和形象,這樣才能找到解決問題的關(guān)鍵。同時(shí),計(jì)算機(jī)編程中的數(shù)量關(guān)系需要與數(shù)學(xué)算法進(jìn)行對應(yīng),這樣有利于提高數(shù)學(xué)算法優(yōu)化的精準(zhǔn)性;數(shù)學(xué)算法的優(yōu)化,也能提高計(jì)算機(jī)軟件中程序的執(zhí)行力、運(yùn)行速率等一系列功能效率,能夠保證計(jì)算機(jī)編程順利進(jìn)展。
要想對計(jì)算機(jī)編程中的數(shù)學(xué)算法進(jìn)行優(yōu)化,就要對其中的數(shù)據(jù)結(jié)進(jìn)行合理的設(shè)計(jì)。如果想達(dá)到編程優(yōu)化的效果,數(shù)據(jù)結(jié)的設(shè)計(jì)是必不可少的,因?yàn)樗梢詫⒆兞康奈恢酶淖?。?yōu)化數(shù)算學(xué)法,就是要減少變量的運(yùn)行空間,這樣才能達(dá)到計(jì)算機(jī)編程優(yōu)化的目的。比如,稀疏矩陣,它的元素很多,矩陣空間要進(jìn)行壓縮,如果對其直接壓縮,會(huì)浪費(fèi)二維數(shù)組,那么要想對矩陣壓縮,就需要利用三元組進(jìn)行壓縮,進(jìn)而達(dá)到對算法空間復(fù)雜性的降低的效果。
通過具體的案例介紹和分析,可以將數(shù)學(xué)算法優(yōu)化進(jìn)行描述,進(jìn)而明確計(jì)算機(jī)編程數(shù)學(xué)算法優(yōu)化的具體策略。具體案例為:準(zhǔn)確計(jì)算“1x2x34x5……xN”的基礎(chǔ)上,明確計(jì)算結(jié)果末尾數(shù)有幾個(gè)0。其中的N值取值范圍在1000~10000之間,注意N不能等于1000,N也不能等于10000。我們分析這個(gè)算法過程,實(shí)際上屬于對案例中未知數(shù)n的具體分解,即“bx10x”,其中的“b”屬于正整數(shù),沒有被10整除。
1.第一種數(shù)學(xué)計(jì)算方法——對計(jì)算結(jié)果的優(yōu)化
對計(jì)算結(jié)果有效數(shù)進(jìn)行客觀的分析,并且計(jì)算結(jié)果,明確計(jì)算結(jié)果中含有多少個(gè)0。利用C++語言進(jìn)行編程,根據(jù)數(shù)學(xué)算法的模型進(jìn)行合理的代碼編寫,開展數(shù)學(xué)算法優(yōu)化的分析。這種算法和計(jì)算機(jī)編程屬于傳統(tǒng)數(shù)學(xué)算法,有著一定的缺點(diǎn),那就是計(jì)算量大,計(jì)算復(fù)雜,對2和5的倍數(shù)要進(jìn)行分析,因?yàn)橐WC結(jié)果中不會(huì)出現(xiàn)關(guān)于0的數(shù)字,所以這種算法的計(jì)算準(zhǔn)確率不會(huì)很高。
實(shí)現(xiàn)計(jì)算結(jié)果的優(yōu)化的程序可見下圖1:
從以上的c++程序中可以明顯看到算法的變化帶來的程序執(zhí)行效率的提升和程序的優(yōu)化,利用mul=mul mod 10000,這段程序以較高的效率派出了超過10000的“大數(shù)”造成的while(mul mod==0)這一循環(huán)的更多次的循環(huán)執(zhí)行,減少了程序循環(huán)的執(zhí)行就在很大程度上提升了程序執(zhí)行的時(shí)間,實(shí)現(xiàn)了效率上的提升以及資源的優(yōu)化。
2.第二種計(jì)算方法——計(jì)算過程的優(yōu)化
還有一些編程人員,為了實(shí)現(xiàn)算法的優(yōu)化會(huì)在計(jì)算的過程中使用計(jì)算過程優(yōu)化的形式讓自己的程序效率提高,比如對“2x5”、“8x5”等這樣一些規(guī)律的數(shù)據(jù)和算法進(jìn)行把握的時(shí)候。這些數(shù)字相互作用可以生成要求的結(jié)果數(shù)字0,因?yàn)?也屬于數(shù)字5的倍數(shù)。但是實(shí)際計(jì)算過程我們發(fā)現(xiàn),2的分解數(shù)要比5的分解數(shù)要多,所以只要能夠計(jì)算出分解數(shù)含有5的個(gè)數(shù),就能夠知道n的分解數(shù)末尾有幾個(gè)0??梢哉f,第二種數(shù)學(xué)算法可以簡化計(jì)算過程,計(jì)算的結(jié)果也能更加準(zhǔn)確一些,效果要比第一種算法好。這種算法為計(jì)算機(jī)編程提供了有效的計(jì)算模型。相應(yīng)地,下面便是在該數(shù)學(xué)計(jì)算方法作用下,計(jì)算機(jī)編程優(yōu)化分析具體解決方法。
3.第三種數(shù)學(xué)計(jì)算方法——層層剝皮的算法優(yōu)化
這種方法主要是利用案例中給出算式包含5的結(jié)果的個(gè)數(shù),通過計(jì)算5的個(gè)數(shù),就能夠準(zhǔn)確計(jì)算n的末尾的0的具體個(gè)數(shù)。編程人員會(huì)相應(yīng)地設(shè)置計(jì)算循環(huán)長度,也就是5,在實(shí)際的過程中,通過層層剝皮的方式,可以計(jì)算出包含5的個(gè)數(shù),如5,10,15,……等一系列的規(guī)律性的數(shù)字,再將這些規(guī)律性的數(shù)字組合進(jìn)行剝皮處理,就可以得到剝皮之后的結(jié)果,1,2,3,……等等。這里編程人員設(shè)置的步長要科學(xué)、合理,通過52步長進(jìn)行計(jì)算、剝皮,就可以對25,50,75等數(shù)字進(jìn)行處理,得到剝皮結(jié)果是5,10,15等,以此類推,就可以得出步長為n的剝皮結(jié)果了。相應(yīng)地,下面便是循環(huán)作用下包含5的個(gè)次方數(shù)數(shù)目總和,如下所示。
總而言之,在計(jì)算機(jī)編程方面,數(shù)學(xué)算法優(yōu)化的重要性不言而喻,這種算法的優(yōu)化很好的提升了程序的執(zhí)行效率,提高了資源和空間的開銷。在程序開發(fā)中,小的輕量級的程序在算法的優(yōu)化方面體現(xiàn)出的優(yōu)勢還不是十分的明顯,在一些稍大一些項(xiàng)目中,養(yǎng)成算法優(yōu)化的習(xí)慣對于提高程序的效率的作用是不言而喻的。因此在實(shí)際應(yīng)用中,相關(guān)人員要根據(jù)計(jì)算機(jī)編程要求、任務(wù)等,科學(xué)選擇數(shù)學(xué)算法,注重其優(yōu)化完善,科學(xué)處理計(jì)算機(jī)編程中的數(shù)學(xué)問題,提高計(jì)算機(jī)編程質(zhì)量。