论图计算
自從機(jī)械計(jì)算開始以來,圖形概念就已經(jīng)存在,并且在純數(shù)學(xué)領(lǐng)域已經(jīng)存在了數(shù)十年。 由于數(shù)據(jù)庫的黃金時(shí)代,圖形在軟件工程中變得越來越流行。 圖形數(shù)據(jù)庫提供了一種持久化和處理圖形數(shù)據(jù)的方法。 但是,圖形數(shù)據(jù)庫并不是存儲和分析圖形的唯一方法。 圖形計(jì)算在使用圖形數(shù)據(jù)庫之前已有一段歷史,并且其未來不一定會(huì)與典型的數(shù)據(jù)庫問題糾纏在一起。 有許多圖形技術(shù),每種技術(shù)都有其各自的優(yōu)點(diǎn)和缺點(diǎn)。 有效的圖形計(jì)算需要在正確的時(shí)間利用正確的技術(shù)。
結(jié)構(gòu):使用圖對真實(shí)場景進(jìn)行建模
圖 (或網(wǎng)絡(luò) )是一種數(shù)據(jù)結(jié)構(gòu)。 它由頂點(diǎn)(點(diǎn))和邊緣(線)組成。 許多現(xiàn)實(shí)世界的場景可以建模為圖形。 這不一定是現(xiàn)實(shí)的某些客觀性質(zhì)所固有的,而是主要基于這樣一個(gè)事實(shí),即人類根據(jù)客體(頂點(diǎn))及其彼此之間的相互關(guān)系(邊緣)來主觀地解釋世界(一種反對這一觀點(diǎn)的論點(diǎn) )。 圖計(jì)算中常用的數(shù)據(jù)模型是屬性圖 。 以下示例說明了通過三種不同方案進(jìn)行的圖形建模。
軟件圖
Stephen是名為TinkerPop的面向圖形的工程小組的成員 。 斯蒂芬為Rexster做出了貢獻(xiàn)。 Rexster通過軟件依賴關(guān)系與其他項(xiàng)目相關(guān)。 當(dāng)用戶在Rexster中發(fā)現(xiàn)錯(cuò)誤時(shí),他們會(huì)發(fā)出票證 。 可以通過圖形方便地捕獲對協(xié)作編碼環(huán)境的描述。 頂點(diǎn)(或事物)是人員,組織,項(xiàng)目和票證。 邊(或關(guān)系)例如是成員資格,依賴關(guān)系和問題。 可以使用點(diǎn)和線將圖形可視化,下面描述了上述情況。
討論圖
Matthias對圖感興趣。 他是Aurelius的CTO和圖形數(shù)據(jù)庫Titan的項(xiàng)目負(fù)責(zé)人。 Aurelius有一個(gè)郵件列表 。 在此郵件列表上,人們討論了圖論和技術(shù)。 Matthias參與了討論。 他的貢獻(xiàn)越來越多。 郵件列表以遞歸方式顯示為一棵樹 。 此外,消息的非結(jié)構(gòu)化文本引用了共享概念。
概念圖
圖可以用來表示任意概念之間的關(guān)系,甚至是與圖有關(guān)的概念。 例如,請注意后面的句子中的概念(斜體)如何關(guān)聯(lián)。 圖可以表示為鄰接表 。 處理圖的一般方法是通過圖遍歷 。 圖形遍歷有兩種常規(guī)類型: 深度優(yōu)先和寬度優(yōu)先 。 圖形可以保存在稱為圖形數(shù)據(jù)庫的軟件系統(tǒng)中。 圖形數(shù)據(jù)庫以不同于常見軟件知識的關(guān)系數(shù)據(jù)庫的方式組織信息。 在下圖中,與圖有關(guān)的概念相互鏈接,表明概念關(guān)系形成了圖。
多域圖
前面的三個(gè)場景(軟件,討論和概念)是真實(shí)系統(tǒng)(例如GitHub , Google Groups和Wikipedia )的表示。 這些看似完全不同的模型可以通過共享頂點(diǎn)無縫集成到單個(gè)原子圖結(jié)構(gòu)中。 例如,在關(guān)聯(lián)的圖中, Gremlin是Titan的依賴項(xiàng),Titan由Matthias開發(fā),Matthias在Aurelius的郵件列表上寫消息(軟件與討論合并)。 接下來, 藍(lán)圖是Titan的依賴項(xiàng),Titan是帶標(biāo)簽的圖 (軟件與概念合并)。 虛線表示其他此類跨域鏈接,這些鏈接演示了如何在跨域共享頂點(diǎn)時(shí)如何創(chuàng)建通用模型。 集成的通用模型可以經(jīng)受比任何單個(gè)模型單獨(dú)提供的服務(wù)更豐富(也許更智能)的服務(wù)。
流程:通過遍歷解決實(shí)際問題
到目前為止,已經(jīng)提出了一組相互關(guān)聯(lián)的域的單個(gè)圖形模型。 模型只有在可以利用模型來解決問題的過程中才有用。 就像數(shù)據(jù)需要算法一樣,圖也需要遍歷 。 遍歷是一種算法/定向遍歷圖,以便確定路徑(稱為導(dǎo)數(shù))或收集信息(稱為統(tǒng)計(jì)信息)的過程。 即使是查看圖形可視化的人類視覺系統(tǒng),也是一個(gè)遍歷引擎,利用聲波運(yùn)動(dòng)來識別模式。 但是,隨著圖形的變大和問題需要精確的邏輯,可視化和人的內(nèi)部計(jì)算器會(huì)崩潰。 接下來提供遍歷示例的集合,這些示例解決了先前討論的領(lǐng)域中的典型問題。
確定循環(huán)依賴
隨著開源軟件的增長以及將模塊輕松集成到項(xiàng)目中的便利, 循環(huán)依賴項(xiàng)比比皆是,并可能導(dǎo)致軟件工程中的問題。 當(dāng)項(xiàng)目A依賴項(xiàng)目B,并且通過某種依賴路徑,項(xiàng)目B依賴項(xiàng)目A時(shí),就會(huì)發(fā)生循環(huán)依賴。 當(dāng)以圖形方式表示依存關(guān)系時(shí),遍歷可以輕松識別出這種圓形度(例如,在下圖中, A-> B-> D-> G-> A是一個(gè)循環(huán) )。
排名討論貢獻(xiàn)者
郵件列表由具有不同參與和能力水平的個(gè)人組成。 當(dāng)郵件列表專注于通過討論進(jìn)行學(xué)習(xí)時(shí),僅編寫消息并不一定表示積極貢獻(xiàn)。 如果產(chǎn)生了作者的消息答復(fù),則可以解釋為該作者正在貢獻(xiàn)值得討論的材料。 但是,如果作者的消息結(jié)束了對話,那么他們可能正在貢獻(xiàn)非演講者或無法使討論蓬勃發(fā)展的信息。 在關(guān)聯(lián)的圖中,米色頂點(diǎn)是作者,而它們各自的編號是唯一的作者ID。
在郵件列表上對貢獻(xiàn)者進(jìn)行排名的一種方法是計(jì)算他們已發(fā)布的郵件數(shù)(作者對郵件列表中郵件的出奇程度 )。 但是,如果排名必須考慮到卓有成效的貢獻(xiàn),則可以根據(jù)其消息產(chǎn)生的討論深度(作者消息的樹深度)對作者進(jìn)行排名。 最后,請注意,可以包含其他技術(shù),例如情感和概念分析,以了解消息的含義和含義。
尋找相關(guān)概念
斯蒂芬對圖形的理解是在研究TinkerPop的圖形技術(shù)堆棧時(shí)發(fā)展起來的。 如今,他對學(xué)習(xí)更多有關(guān)圖的理論方面感興趣。 通過網(wǎng)絡(luò)瀏覽器,他訪問了Wikipedia 圖形頁面。 Stephen以手動(dòng)方式單擊鏈接并閱讀文章-深度優(yōu)先,圖形遍歷,鄰接表等。他意識到頁面相互引用,并且由于Wikipedia的鏈接結(jié)構(gòu),一些概念與其他概念更相關(guān)。 可以使用圖形遍歷自動(dòng)執(zhí)行步行鏈接的手動(dòng)過程。 遍歷可以單擊圖形頂點(diǎn)而不是單擊,而不是單擊,可以向外發(fā)散,并報(bào)告最感動(dòng)了哪些概念。 流動(dòng)最多的概念是具有許多關(guān)系(即路徑)的圖形概念 (請參閱先驗(yàn)算法 )。 通過這種遍歷,可以為Stephen提供圖形相關(guān)概念的排名列表。 這種遍歷類似于波在水體上擴(kuò)散-盡管現(xiàn)實(shí)世界中的圖形拓?fù)浜苌傧穸S平面那樣簡單(請參見晶格 )。
多域遍歷
先前討論的不同圖形模型(即軟件,討論和概念)通過共享頂點(diǎn)被集成到單個(gè)世界模型中。 類似地,可以構(gòu)成上述圖遍歷以產(chǎn)生對跨域問題的解決方案。 例如:
“向我推薦參與的項(xiàng)目,這些項(xiàng)目應(yīng)保持適當(dāng)?shù)囊蕾囮P(guān)系結(jié)構(gòu),并請有貢獻(xiàn)的參與者來促進(jìn)空間發(fā)展,并且在概念上與我以前研究過的技術(shù)有關(guān)?!?
當(dāng)異構(gòu)的物聯(lián)網(wǎng)鏈接在一起并在其中有效移動(dòng)時(shí),這種類型的問題解決才有可能。 鏈接和移動(dòng)的方法分別是圖形和遍歷。 總結(jié)本節(jié),提供了其他有用的遍歷示例。
“基于項(xiàng)目的數(shù)量和其依賴項(xiàng)的數(shù)量,以遞歸方式計(jì)算項(xiàng)目的'穩(wěn)定性等級',以此類推?!?
“根據(jù)項(xiàng)目之間的共享(或類似)概念進(jìn)行集群項(xiàng)目。”
“建議一個(gè)開發(fā)人員團(tuán)隊(duì)開發(fā)一個(gè)即將使用X依賴項(xiàng)并且與Y概念相關(guān)的項(xiàng)目?!?
“按每期提交者所貢獻(xiàn)的項(xiàng)目數(shù)量來排名?!?
圖計(jì)算技術(shù)
計(jì)算的實(shí)踐是在兩個(gè)糾纏的量(空間和時(shí)間)之間劃上一條細(xì)線。 在圖計(jì)算領(lǐng)域,存在相同的權(quán)衡。 本節(jié)將討論各種圖形技術(shù),以識別每種選擇所獲得和犧牲的內(nèi)容。 此外,提出了一些示例技術(shù)。 注意,存在更多的技術(shù),并且所提到的示例絕不是窮舉性的。
內(nèi)存中圖形工具包
內(nèi)存中圖形工具包是面向圖形分析和可視化的單用戶系統(tǒng)。 它們通常提供圖論和網(wǎng)絡(luò)科學(xué)文獻(xiàn)中定義的眾多圖算法的實(shí)現(xiàn)(請參閱Wikipedia的圖算法列表)。 這些工具的局限性在于它們只能對可以存儲在本地主存儲器中的圖形進(jìn)行操作。 盡管這可能很大(數(shù)以百萬計(jì)的邊緣),但這并不總是足夠的。 如果源圖數(shù)據(jù)集太大而無法放入主存儲器中,則通常使用此類內(nèi)存中圖工具包將子集隔離并進(jìn)行處理。
示例 : JUNG , NetworkX , iGraph ,Fulgora(即將推出)
- [+]豐富的圖算法庫
- [+]豐富的圖形可視化庫
- [+]不同空間/時(shí)間折衷的不同內(nèi)存表示形式
- [-]限于可以容納到主內(nèi)存中的圖形
- [-]交互通常非常繁瑣
實(shí)時(shí)圖形數(shù)據(jù)庫
圖形數(shù)據(jù)庫也許是圖形計(jì)算技術(shù)最流行的化身。 它們提供事務(wù)語義,例如ACID(本地?cái)?shù)據(jù)庫的典型值)和最終的一致性(分布式數(shù)據(jù)庫的典型值)。 與內(nèi)存中圖形工具包不同,圖形數(shù)據(jù)庫利用磁盤來保留圖形。 在合理的機(jī)器上,本地圖數(shù)據(jù)庫可以支持?jǐn)?shù)十億條邊,而分布式系統(tǒng)則可以處理數(shù)千億條邊。 在如此規(guī)模的情況下,在多用戶并發(fā)的情況下(隨機(jī)訪問磁盤和內(nèi)存正在發(fā)揮作用),全局圖算法是不可行的。 可行的是局部圖算法/遍歷。 而不是遍歷整個(gè)圖形,而是將某些頂點(diǎn)集用作遍歷的源(或根)。
示例 : Neo4j , OrientDB , InfiniteGraph , DEX , Titan
- [+]針對本地鄰域分析(“以自我為中心”的遍歷)進(jìn)行了優(yōu)化
- [+]經(jīng)過優(yōu)化,可處理大量并發(fā)用戶
- [+]交互是通過面向圖的查詢/遍歷語言進(jìn)行的
- [-]由于隨機(jī)磁盤交互,全局圖分析效率低下
- [-]由于數(shù)據(jù)庫功能(例如事務(wù)語義)而導(dǎo)致的大量計(jì)算開銷
批處理圖框架
批處理圖框架利用計(jì)算集群。 該領(lǐng)域中大多數(shù)流行的框架都將Hadoop用于存儲(HDFS)和處理(MapReduce)。 這些系統(tǒng)面向全球分析。 也就是說,涉及整個(gè)圖數(shù)據(jù)集的計(jì)算,在許多情況下,涉及遍及整個(gè)圖多次的計(jì)算(迭代算法)。 此類分析不能實(shí)時(shí)運(yùn)行。 但是,由于它們執(zhí)行數(shù)據(jù)的全局掃描,因此可以利用從磁盤的順序讀取(請參閱《大數(shù)據(jù)病理學(xué)》 )。 最終,像內(nèi)存系統(tǒng)一樣,它們面向數(shù)據(jù)科學(xué)家,或者在生產(chǎn)環(huán)境中用于將結(jié)果反饋到實(shí)時(shí)圖形數(shù)據(jù)庫中。
示例 : Hama , Giraph , GraphLab , Faunus
- [+]針對全局圖分析進(jìn)行了優(yōu)化
- [+]跨機(jī)器集群表示的流程圖
- [+]利用對磁盤的順序訪問來縮短讀取時(shí)間
- [-]不支持多個(gè)并發(fā)用戶
- [-]不是實(shí)時(shí)圖形計(jì)算系統(tǒng)
本節(jié)介紹了不同的圖形計(jì)算解決方案。 重要的是要注意,還存在諸如Convey的MX系列和Cray的YARC圖形引擎之類的硬件解決方案。 討論的每種技術(shù)都有一個(gè)重要的主題-它們專注于處理圖形數(shù)據(jù)。 每個(gè)類別的權(quán)衡取決于現(xiàn)代硬件/軟件以及理論計(jì)算機(jī)科學(xué)提出的限制。
結(jié)論
對于熟練的人來說,圖計(jì)算不僅是一套技術(shù),而且是一種根據(jù)圖來思考世界以及根據(jù)遍歷來思考世界的方法。 隨著數(shù)據(jù)變得越來越可訪問,建立更豐富的環(huán)境模型變得更加容易。 越來越困難的是以一種可以被不同的計(jì)算系統(tǒng)方便而有效地處理的形式存儲數(shù)據(jù)。 在許多情況下,圖是建模的自然基礎(chǔ)。 當(dāng)模型是圖形時(shí),可以將多種圖形計(jì)算技術(shù)應(yīng)用于該模型。
致謝
O'Reilly的Mike Loukides非常友好 ,可以審閱本文的多個(gè)版本,這樣做可以使本文變得更好。
翻譯自: https://www.javacodegeeks.com/2014/06/on-graph-computing.html
總結(jié)
- 上一篇: 驾驶证备案有什么影响没(驾驶证备案有什么
- 下一篇: 双网卡 linux 直连 跨网段(双网卡