本書分為數(shù)值算法和非數(shù)值算法兩部分,介紹了數(shù)據(jù)結構、各種算法以及數(shù)學分析法與程序的概念、原理、相互關系和應用。數(shù)值算法部分包括多項式與線性代數(shù)方程組,矩陣與非線性方程,插值、逼近及其應用,數(shù)字信號處理,小波變換等內容。非數(shù)值算法部分包括線性表、棧、隊列和串,樹,圖,排序、查找與文件操作,并行算法等內容。本書附錄部分還介紹了電子商務系統(tǒng)中的加密算法、用于圖像處理的并行計算機結構特征以及算法在數(shù)據(jù)壓縮中的應用、COM原理和Web服務的標準與組織。本書可作為非計算機專業(yè)數(shù)據(jù)結構(及算法)等課程的本科生教材,也可作為相關專業(yè)的?芯可騇BA人員的參考書。前言人類數(shù)學能力的提高與采用的手段是分不開的,從遠古時候的結繩計數(shù)到現(xiàn)在的電子計算器和計算機,每一步的前進都使人們深受鼓舞。計算機不僅發(fā)展了應用數(shù)學,使數(shù)學與其他學科結合得更加緊密,而且發(fā)展了數(shù)學本身。隨著計算機技術的進步,人們越來越依賴計算機去完成復雜的計算任務?,F(xiàn)在所使用的各種計算機都是根據(jù)馮·諾依曼計算機理論設計和制造的,該理論有三個要點:·計算機硬件系統(tǒng)由運算器、控制器、存儲器和輸入/輸出設備等基本單元組成·計算機內部的運算指令和數(shù)據(jù)必須采用二進制數(shù)字(0或1)表示。·計算機在運行時必須先將事先編制好的程序和數(shù)據(jù)調入主存儲器(即通常所說的內存),然后執(zhí)行程序中所設置的全部指令。人們使用計算機,使計算機能夠按照人類的意志進行工作,就需要與計算機交流信息。然而,計算機硬件只懂自己的指令系統(tǒng),即只能直接執(zhí)行用相應機器語言編寫的代碼程序。計算機語言就是人與計算機之間通信的語言。而程序是為了解決某一個特定問題用一種語言編寫的指令序列。程序設計一般包括確定數(shù)據(jù)結構、確定算法、編碼、調試程序、整理并寫出文檔資料等內容。著名的計算機科學家沃思(NikiklausWirth)提出的公式是:程序=數(shù)據(jù)結構+算法直觀地說,數(shù)據(jù)是描述客觀事物的數(shù)字、字母和符號,是計算機程序使用和加工的“原料”。算法是一組嚴謹?shù)囟x運算順序的規(guī)則,并且每一個規(guī)則都是有效的且是明確的,此運算順序將在有限的次數(shù)下終止。計算機解題的過程實際上是在實施某種算法。因此,算法通常是指計算機算法(計算機算法不同于人工處理的算法)。一個問題,如果可以通過一個計算機程序,在有限的存儲空間內運行有限長的時間而得到正確的結果,則稱該問題是算法可解的。一個算法執(zhí)行結果總是與輸入的初始數(shù)據(jù)有關,不同的輸入將會有不同的結果輸出。計算機算法可以分為兩大類:數(shù)值運算算法和非數(shù)值運算算法。數(shù)值運算的目的是求數(shù)值解,如求方程的根、求函數(shù)的定積分等都屬于數(shù)值運算范圍。非數(shù)值運算包括的范疇十分廣泛,最常見的是用于事物管理領域。目前,計算機在非數(shù)值運算方面的應用遠遠超過了在數(shù)值運算方面的應用。由于數(shù)值運算有現(xiàn)成的模型,可以運用數(shù)值分析的方法,因此對數(shù)值運算算法的研究比較深入,算法比較成熟。同時,對各種數(shù)值運算都有比較成熟的算法可供選用。人們常常把這些算法匯編成冊(寫成程序形式),或者將這些程序存放在磁盤或磁帶上,供用戶調用。例如,有的計算機軟件系統(tǒng)提供“數(shù)學程序庫”,使用起來十分方便。而非數(shù)值運算的種類繁多,要求各異,難以規(guī)范化,因此目前只對一些典型的非數(shù)值運算算法(如排序算法)進行了比較深入的研究。其他的非數(shù)值運算問題往往需要使用者參考已有的類似算法,重新設計解決特定問題的專門算法。算法不等于程序,也不等于計算方法。程序可以作為算法的一種描述,但程序通常還需考慮許多與方法和分析無關的細節(jié)問題,因為在編寫程序時要受到計算機系統(tǒng)運行環(huán)境的限制。通常,程序設計的質量不可能優(yōu)于算法的設計。從程序設計的角度看,一個程序應包括以下兩方面的內容:·對數(shù)據(jù)的描述:在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結構(datastructure)。〖ZK)〗·對操作的描述:即操作步驟,也就是算法(algorithm)。實際上,一個程序除了數(shù)據(jù)結構和算法的影響外,還應當采用結構化的程序設計方法進行程序設計,并且用某一種計算機語言表示。因此,可以說程序=算法+數(shù)據(jù)結構+程序設計方法+語言工具和環(huán)境也就是說,算法、數(shù)據(jù)結構、程序設計方法以及語言工具和環(huán)境四個方面共同構成了一個程序設計人員所應具備的基本素質。設計程序要綜合地應用好這四個方面的知識。算法是靈魂,數(shù)據(jù)結構是加工?韻?,语言蕵尋緮]喑絳枰捎煤鮮實姆椒āK惴ń餼觥白鍪裁礎焙汀霸躚觥鋇奈侍?。辰{蛑械牟僮饔錁洌導噬暇褪撬惴ǖ奶逑幀R嘈闖齪玫某絳潁搜《ê俠淼氖萁峁雇?,以掋来藫关键的步骤是设计正确而有效的算法,算法的簺]到苯佑跋斐絳虻腦誦行?。矞o私饉惴ň吞覆簧銑絳蟶杓啤M?,数据结构中蓵灑竻灿一些的算法设计咒\贍苡玫蕉嘀旨際鹺頭椒?,瓤O惴ㄉ杓頻墓顧擠椒ā⒍淞考傲幢懟⒘鞒掏技捌潯浠環(huán)椒ā⑺惴ū嗦?、递归茧H?,壹s壩胩囟ㄎ侍庀喙氐募際醯取D騁換方讜擻貌緩?,端E嵊跋斕剿惴ǖ惱逕杓?。??本書主要分為兩部分。導言介紹了數(shù)據(jù)結構、算法與程序的基本概念及相互關系。第1~5章是本書的數(shù)值算法部分,其中包括:多項式與線性代數(shù)方程組,矩陣與非線性方程,插值、逼近及其應用,數(shù)字信號處理,小波算法。第6~9章是非數(shù)值算法部分,其中包括:線性表、棧、隊和串,樹,圖,排序、查找與文件操作。第10章介紹并行算法,并初步展望了計算機科學中一個蓬勃發(fā)展的新興學科。5個附錄分別是:電子商務系統(tǒng)中的加密算法,用于圖像處理的并行計算機結構特征,算法在數(shù)據(jù)壓縮中的應用,COM原理和Web服務的標準與組織。與其他同類書籍相比,本書的特點具體體現(xiàn)在如下幾個方面:·將算法知識、數(shù)據(jù)結構知識融于一體,本著務實和合理應用的原則,全部內容緊緊圍繞算法實現(xiàn)這個核心和重點建立結構體系。·在敘述上避免復雜的數(shù)學推導,而在那些必需的關鍵之處,又能做到不省略中間步驟,給出全部的推導過程。·全書大多數(shù)章節(jié)內容都可自成體系(書中帶“*”的內容可根據(jù)需要選用),以方便教學的取舍。·在術語的使用上盡量照顧不同層次、不同專業(yè)讀者的需求。·以例題的方式提供了大量的可實際應用的算法模塊。·鑒于算法最終要通過程序來實現(xiàn),在附錄中對算法及其實現(xiàn)的有關新技術的進展做了簡要的介紹(如并行計算機體系、MS-COM組件標準和Web服務平臺)。吉林大學徐一平教授、南開大學王津濤副教授參與了編寫大綱的討論;徐一平參與撰寫了第1章和第3章;王津濤撰寫了第4章和第6章;雷于生教授(華中科技大學)參與撰寫了第7章和第8章;王學民副教授(天津大學)參與撰寫了第8章和第9章;張彤副研究員(天津醫(yī)科大學)參與撰寫了第10章和附錄D;夏寅賁(中國航空航天大學博士生)參與撰寫了第3章和第7章;黃愛國講師(天津對外經濟貿易職業(yè)學院)除參與撰寫了第2章、附錄C和附錄D外,還和周鑫一起對書中所涉及的算法逐一進行了斟定;其余部分為康曉東撰寫,全書由康曉東統(tǒng)稿。許多人為此書的內容、評閱和出版貢獻了他們的寶貴時間和精力。感激相關領域前輩學人們的工作,是他們的知識和研究成果充實了此書的內容(見參考文獻)。感謝天津大學的師長們、南開大學的朋友們和天津醫(yī)科大學的同事們對本書的關注與關懷,也正是他們的真知灼見減少了本書的紕漏。特別感謝電子工業(yè)出版社的熬然副社長、高平副總編輯和章海濤老師,也是正他們的努力才使得本書能早日與讀者見面。特別感激西安交通大學張鎮(zhèn)西教授、《世界醫(yī)療器械》編輯部李曉嫻主編和遲寒雪副主編,感謝他/她們對編寫本書的理解與支持。作者還特別感謝中國計算機學會教育委員會副主任、全國高等院校計算機基礎教育研究會副會長、南開大學劉瑞挺教授的鼓勵和指導,特別感謝中國工程院院士、原天津醫(yī)科大學校長吳咸中教授的關心和扶持,感謝他們于百忙之中為本書賜序。最后,鑒于作者才疏學淺,書中肯定有值得商榷之處。誠懇地希望各位讀者,各位研究和從事相關工作的學者專家提出寶貴意見。2002年8月定稿于南開大學教師公寓①①康曉東男,1964年生。主要研究方向:圖像信號處理;多媒體信息集成。出版書籍多部,代表作有:《計算機在醫(yī)療方面的最新應用》(電子工業(yè)出版社);《現(xiàn)代醫(yī)學影像技術》(天津科技翻譯出版公司);《醫(yī)學圖像的數(shù)字化處理技術》(人民衛(wèi)生出版社);《網絡多媒體技術與醫(yī)學信息集成》(人民軍醫(yī)出版社);《網絡構建與網頁設計》(人民郵電出版社);《新編電學基礎》(科學出版社);《計算機程序設計》(中國海關出版社);《網站規(guī)劃與實施》(清華大學出版社)