《大數據算法設計與分析》以大數據為背景,以求解大數據計算問題的計算方法(即亞線性時間計算方法、壓縮計算方法、抽樣計算方法、增量式計算方法、分布式并行計算方法)為主線,系統(tǒng)地介紹大數據計算問題求解算法的設計與分析的理論與方法,主要包括: 大數據計算問題的復雜性分類、大數據計算問題的亞線性時間求解算法的設計與分析方法、基于抽樣的大數據計算問題的求解算法的設計與分析方法、基于數據壓縮的大數據計算問題的求解算法的設計與分析方法、大數據計算問題的增量式求解算法的設計與分析方法、大數據計算問題的分布式并行求解算法的設計與分析方法。本書以作者在大數據計算方面的研究成果為主,也覆蓋了大數據算法研究領域的部分新研究成果。 本書可以作為高等學校數據科學與大數據技術專業(yè)和計算機科學與技術專業(yè)高年級本科生或研究生的大數據算法課程的教材,也可以作為大數據研究人員的參考書。
《大數據算法設計與分析》以大數據基礎研究與大數據應用為背景,以大數據算法設計與分析方法學為主線,以多個重要大數據計算問題為例,全面、系統(tǒng)、深入地介紹大數據算法設計與分析的原理與方法。
? 著作的內容包括大數據算法方面的最新和最重要研究成果,全面反映大數據算法研究的新進展。
? 著作注重理論與實際相結合,以具有實際應用背景的大數據計算問題為例,既細致地介紹其求解算法的設計方法,又對算法的正確屬性和復雜性進行精致的理論分析,使得讀者不僅掌握求解重要大數據計算問題的大數據算法的設計和分析方法,同時建立堅實的大數據算法設計與分析的基礎理論,不但具有解決實際應用領域的大數據問題的求解算法的設計和分析能力,也具有從事大數據算法設計與分析的基礎研究的創(chuàng)新能力。
? 著作既能夠滿足大數據基礎研究者和應用開發(fā)者的需要,也能滿足數據科學與大數據技術專業(yè)研究生的教學需要,還能通過適當內容選擇滿足數據科學與大數據技術專業(yè)本科生的教學需要。
信息技術的快速發(fā)展引發(fā)了數據規(guī)模的爆炸式增長,大數據已經幾乎無處不在,引起了國內外學術界、工業(yè)界和政府部門的高度重視,被認為是一種新的非物質生產要素,蘊含著重大價值,并將導致科學研究的深刻變革,對國家的經濟發(fā)展、社會發(fā)展、社會安全穩(wěn)定、科學進展具有戰(zhàn)略性、全局性和長遠性的意義。
大數據的重大價值需要通過求解各種各樣的以大數據為輸入的計算問題(以下簡稱大數據計算問題)來發(fā)掘利用。大數據計算問題的求解算法(以下簡稱大數據算法或大數據計算方法)的設計與分析是大數據價值發(fā)掘利用的關鍵。正如算法是計算機科學技術的核心一樣,大數據算法是大數據科學技術的核心,也是大數據的實際應用的重要基礎。
雖然算法已經具有悠久的研究歷史,研究成果層出不窮,促進了計算機的普遍應用,但是,由于目前計算資源的受限性和大數據的巨大規(guī)模,大數據問題的求解十分困難,多項式時間已經不再是大數據計算問題易解性的標準,多項式時間算法也不再是大數據計算問題的有效求解算法。傳統(tǒng)計算復雜性理論和多項式時間算法面臨著大數據計算問題的嚴峻挑戰(zhàn)。大數據算法已經成為大數據應用的瓶頸。因此,大數據算法的設計與分析已經成為計算機科學技術的重要研究領域,吸引了大量的科技工作者。
從20世紀80年代開始,越來越多的計算機科技工作者開始從事大數據算法設計與分析的研究工作,也有一些計算機科學工作者開始從事大數據計算的復雜性理論研究。最近幾年,隨著大數據的迅速增長和大數據應用的風起云涌,人們對大數據算法設計與分析的研究興趣有增無減,大有方興未艾之勢。目前,人們在大數據算法設計與分析方面已經取得了很多研究成果,為大數據應用奠定了初步基礎,促進了大數據應用的進展。
遺憾的是,系統(tǒng)介紹大數據算法設計與分析的理論與技術的學術著作目前在國內外還很少見。為了滿足國內外大數據計算理論研究者、大數據管理系統(tǒng)研制者、大數據應用系統(tǒng)開發(fā)者的需要,我撰寫了這本書,試圖為從事大數據研究與開發(fā)的科技工作者提供盡量系統(tǒng)全面的大數據算法設計與分析的知識,希望能夠為大數據的基礎研究、系統(tǒng)研制和應用開發(fā)盡綿薄之力。
在多年大數據算法研究過程中,我對大數據計算方法進行了長期探索,提出和驗證了一些適用于大數據問題求解的計算方法,如亞線性時間計算方法、基于抽樣的計算方法、基于壓縮的計算方法、增量式計算方法、分布式并行計算方法等。本書以這些方法為主線,分為7章,系統(tǒng)地介紹5種主要大數據計算方法,包括大數據的亞線性時間計算方法、大數據的抽樣計算方法、大數據的壓縮計算方法、大數據的增量式計算方法和大數據的分布式并行計算方法。本書的結構如圖1所示。第1章揭示了本書的撰寫動機。第2章討論大數據計算復雜性的幾個基本理論問題和大數據計算問題的分類,為后面5章奠定理論基礎。第3章描述了大數據計算的核心方法,與后面4章緊密相關。第4章、第5章、第6章和第7章則相互獨立,介紹了其他4種重要的大數據計算方法。
圖1本書的結構
下面簡要地介紹各章的基本內容。
〖1〗〖1〗第1章討論大數據、大數據算法和大數據計算的基本概念,介紹大數據計算面臨的挑戰(zhàn)和研究問題,綜述大數據計算復雜性理論和高效算法兩方面的研究進展,探討大數據計算復雜性理論和高效大數據算法的研究問題。
第2章以隨機存取圖靈機(RATM)為大數據計算模型,介紹大數據計算復雜性的幾個基本理論問題,包括RATM的定義和性能分析、基于RATM的大數據計算的易解性標準、基于RATM的大數據計算問題分類(如單純易解類問題、偽易解類問題、可近似易解類問題等)以及類之間的關系、歸約和大數據計算問題的完全性。第2章是其他各章的理論基礎。
第3章介紹大數據的亞線性時間計算方法。這一章首先以兩個單純易解性大數據計算問題為例,討論單純易解性大數據計算問題的亞線性時間求解算法的設計與分析的原理和方法;然后以兩個偽易解性大數據計算問題為例,討論通過多項式時間預處理,實現偽易解性大數據計算問題的亞線性時間求解算法的設計與分析的原理和方法;最后以3個難解性大數據問題為例,討論非易解性大數據計算問題的亞線性時間近似算法的設計與分析的原理和方法。
第4章介紹大數據的基于隨機抽樣的近似計算方法,包括(ε,)近似計算方法。這一章首先介紹抽樣計算方法的基本思想和需要解決的關鍵問題;然后以多個不同的難解性大數據計算問題為例,討論基于隨機抽樣的高效大數據算法的設計與分析的主要方法和基本原理。
第5章介紹大數據的壓縮計算方法。這一章介紹的大數據計算方法是精確計算方法。這一章首先介紹壓縮計算方法的基本思想、適用范圍、需要解決的問題;然后介紹支持壓縮計算的數據壓縮方法;最后以不同的大數據計算問題為例,介紹基于壓縮計算方法的大數據算法的設計與分析的主要方法和基本原理。
第6章介紹大數據的增量式計算方法。這一章首先介紹大數據增量式計算方法的基本概念和思想;然后以不同的大數據計算問題為例,介紹基于增量式計算方法的大數據算法的設計與分析的主要方法和基本原理,包括增量式流數據查詢與挖掘算法。
第7章討論如何在計算機機群或云計算環(huán)境下設計與分析求解大數據計算問題的分布式并行計算方法。這一章首先介紹并行計算系統(tǒng)和并行算法設計與分析的基本概念;然后介紹有效支持大數據分布式并行計算的大數據的分布式存儲方法;最后以集合代數操作和關系代數操作為例,介紹求解大數據計算問題的分布式并行算法的設計與分析的主要方法和基本原理,特別是充分利用大數據分布式存儲方法特點的分布式并行大數據算法的設計與分析的主要方法和基本原理。
本書不僅凝結著作者的心血,也凝結著所有對本書撰寫給予鼓勵、支持、關心和幫助的同志們的心血。
在本書問世之際,我特別感謝已經畢業(yè)并留在我身邊工作的博士高宏教授、王宏志教授、鄒兆年教授、程思瑤教授、張巖副教授、石勝飛副教授、張煒副教授、駱吉洲副教授、劉顯敏副教授、韓希先副教授、苗東菁副教授、張開旗講師,也特別感謝剛剛畢業(yè)和在讀博士研究生石拓、朱同鑫、馬恒釗、高翔宇、肖星星、李逸飛、巢澤敏、高天鵬、呂伯涵、韓帥、張楚涵等同學。這些已經畢業(yè)和在讀的同學從20世紀90年代末開始陸續(xù)加入我的團隊,每個人都陪伴我開展大數據科學技術研究至少5年,本書的主要內容都來自我們共同發(fā)表的學術論文,凝結著他們的心血。在本書的撰寫過程中,很多同學也從多方面給予了我大力的支持和幫助。
我由衷地感謝國家自然科學基金委員會和國家科技部的支持。我的研究工作多次得到國家自然科學基金重點項目和面上項目的資助,也多次得到國家科技部863計劃項目和973計劃項目的資助,特別是本書得到了國家自然科學基金重點項目大數據分析的計算理論與高效算法(項目批準號: 61832003)和重大項目基于超算的大數據分析處理基礎算法與編程支撐環(huán)境(項目批準號: U1811461)的直接資助。
我真誠地感謝我的妻子石敏教授。沒有她的鼓勵、支持、耐心和長期操勞,本書是難以完成的。我也要感謝我的女婿蔡志鵬教授和女兒李英姝教授的鼓勵和鞭策,他們的鞭策對本書的盡快完成起到了重要作用。
由于作者水平有限,書中難免存在錯誤和不當之處,懇切希望同行和廣大讀者批評指正。
作者2022年1月
李建中,中國科學院深圳理工大學(籌)教授,哈爾濱工業(yè)大學教授,國家杰出青年基金獲得者,國家973項目首席科學家。主要從事大數據計算等研究,主持完成國家973計劃、國家863計劃、國家自然科學基金重大與重點等項目20余項,在國際一流學術期刊和會議發(fā)表120余篇論文,他引2萬余次,H-index 50,并研制了多個計算機軟硬件系統(tǒng),多次獲得國家級和省部級科技進步和自然科學獎。
第1章緒論1
1.1大數據、大數據算法與大數據計算2
1.2大數據計算的挑戰(zhàn)和研究問題3
1.2.1大數據計算的挑戰(zhàn)3
1.2.2大數據計算的研究問題6
1.3大數據計算復雜性理論和算法的研究進展7
1.3.1大數據計算復雜性理論的研究進展7
1.3.2大數據算法設計方法的研究進展10
1.3.3大數據計算問題求解算法的研究進展12
1.4本章參考文獻17
1.4.1本章參考文獻注釋17
1.4.2本章參考文獻列表17
第2章大數據計算問題的復雜性26
2.1隨機存取圖靈機26
2.1.1確定隨機存取圖靈機26
2.1.2通用隨機存取圖靈機29
2.2大數據計算問題的復雜性與分類33
2.2.1大數據計算問題的復雜性33
2.2.2單純易解性大數據計算問題類35
2.2.3偽易解性大數據計算問題類39
2.3歸約與大數據計算問題的完全性41
2.3.1DLOGTIME歸約41
2.3.2大數據計算問題的完全性44
2.4本章參考文獻44
2.4.1本章參考文獻注釋44
2.4.2本章參考文獻列表45
〖1〗〖1〗第3章大數據的亞線性時間計算方法46
3.1亞線性時間算法基礎46
3.1.1亞線性時間算法的基本概念46
3.1.2數學基礎50
3.2單純亞線性時間精確算法54
3.2.1后繼搜索算法54
3.2.2德洛奈三角剖分中的點定位算法56
3.3偽亞線性時間精確算法62
3.3.1Skyline問題的求解算法62
3.3.2Topk支配集問題的求解算法66
3.4亞線性時間近似算法75
3.4.1最小生成樹代價近似求解算法76
3.4.2數據不一致性近似評估算法83
3.4.3歐幾里得空間中最近鄰近似求解算法91
3.5本章參考文獻102
3.5.1本章參考文獻注釋102
3.5.2本章參考文獻列表103
第4章大數據的抽樣計算方法105
4.1抽樣計算方法概述105
4.2圖的平均參數估計算法106
4.2.1預備知識106
4.2.2平均度求解算法108
4.2.3平均單源距離求解算法113
4.2.4平均頂點距離求解算法115
4.3無線傳感網感知數據聚集算法118
4.3.1預備知識118
4.3.2基于均勻抽樣的近似聚集算法121
4.3.3基于伯努利抽樣的近似聚集算法137
4.4度量空間上的聚類算法148
4.4.1聚類問題的定義148
4.4.2O(n4.77)時間8近似算法149
4.4.3時間復雜性獨立于輸入大小的近似算法162
4.5本章參考文獻171
4.5.1本章參考文獻注釋171
4.5.2本章參考文獻列表172
第5章大數據的壓縮計算方法173
5.1壓縮計算方法概述173
5.2數據壓縮方法175
5.2.1數據編碼方法176
5.2.2Header壓縮方法179
5.2.3多維數據壓縮方法184
5.2.4哈夫曼編碼方法186
5.3壓縮數據上的轉置算法190
5.3.1問題定義190
5.3.2算法設計191
5.3.3算法分析192
5.4壓縮數據上的聚集算法194
5.4.1問題定義194
5.4.2通用聚集算法195
5.4.3一遍掃描聚集算法199
5.4.4公共前綴聚集算法200
5.4.5公共中綴聚集算法203
5.4.6純前綴聚集算法206
5.5壓縮數據上的Cube算法207
5.5.1數據壓縮和問題定義207
5.5.2算法設計208
5.5.3算法分析220
5.6壓縮圖上的可達性判定算法224
5.6.1問題定義224
5.6.2圖壓縮方法225
5.6.3算法設計227
5.6.4算法分析228
5.7壓縮圖上的圖模式匹配算法229
5.7.1問題定義229
5.7.2圖壓縮方法230
5.7.3算法設計235
5.7.4算法分析235
5.8本章參考文獻236
5.8.1本章參考文獻注釋236
5.8.2本章參考文獻列表237
第6章大數據的增量式計算方法238
6.1增量式計算方法概述238
6.2增量式圖模擬匹配算法241
6.2.1問題定義241
6.2.2圖模擬匹配問題的批量求解算法246
6.2.3增量式常規(guī)圖模擬匹配算法251
6.2.4增量式有界圖模擬匹配算法260
6.3增量式數據不一致性檢測算法266
6.3.1問題定義266
6.3.2基于數據垂直劃分的檢測算法270
6.3.3基于數據水平劃分的檢測算法274
6.4增量式數據流查詢處理算法278
6.4.1問題定義278
6.4.2Inc3Agg類算法280
6.4.3Inc5Agg類算法282
6.5增量式數據流近似頻繁項挖掘算法286
6.5.1問題定義287
6.5.2算法設計287
6.5.3算法的正確性與誤差分析289
6.5.4算法的復雜性分析290
6.6增量式物化數據庫視圖維護算法290
6.6.1問題定義290
6.6.2問題的固有時間復雜性291
6.6.3算法設計296
6.6.4算法分析297
6.7本章參考文獻299
6.7.1本章參考文獻注釋299
6.7.2本章參考文獻列表300
第7章大數據的分布式并行計算方法301
7.1并行計算的基本概念301
7.1.1并行計算系統(tǒng)結構301
7.1.2并行算法及其復雜性分析306
7.2大數據的分布式存儲方法308
7.2.1一維分布式存儲方法308
7.2.2多維分布式存儲方法311
7.2.3分布式Grid文件316
7.2.4分布式并行B樹324
7.3分布式并行排序算法330
7.3.1基于合并操作的分布式并行排序算法331
7.3.2基于比較交換的分布式并行排序算法333
7.3.3基于數據劃分的分布式并行排序算法335
7.4集合操作的分布式并行算法338
7.4.1集合并的分布式并行算法338
7.4.2集合交的分布式并行算法339
7.4.3集合差的分布式并行算法340
7.5關系代數操作的分布式并行算法341
7.5.1選擇操作的分布式并行算法341
7.5.2投影操作的分布式并行算法344
7.5.3連接操作的分布式并行算法346
7.6基于CMD的連接操作的分布式并行連接算法351
7.6.1基本概念351
7.6.2算法CMDJoinHash353
7.6.3算法CMDJoinSortMerge354
7.6.4算法CMDJoinNestedLoop356
7.7基于并行B樹的連接操作的分布式并行算法357
7.7.1預備知識357
7.7.2基于Range分布方法的并行B樹連接算法357
7.7.3基于Hash分布方法的并行B樹連接算法362
7.8本章參考文獻364
7.8.1本章參考文獻注釋364
7.8.2本章參考文獻列表365