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