王斌
摘要:在計(jì)算機(jī)科學(xué)領(lǐng)域中,軟件工程程序設(shè)計(jì)是一項(xiàng)重要的研究?jī)?nèi)容,而程序設(shè)計(jì)的核心就是算法的選擇,最佳的算法不僅能夠降低程序的復(fù)雜性,而且要能夠達(dá)到程序設(shè)計(jì)的要求。在軟件工程中對(duì)于程序設(shè)計(jì)算法的方法有很多種,該文主要對(duì)軟件工程程序設(shè)計(jì)的幾種常用算法進(jìn)行比較研究,從而能夠?yàn)檐浖こ坛绦蛟O(shè)計(jì)提供一些參照條件。
關(guān)鍵詞:軟件工程;程序設(shè)計(jì);常用算法;比較研究
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)18-4425-03
隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)技術(shù)呈現(xiàn)出快速發(fā)展的狀態(tài),隨著計(jì)算機(jī)軟件系統(tǒng)的復(fù)雜程度以及規(guī)模的擴(kuò)大,軟件的可靠性的問(wèn)題也日趨增多,在軟件工程程序設(shè)計(jì)中計(jì)算方法也隨著增多,下面主要進(jìn)行分析在軟件工程程序設(shè)計(jì)中分而治之法、貪心法設(shè)計(jì)、動(dòng)態(tài)規(guī)劃法等幾種算法的特點(diǎn)以及實(shí)現(xiàn)機(jī)制進(jìn)行分析和研究比較。
1算法的概述
在計(jì)算機(jī)中對(duì)于算法的描述種類有很多種,其中有自然語(yǔ)言、算法語(yǔ)言以及圖形語(yǔ)言和形式語(yǔ)言等。算法主要是指在有限的步驟內(nèi)能夠解決一個(gè)問(wèn)題的過(guò)程。算法的特性主要有以下幾點(diǎn):確定性、有窮性、可行性以及輸入輸出這五個(gè)重要的特性,其中有窮性主要是指每一個(gè)算法必須在執(zhí)行的有窮步后結(jié)束一個(gè)程序。確定性主要是指算法的每一個(gè)步驟必須具有確切的定義??尚行灾饕侵冈谒惴ㄖ忻恳徊蕉紤?yīng)該是非常基本的算法,并且每一步都能夠精確的計(jì)算。輸入性主要是指有0個(gè)或者多個(gè)輸入值,輸出性主要是指有1個(gè)或者多個(gè)輸出值[1]。
軟件工程程序算法在計(jì)算機(jī)上執(zhí)行計(jì)算的過(guò)程中需要有一定的存儲(chǔ)空間存放算法所需要的數(shù)據(jù)以及描述的程序。在軟件工程程序設(shè)計(jì)中對(duì)于不同的算法,其寫出的程序在計(jì)算機(jī)上進(jìn)行運(yùn)行的過(guò)程中所需要的空間和時(shí)間是不同的,并且針對(duì)不同的計(jì)算機(jī)的運(yùn)行速度也是不同的,所以軟件工程程序設(shè)計(jì)中對(duì)于判定不同算法的復(fù)雜性時(shí),應(yīng)該注意計(jì)算機(jī)自身的問(wèn)題,從而選擇出復(fù)雜性最低的算法。
2分而治之算法的研究
在計(jì)算機(jī)科學(xué)領(lǐng)域中分而治之方法是軟件工程程序設(shè)計(jì)中一項(xiàng)重要的算法。分而治之主要是指將一個(gè)復(fù)雜的問(wèn)題分為兩個(gè)或者多個(gè)相似或者相同的子系問(wèn)題,然后將所分的子問(wèn)題分為更小的子問(wèn)題,一直到能夠直接求出問(wèn)題的答案為止,其中原問(wèn)題的答案就是各個(gè)子問(wèn)題答案的綜合。如果在具體使用分而治之法的過(guò)程中,因?yàn)樽訂?wèn)題的類型大多數(shù)與原來(lái)的相同,所以很自然就能夠?qū)崿F(xiàn)遞歸過(guò)程,求出問(wèn)題的解。在軟件工程中采用分而治之的方法能夠解決問(wèn)題時(shí),可以使用分而治之的設(shè)計(jì)模式進(jìn)行解決問(wèn)題,這種設(shè)計(jì)模式不僅適合于用戶對(duì)這種算法具體深刻了解的用戶,以免出現(xiàn)重復(fù)性的勞動(dòng),提高復(fù)用率,而且還適合于對(duì)分而治之思想理解不深的用戶,從而能夠減輕用戶的負(fù)擔(dān)[2]。
1)分而治之算法的設(shè)計(jì)模式一般為:
其結(jié)構(gòu)如圖1所示。
2)分而治之算法的應(yīng)用特點(diǎn)
在計(jì)算機(jī)軟件工程程序設(shè)計(jì)中,分而治之算法的應(yīng)用是非常繁多的,比如常見(jiàn)的循環(huán)賽日程表、合并排序、大整數(shù)乘法、二分搜索技術(shù)以及線性時(shí)間選擇等。應(yīng)用分而治之算法可以解決具有以下特征的問(wèn)題:能夠解決規(guī)??梢钥s小到能夠解決的問(wèn)題;問(wèn)題具有分解性能夠分解成多個(gè)小的并且類似或者相同的問(wèn)題,并且問(wèn)題具有子結(jié)構(gòu)性質(zhì)。問(wèn)題所能夠分解的各個(gè)子問(wèn)題是之間是相
在計(jì)算機(jī)科學(xué)領(lǐng)域中軟件工程程序設(shè)計(jì)以及編程的重點(diǎn)內(nèi)容就是算法的設(shè)計(jì),一個(gè)軟件工程程序設(shè)計(jì)的優(yōu)劣性主要在于程序算法的選擇,不同的算法具有不同的特點(diǎn),其復(fù)雜性以及通用性也是具有很大的不同,所以在進(jìn)行設(shè)計(jì)的過(guò)程中不僅應(yīng)該注意其通用性和復(fù)雜性,而且還應(yīng)該注意各種算法所使用問(wèn)題的類型,從而才能軟件工程程序設(shè)計(jì)的完美以及精確。
[1]陳蓉,陳烽.軟件工程中程序設(shè)計(jì)方法的比較[J].電腦知識(shí)與技術(shù),2012,8(2):333-334.
[2]陳端兵,黃文奇.求解矩形packing問(wèn)題的貪心算法[J].計(jì)算機(jī)工程,2007,33(4):160-162.
[3] Alsuwaiyel M H.Algorithms desing techniques and analysis[M].Beijing:Publishing House of Electronics Industry,2003:103-204.
[4]吳志健,湯銘端.一種基于基因表達(dá)式程序設(shè)計(jì)的新算法[J].系統(tǒng)仿真學(xué)報(bào),2008,20(8):1986-1989.