摘 要:在計算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)對計算機(jī)數(shù)據(jù)和信息進(jìn)行整理和集合,其運(yùn)行過程與算法有著必然的聯(lián)系。本文簡述了計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法的表述方式及其特征,介紹了幾種常見的計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法,并闡述了算法的設(shè)計原則以及對算法的復(fù)雜度進(jìn)行探究,希望能夠為相關(guān)計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法方面的研究提供一定的指導(dǎo)作用。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);算法;計算機(jī);復(fù)雜度
中圖分類號:TP311.12-4
計算機(jī)數(shù)據(jù)結(jié)構(gòu)與算法是計算機(jī)科學(xué)中必不可少的基礎(chǔ)知識之一,是實現(xiàn)計算機(jī)科學(xué)計算以及計算機(jī)模擬實驗的重要工具,對于計算機(jī)科學(xué)的發(fā)展有著至關(guān)重要的作用。因此,針對計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法進(jìn)行深入的研究,有助于計算機(jī)數(shù)據(jù)結(jié)構(gòu)的完善,能夠為計算機(jī)數(shù)據(jù)結(jié)構(gòu)的發(fā)展提供理論和實際應(yīng)用價值。
1 計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法簡述
1.1 數(shù)據(jù)結(jié)構(gòu)算法表述及其特征
數(shù)據(jù)結(jié)構(gòu)算法是指對于計算機(jī)數(shù)據(jù)信息進(jìn)行的計算和操作的處理,以及對計算機(jī)信息的處理方式進(jìn)行描述和操作的過程。通常使用邏輯符號、數(shù)學(xué)計算、數(shù)據(jù)信息的傳遞以及數(shù)據(jù)信息的比對四個主要的數(shù)據(jù)信息的計算和操作處理方式,在對于數(shù)據(jù)信息的指令進(jìn)行描述中一般會使用算法流程圖進(jìn)行處理。
目前,數(shù)據(jù)結(jié)構(gòu)算法的表述主要是通過具有不同意義的符號和文字進(jìn)行算法的編譯,常用的有以下幾種形式:常規(guī)性文字和符號、C語言程序、PAD流程圖以N-S流程圖等。其中前兩種方式主要是對于算法進(jìn)行具體的直接性的表達(dá)的,其它幾種形式主要是對于算法以圖形的形式進(jìn)行直觀性的描述,設(shè)計者通過流程圖直接進(jìn)行算法的編譯工作,能夠十分清晰的進(jìn)行算法的理解以及學(xué)習(xí)。
數(shù)據(jù)結(jié)構(gòu)算法主要的特征是其算法的指令是有限的,能夠?qū)τ谟嬎銠C(jī)數(shù)據(jù)信息的問題進(jìn)行明確的處理,算法是根據(jù)已經(jīng)編譯完成的指令嚴(yán)格按照順序進(jìn)行計算的,然后計算得出所需結(jié)果,因此,這就要求指令的條數(shù)必須是有明確的數(shù)量,并且指令所表達(dá)的意思必須要明確,不能夠出現(xiàn)一條指令表達(dá)多個意思的情況。其次,數(shù)據(jù)結(jié)構(gòu)算法包含的所有指令必須要符合計算機(jī)的計算能力,不能夠出現(xiàn)指令的數(shù)量過多導(dǎo)致后面的指令無法完成計算的情況,必須確保算法指令的完整性以及合理性。
1.2 幾種常用的數(shù)據(jù)結(jié)構(gòu)算法
計算機(jī)通過算法將我們認(rèn)知不清晰、無棱角的抽象行為,展現(xiàn)出有圖有數(shù)據(jù)的可視的數(shù)據(jù)結(jié)構(gòu)。但這些數(shù)據(jù)如何得出、計算機(jī)怎么計算的、計算的思路是什么,就是我們要詳細(xì)闡述的數(shù)據(jù)結(jié)構(gòu)算法。我們經(jīng)常使用的數(shù)據(jù)結(jié)構(gòu)算法有遞推和遞歸法迭代法、以及枚舉法。
第一,遞推和遞歸法是數(shù)據(jù)結(jié)構(gòu)算法最常用的算法,經(jīng)過逐級推導(dǎo)輸出最終結(jié)果。在結(jié)果輸出的過程中,利用數(shù)學(xué)中的推導(dǎo)公式,將問題細(xì)分,通過枝節(jié)推導(dǎo)出數(shù)列的公共特征項,也就是我們所說的通項。由簡單到復(fù)雜是遞推法最顯著的特征,數(shù)列的得出是遞推法的突破點(diǎn)。將可能的數(shù)據(jù)帶入數(shù)列中,驗算其正確性,是遞推法的總體思路。工程中,我們經(jīng)常直接或者間接的應(yīng)用到遞推法求解問題,將復(fù)雜的問題簡單化是我們解決問的出發(fā)點(diǎn)。
第二,迭代法主要應(yīng)用于問題繁瑣、枝節(jié)非常多的情形。此法主要采用了移花接木的思想,將繁瑣的情況等價成相對不復(fù)雜的算法來求解。因此,迭代法的精度等級較遞推和遞歸法低,但該算法計算時間短,在解決精度要求不高、理論類的復(fù)雜問題上非常奏效。
第三,枚舉法常用于解決“是否可行”、“多個問題結(jié)合”和“正確或錯誤”的情形。算法思路大致為:首先分析須解決問題的結(jié)構(gòu),劃分該問題的屬性所屬范疇;通過問題所屬范疇確定采用“逐一列舉”、“順序列舉”還是“按類型列舉”;確定列舉類型后,檢驗數(shù)據(jù)的可行性;最后,計算出正確答案。該方法的優(yōu)點(diǎn)在于便于工作人員理解,不會造成求解誤區(qū)。然而,算法的缺點(diǎn)也是不容小覷的,在于運(yùn)行時間過長,往往需要幾個小時,或者幾十個小時?;谄鋬?yōu)缺點(diǎn),我們在選用枚舉法時,都是一經(jīng)采用了其余的兩種方法后仍然沒有可接受的結(jié)果的情形下。盡管如此,通過此法運(yùn)算也仍然可能的不到最終滿意的結(jié)果,這也說明它的精度不高的性質(zhì)。
2 計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法設(shè)計原則
計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法必須要滿足一定的原則才能夠保證計算機(jī)正常的運(yùn)行處理工作,通常情況下,在進(jìn)行算法的設(shè)計過程中,要考慮一下幾個方面的設(shè)計原則進(jìn)行數(shù)據(jù)結(jié)構(gòu)算法的設(shè)計工作。
2.1 算法必須保證正確性
算法是編程的核心,算法正確,程序才能精確運(yùn)行。因此,我們在編寫程序時必須根據(jù)實際需要,選擇科學(xué)、合理的算法。算法不能產(chǎn)生模棱兩可的結(jié)果,必須帶有唯一的特性。
2.2 算法必須滿足可讀性
在選擇了適合的算法后,接下來的任務(wù)就是滿足程序中的算法要可讀。一個好的算法,不僅能夠保證其正確性,還要有易于理解的運(yùn)算。這樣可以給應(yīng)用者帶來方便。使用者在應(yīng)用此算法時才不能走入誤區(qū),才能更快、更好的進(jìn)行程序運(yùn)算,得到預(yù)期預(yù)想的結(jié)果。
2.3 算法必須具有穩(wěn)定性
在程序運(yùn)行過程中,輸出的曲線質(zhì)量好壞完全取決于算法的性能,尤其是程序的波動性取決于算法是否穩(wěn)定。在以往的工程實踐中,遇到過計算機(jī)輸出曲線波動反常,沒有固定的規(guī)律,與實際情況及其不吻合。通過查閱資料、對比分析,得出可能是算法的問題,改進(jìn)算法后,穩(wěn)定性得到加強(qiáng),曲線也能有理想的效果。所以說,基于計算機(jī)的不穩(wěn)定性分析,要想得到合理、有效的結(jié)果,算法必須具有穩(wěn)定性。
2.4 算法要保證具有高效低耗性能
現(xiàn)代社會提倡的主題是節(jié)能環(huán)保,這也要應(yīng)用于計算機(jī)上。每一個程序運(yùn)行,既要節(jié)省能量又要縮減時間。現(xiàn)階段,高效低耗已經(jīng)提上日程,開發(fā)者逐漸向著這方面努力。算法性能是計算機(jī)節(jié)能、高效能否實現(xiàn)的關(guān)鍵。運(yùn)行速度快、噪聲小、能耗低是計算機(jī)數(shù)據(jù)機(jī)構(gòu)追尋的永久主題。
3 計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法復(fù)雜度探究
運(yùn)行時間的長短主要取決于算法的簡單與復(fù)雜程度。在現(xiàn)實問題中,我們所遇到的都是相對簡單的問題,所以算法也很簡單,運(yùn)行時間就不很很長。然而,解決工程問題就會花費(fèi)非常長的時間,源于工程中的問題都會相對復(fù)雜一些。下面針對花費(fèi)時間與計算機(jī)內(nèi)存兩個因素來探討算法的復(fù)雜程度。
運(yùn)行時間與計算機(jī)內(nèi)存是影響算法運(yùn)行快慢的兩個因素。一般來講,計算機(jī)可供程序使用的內(nèi)存空間越大,程序運(yùn)行速度越快。雖然環(huán)境因素也會或多或少的影響運(yùn)行速度,但只是次要方面。衡量算法快慢、時間長短的工作者一般都要采用客觀的手法去衡量,不會活多的想到外部因素,所以選擇一臺好的計算機(jī)非常重要。好的計算機(jī)在大量信息導(dǎo)入時,內(nèi)存消耗只占計算機(jī)總體內(nèi)存的小部分,這樣更有利于算法的運(yùn)行。在解決問題時,在得到相同結(jié)果的基礎(chǔ)上,盡量選擇相對簡單的算法,這一點(diǎn)也是非常重要的。以占用內(nèi)存空間小、運(yùn)行時間短為出發(fā)點(diǎn),選擇算法。
4 結(jié)束語
綜上所述,計算計算數(shù)據(jù)結(jié)構(gòu)算法是進(jìn)行數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)的基礎(chǔ)知識,有助于更加深入的理解計算機(jī)的運(yùn)行狀況,因此在今后的學(xué)習(xí)工作中,應(yīng)該積極的學(xué)習(xí)研究創(chuàng)新的計算機(jī)數(shù)據(jù)結(jié)構(gòu)算法,并對數(shù)據(jù)結(jié)構(gòu)算法進(jìn)行優(yōu)化,降低數(shù)據(jù)結(jié)構(gòu)算法的復(fù)雜度,對于計算機(jī)處理數(shù)據(jù)的速度以及精確程度有著十分重要的意義和實際應(yīng)用價值。
參考文獻(xiàn):
[1]鄭巧仙.自考《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)方式的探討[J].湖北大學(xué)成人教育學(xué)院學(xué)報,2010(05).
[2]譚定英,陳平平,劉慧玲.以問題為中心的案例教學(xué)法在數(shù)據(jù)結(jié)構(gòu)與算法課程中的應(yīng)用[J].計算機(jī)教育,2013(12).
[3]程軍鋒.淺談數(shù)據(jù)結(jié)構(gòu)課程算法設(shè)計能力的培養(yǎng)[J].張家口職業(yè)技術(shù)學(xué)院學(xué)報,2009(03).
[4]韓建民,鐘發(fā)榮,趙相福.基于ACM-ICPC訓(xùn)練模式的數(shù)據(jù)結(jié)構(gòu)實踐教學(xué)探索[J].計算機(jī)教育,2013(10).
[5]滕薇,王莉.數(shù)據(jù)結(jié)構(gòu)課程分層次教學(xué)模式[J].長春理工大學(xué)學(xué)報(社會科學(xué)版),2013(07).
作者簡介:向裕良(1984-),男,助教,研究方向:計算機(jī)應(yīng)用技術(shù);彭佳紅(1962-),女,教授,研究方向:數(shù)據(jù)挖掘與智能決策、智能農(nóng)業(yè)信息處理。
作者單位:湖南工業(yè)職業(yè)技術(shù)學(xué)院現(xiàn)代設(shè)計藝術(shù)系,長沙 410208;湖南農(nóng)業(yè)大學(xué)信息學(xué)院,長沙 410208