Neo4j【從無到有從有到無】【N7】圖論的預測分析

目錄

1.深度和廣度優先搜索

2.用Dijkstra的算法進行路徑查找

3.A *算法

4.圖論與預測建模

4.1.三元閉包/閉合(Triadic Closures)

4.2.結構平衡(Structural Balance)

5.本地橋樑(Local Bridges)

6.摘要


在本章中,我們將研究一些用於處理圖形數據的分析技術和算法。 圖論和圖算法都是計算科學領域中成熟且廣爲人知的領域,我們將演示如何將二者用於從圖數據庫中挖掘複雜的信息。 儘管具有計算機科學背景的讀者無疑會認識到這些算法和技術,但本章中的討論無需藉助數學即可進行處理,以鼓勵好奇的外行學習。

1.深度和廣度優先搜索

在研究高階分析技術之前,我們需要重新熟悉基本的廣度優先搜索算法,這是迭代整個圖的基礎。 我們在本書中看到的大多數查詢本質上都是深度優先而不是廣度優先。 也就是說,它們從起始節點向外遍歷到某個末端節點,然後沿着與同一起始節點不同的路徑重複進行類似的搜索。 當我們嘗試遵循發現離散信息的路徑時,深度優先是一個不錯的策略。

信息深度優先搜索

經典的深度優先算法搜索是未知的。 也就是說,它僅搜索路徑,直到找到圖形的末尾。 一旦結束,它將回溯到起始節點並嘗試其他路徑。 但是,由於圖形數據庫在語義上很豐富,因此我們可以儘早終止沿特定分支的搜索(例如,一旦找到一個沒有兼容的傳出關係的節點,或者已經遍歷了“足夠遠”)。 這種明智的搜索可以縮短執行時間。 這些正是我們前面的Cypher查詢和Java遍歷執行的搜索類型。

儘管我們使用深度優先搜索作爲一般圖遍歷的基本策略,但許多有趣的算法都以廣度優先的方式遍歷整個圖。 也就是說,他們一次瀏覽圖,首先從起始節點訪問深度1處的每個節點,然後訪問深度2處的每個節點,然後訪問深度3依此類推,直到訪問了整個圖。 如圖7-1所示,從標有O的節點(用於起點)開始,然後一次向外擴展,可以輕鬆地看到此進度。

搜索的終止取決於正在執行的算法-大多數有用的算法不是單純的廣度優先搜索,而是在某種程度上被通知的(informed )。 廣度優先搜索通常在尋路算法中或需要對整個圖進行系統搜索時使用(對於圖全局算法之類的問題,我們將在第3章中進行討論)。

2.用Dijkstra的算法進行路徑查找

廣度優先搜索爲衆多經典圖形算法(包括Dijkstra算法)奠定了基礎。 Dijkstra(通常縮寫)用於查找圖中兩個節點之間的最短路徑。 Dijkstra的算法很成熟,已於1956年發佈,此後被計算機科學家廣泛研究和優化。 它的行爲如下:

  1. 選取起始節點和結束節點,然後將起始節點添加到求解的節點集合(即,距離起始節點的路徑最短的節點集合)中,值爲0(根據定義,起始節點距離其0路徑長度)。
  2. 從起始節點開始,首先遍歷寬度到最近的鄰居,並記錄每個鄰居節點的路徑長度。
  3. 選擇到這些鄰居之一的最短路徑(在平局的情況下任意選擇)並將該節點標記爲已解決,因爲現在我們知道從起始節點到該鄰居的最短路徑。
  4. 從已求解節點的集合中,訪問最近的鄰居(注意廣度優先的進程),並記錄從起始節點到這些新鄰居的路徑長度。 不要訪問任何已經解決的相鄰節點,因爲我們知道到達它們的最短路徑。
  5. 重複步驟3和4,直到已將目標節點標記爲已解決。

Dijkstra算法的效率

Dijkstra的算法非常有效,因爲它僅計算通過圖形的可能路徑的相對較小子集的長度。 當我們解決了一個節點後,就會知道從起始節點開始的最短路徑,從而使所有後續路徑都可以安全地基於該知識。

實際上,Dijkstra算法的最快已知最壞情況實現的性能爲O(| R | + | N | log | N |)。 即,該算法在時間上運行,該時間與圖中的關係數成正比,再加上節點數的大小乘以節點集大小的對數即可。 原始值爲O(| R | ^ 2),這意味着它的運行時間與圖中關係數的大小的平方成正比。

Dijkstra通常用於查找現實世界中最短的路徑(例如,用於導航)。 這是一個例子。 在圖7-2中,我們看到了澳大利亞的邏輯地圖。 我們的挑戰是要找到東海岸悉尼(標記爲SYD)和珀斯(西海岸)相距最遠的珀斯之間最短的行駛路線。 其他主要城鎮均標有各自的機場代碼; 一路上我們會發現很多。

從圖7-3中代表悉尼(Sydney)的節點開始,我們知道到悉尼(Sydney)的最短路徑是0小時,因爲我們已經到了那裏。 根據Dijkstra的算法,在我們知道從悉尼(Sydney)到悉尼(Sydney)的最短路徑的情況下,悉尼(Sydney)現在可以求解。因此,我們將表示悉尼(Sydney)的節點變灰,添加路徑長度(0),並加粗了節點的邊界,這是一個慣例 在本示例的其餘部分中,我們將繼續進行維護。

從悉尼上移一層,我們的候選城市是布里斯班,它位於北部9小時路程處; 堪培拉,澳大利亞的首都,位於西部4小時路程處; 和墨爾本,它位於南部12小時路程處。

我們可以找到的最短路徑是悉尼到堪培拉(4小時),因此我們認爲可以解決堪培拉,如圖7-4所示。

正如我們已經看到的那樣,已解決節點中的下一個節點是墨爾本,距悉尼經堪培拉(Canberra)10小時,或距悉尼直接12小時。 我們還有愛麗絲泉(Alice Springs),距堪培拉(Canberra)15小時,距悉尼(Sydney)19小時,或布里斯班(Brisbane),距悉尼(Sydney)9小時直達。

因此,我們探索了一條最短的路徑,即從悉尼到布里斯班的9個小時,並考慮布里斯班在9個小時就解決了,如圖7-5所示。

我們所求解的節點中的下一個相鄰節點是墨爾本,這是經過堪培拉的10個小時,或者從悉尼沿着另一條路直達12個小時; 凱恩斯(Cairns),從悉尼經布里斯班出發,需要31個小時; 還有愛麗絲泉(Alice Springs),從布里斯班出發需要40個小時,而從堪培拉出發則需要19個小時。

因此,我們選擇了最短的路線,即墨爾本,經過堪培拉,距悉尼10小時路程。 這比現有的12小時直接鏈接短。 現在我們考慮解決墨爾本問題,如圖7-6所示。

在圖7-7中,已解決節點的下一個相鄰節點層是距悉尼18小時路程(經堪培拉和墨爾本)的阿德萊德; 凱恩斯(Cairns),距悉尼31小時車程(經布里斯班); 和愛麗絲泉(Alice Springs),從悉尼經堪培拉(Canberra)到達19小時,或從布里斯班(brisbane)到達40小時。 我們選擇阿德萊德,並且認爲它可以解決18小時。

我們不考慮路徑Melbourne→Sydney,因爲其目的地是一個已解決的節點-實際上,在這種情況下,它是起始節點Sydney。

我們已解決的節點中的下一個相鄰節點層是珀斯,這是我們的最終目的地,從悉尼經過阿德萊德需要50個小時; 愛麗絲泉(Alice Springs),從悉尼經過堪培拉(Canberra)到這裏需要19個小時,或者經過阿德萊德(Adelaide)到33小時; 凱恩斯(Cairns),從悉尼經布里斯班出發,需要31個小時。

在這種情況下,我們選擇Alice Springs是因爲它具有當前最短的路徑,即使從大局的角度來看,我們知道從阿德萊德(Adelaide)到珀斯(Perth)最終實際上會更短-只要問任何經過的叢林人即可。 我們的成本爲19小時,如圖7-8所示。

在圖7-9中,已解決節點的下一個相鄰節點層是經過布里斯班(Brisbane)31個小時的凱恩斯(Cairns)或通過Alice Springs的43個小時,或者通過Alice Springs的34個小時的達爾文(Darwin),或者通過50個小時的阿德萊德(Brisbane)的珀斯(Perth)。 因此,我們將選擇通過布里斯班(Brisbane)前往凱恩斯(Cairns)的路線,並認爲凱恩斯以31小時的最快車程從悉尼(Sydney)得以解決。

已解決節點的下一個相鄰節點層是距愛麗絲泉(Alice Springs)34小時的達爾文(Darwin),經凱恩斯(Cairns)的61小時,或經過50小時的阿德萊德(Adelaide)的珀斯(Perth)。 因此,我們選擇了從愛麗絲泉到達爾文的路線,花費了34個小時,並考慮了達爾文(Darwin)的解決,如圖7-10所示。

Dijkstra的算法效果很好,但是由於其探索是無方向性的,因此有些病理圖拓撲可能會導致最壞情況下的性能問題。在這種情況下,我們探索的圖比直觀上需要的更多—在某些情況下,我們探索了整個圖。 圖形。 由於每個可能的節點在相對隔離的情況下一次被視爲一個,因此該算法必須遵循直觀上永遠不會構成最終最短路徑的路徑。

儘管Dijkstra的算法已成功計算出悉尼和珀斯之間的最短路徑,但是任何對地圖閱讀有直覺的人都不會選擇從阿德萊德向北探索這條路線,因爲它感覺更長。 如果我們有某種啓發式的機制來指導我們,例如進行最佳優先搜索(例如,偏向西向東,偏向南而不向北),我們可能會避免前往布里斯班,凱恩斯,愛麗絲泉和達爾文的行程 在這個例子中。 但是最佳優先搜索是貪婪的,即使在途中有障礙物(例如泥濘小路),也要嘗試朝目標節點移動。 我們可以做得更好。

3.A *算法

A *(發音爲“ A-star”)算法是對經典Dijkstra算法的改進。它基於這樣的觀察:一些搜索被告知,並且通過被告知,我們可以更好地選擇通過圖形的路徑。 在我們的示例中,通過先遍歷整個大陸到達爾文,就不會從悉尼到珀斯進行明智的搜索。 A *就像Dijkstra一樣,可以潛在地搜索大範圍的圖,但是就其使用啓發式方法進行引導而言,它也像是貪婪的最佳第一搜索。 A *結合了Dijkstra算法的各個方面,該算法優先選擇靠近當前起點的節點,而Best-first搜索則優先選擇靠近目標節點的節點,從而提供了一種可證明的最優解決方案,用於查找圖中的最短路徑。

在A *中,我們將路徑成本分爲兩部分:g(n),即從起點到某個節點n的路徑成本; h(n)表示從節點n到目標節點的路徑的估計成本,由啓發式(智能猜測)計算得出。 A *算法在迭代圖時平衡g(n)和h(n),從而確保在每次迭代時選擇總成本最低的節點f(n)= g(n)+ h(n)。

如我們所見,廣度優先算法對於路徑查找特別有用。 但是它們還有其他用途。 使用廣度優先搜索作爲迭代圖的所有元素的方法,我們現在可以考慮圖論中許多有趣的高階算法,這些算法可以對連接數據的行爲進行預測。

4.圖論與預測建模

圖論是關於網絡(或從我們的角度來看,連接數據)的性質的成熟且易於理解的研究領域。 由圖論理論家開發的分析技術可以解決一系列有趣的問題。 現在,我們瞭解了低級遍歷機制,例如廣度優先搜索,我們可以開始考慮高階分析了。

圖論技術廣泛適用於各種問題。 當我們第一次想獲得對新域的瞭解,甚至瞭解從域中提取什麼樣的見解時,它們特別有用。 在這種情況下,我們可以直接應用圖論和社會科學等一系列技術來獲得洞察力。

在接下來的幾節中,我們將介紹社交圖論中的一些關鍵概念。 我們將根據社會學家Mark Granovetter,David Easley和Jon Kleinberg的著作,在社會領域的背景下介紹這些概念。

屬性圖和圖論

關於圖論的許多工作都假設模型與本書中一直使用的特性圖略有不同。 這項工作往往會忽略圖形的方向和標籤,而是假設與來自域的單個標籤(例如Friend或Colleague)之間存在無方向的關係。

我們將在此處採用混合方法。 我們將名稱添加到關係中,以幫助添加特定於域的含義。 但是,在許多情況下,我們將忽略關係方向。 但是,這不會影響分析。 無論其結構如何,圖結構都遵循相同的原理。

4.1.三元閉包/閉合(Triadic Closures)

三元閉包是社交圖的一個共同屬性,在該圖中我們觀察到,如果兩個節點通過涉及第三個節點的路徑連接,那麼將來在某些時候兩個節點直接連接的可能性就會增加。 這是一個熟悉的社交事件。 如果我們碰巧與兩個彼此不認識的人成爲朋友,那麼這兩個人在將來的某個時刻成爲直接朋友的可能性就會增加。 我們與他們倆都是朋友這一事實爲每個人提供了直接成爲朋友的手段和動機。 也就是說,通過與我們在一起閒逛,兩個人相遇的機會增加了,如果他們相遇了,他們很有可能會基於彼此對我們的信任和我們的友誼選擇而互相信任。 他們倆都是我們的朋友這一事實表明,彼此之間可能在社會上相似。

根據他的分析,Granovetter指出,如果子圖的節點A與其他兩個節點B和C,B和C的關係密切,則該子圖將保持強三合子閉合特性。 這是一個大膽的斷言,並不總是適用於圖中的所有子圖。 儘管如此,它已經足夠普遍,尤其是在社交網絡中,可以作爲可靠的預測指標。

強弱關係

我們不會定義弱關係和強關係,因爲它們特定於每個域。 在社交通訊網絡中,可以說在上週交換過電話的朋友之間存在牢固的社交關係,而據說社交關係較弱的社交關係是那些僅僅觀察到彼此Facebook狀態的朋友之間的聯繫。

讓我們看看強大的三合會封閉屬性如何在工作場所圖中用作預測輔助。 我們將從一個簡單的組織層次結構開始,在該層次結構中,Alice管理Bob和Charlie,但是下級之間還沒有任何聯繫,如圖7-12所示。

對於工作場所來說,這是一個相當奇怪的情況。 畢竟,鮑勃和查理不太可能成爲彼此的陌生人。 如圖7-13所示,無論他們是高層管理人員,因此是愛麗絲的行政管理人員中的同齡人,還是他們是流水線工人,因此他們都是愛麗絲領導下的領班,甚至非正式地,我們都可能期望鮑勃和查理 以某種方式連接。

因爲Bob和Charlie都與Alice一起工作,所以很可能最終會一起工作,如圖7-13所示。 這與強三合會閉包屬性一致,這表明鮑勃是查理的同伴(我們稱之爲弱者)或鮑勃與查理一起工作(我們稱之爲強者)。 在鮑勃和查理之間添加第三個WORKS_WITH或PEER_OF關係將閉合三角形-因此,術語三重閉合。

來自許多領域的經驗證據包括社會學,公共衛生,心理學,人類學乃至技術(例如Facebook,Twitter,LinkedIn)都表明,三合會封閉的趨勢是真實而實質的。 這與傳聞證據和觀點一致。 但是,簡單的幾何圖形並不能滿足您的全部需求:圖中涉及的關係的質量也與穩定的三元閉合的形成有很大關係。

4.2.結構平衡(Structural Balance)

如果我們回想一下圖7-12,可以很直觀地看到Bob和Charlie如何在Alice的管理下成爲同事(或同伴)。 出於示例目的,我們將假設MANAGES關係有點消極(畢竟,人們不喜歡被老闆欺負),而PEER_OF和WORKS_WITH關係卻是積極的(因爲人們通常喜歡他們的同齡人和人們 他們一起工作)。

從前面關於強三合會閉包原理的討論中我們知道,在圖7-12中Alice管理Bob和Charlie的情況下,應該形成三合會閉包,也就是說,在沒有任何其他約束的情況下,我們期望至少有PEER_OF ,WORKS_WITH甚至是Bob和Charlie之間的MANAGES關係。

如果愛麗絲(Alice)管理鮑勃(Bob),而鮑勃(WORKS_WITH)查理(Charlie),則存在類似的趨勢,即形成三元閉合,如圖7-14所示。 有趣的是:如果鮑勃和查理一起工作,那麼讓他們共享一個經理是很有意義的,尤其是在該組織貌似允許查理在沒有管理監督的情況下運作的情況下。

但是,盲目地應用強大的三合會封閉原則可能會導致某些相當奇怪且看起來不舒服的組織層次結構。 例如,如果愛麗絲(Alice)管理鮑勃(Bob)和查理(Charlie),但鮑勃(Bob)也管理查理(Charlie),我們就有不滿的祕訣。 如圖7-15所示,沒人希望查理像他那樣由他的老闆和老闆的老闆共同管理。

同樣,如果鮑勃與愛麗絲的同事查理一起工作時,如果鮑勃由愛麗絲管理,那會讓他不舒服。 如圖7-16所示,這在組織層之間難於進行切換。 這也意味着,鮑勃永遠無法在支持同齡人小組中放心地談論愛麗絲的管理風格。

圖7-16中尷尬的等級結構使Charlie既是老闆的同伴又是另一工人的同伴,在社交上不太可能令人愉悅,因此Charlie和Alice會反對它(想要成爲老闆或工人)。 對於Bob來說,情況也類似,他不確定是否應該像對待經理Alice一樣對待Charlie(因爲Charlie和Alice是同齡人)還是作爲自己的直接同齡人。

很明顯,圖7-15和7-16中的三元組閉合使我們感到不舒服,從而避免了我們固有的結構對稱性和合理分層的偏好。 這種偏好在圖論中被賦予了一個名稱:結構平衡。

有趣的是,如果愛麗絲(Alice)管理鮑勃(Bob)和查理(Charlie),那麼在結構上更加平衡的三元組閉包是可以接受的,但是鮑勃(Bob)和查理(Charlie)本身是通過WORKS_WITH關係連接的同事,如圖7-17所示。

相同的結構平衡體現在一個同樣可以接受的三合會封閉中,其中Alice,Bob和Charlie都是同事。 在這種安排中,工人在一起,這可能是一種社交友好的安排,引起了友愛,如圖7-18所示。

在圖7-17和7-18中,三元組閉包是慣用的,並使用三個WORKS_WITH關係或兩個MANAGES和一個WORKS_WITH關係構造。 它們都是平衡的三元組閉包。 爲了理解平衡和不平衡的三元組閉包的含義,我們將通過聲明WORKS_WITH關係在社會上是積極的(因爲母牛的人花費大量時間進行交互)來爲模型增加更多的語義豐富性,而MANAGES是消極的 之所以建立這種關係,是因爲經理在管理工作上與個人互動所花費的時間總體較少。

有了積極和消極情緒的新維度,我們現在可以問一個問題:“這些平衡結構有何特別之處?”很明顯,三合會的強勢封閉仍在起作用,但這並不是唯一的推動力。 在這種情況下,結構平衡的概念也會起作用。 結構上平衡的三合會閉包由所有強烈情感的關係(我們的WORKS_WITH或PEER_OF關係)或兩個具有負面情感的關係(在本例中爲MANAGES)和一個積極關係組成。

我們在現實世界中經常看到這種情況。 如果我們有兩個好朋友,那麼社會壓力就會使那些好朋友自己變成好朋友。 那兩個朋友自己是敵人,這很不尋常,因爲這使我們所有的友誼都承受了壓力。 一個朋友無法向我們表達對另一個人的厭惡,因爲另一個人也是我們的朋友! 面對這些壓力,該小組將解決分歧並結識好朋友是一個結果。 這會將我們不平衡的三合會封閉(兩個具有積極情緒的關係,一個消極情緒)變爲平衡的封閉,因爲所有關係都將是積極情緒,就像我們的合作計劃一樣,其中愛麗絲,鮑勃和查理在圖7-18中一起工作 。

但是,可能的結果(儘管可能不那麼令人愉快)將是我們站在“朋友”之間的爭端中,在兩個帶有消極情緒的關係中建立關係-有效地結成一個人。 現在,我們可以閒聊關於我們對前朋友的相互厭惡,關閉也再次變得平衡。 同樣,我們也看到了這種情況,這反映在組織場景中,通過管理鮑勃和查理,愛麗絲實際上成爲了他們的職場敵人,如圖7-17所示。

在現實世界中挖掘組織數據

我們不必通過分析組織結構圖來得出這些圖,因爲這是對組織實際工作方式的靜態且通常不一致的看法。 實際而及時的生成圖表的方法將是對公司內個人之間的電子通信歷史進行此類分析。

在圖表數據庫中以圖表的形式存儲和查詢這些交互是很簡單的,因此,我們可以通過尋找創建平衡的關閉機會來對組織結構的演變進行預測分析。 這種結構可能是一個福音—我們觀察到員工已經在自我組織以取得成功。 否則可能表明存在某種不當行爲-一些員工正走入陰暗的角落進行公司欺詐! 無論哪種方式,圖的預測能力都使我們能夠主動參與這些問題。

平衡的閉包爲圖形的預測能力增加了另一個維度。 只需尋找機會在整個圖上創建平衡的閉合,即使是非常大的規模,我們也可以修改圖結構以進行準確的預測分析。 但是我們可以走得更遠,在下一節中,我們將引入本地橋樑的概念,它使我們對組織的通信流程具有寶貴的見解,而從中獲得的知識便是可以對其進行適應以應對未來挑戰的能力。

5.本地橋樑(Local Bridges)

我們一直使用的只有三個人的組織是異常的,我們在本節中研究的圖形最好被認爲是較大組織層次結構中的小子圖。 當我們開始考慮管理更大的組織時,我們期望的是更爲複雜的圖結構,但是我們也可以將其他啓發式方法應用於該結構,以幫助理解業務。 實際上,一旦將組織的其他部分引入到圖中,就可以基於局部作用的強三合子閉合原理來推理圖的全局屬性。

在圖7-19中,我們看到了一個違反直覺的場景,其中組織中的兩個小組分別由愛麗絲和達維納管理。 但是,我們的結構有些尷尬,愛麗絲不僅與鮑勃和查理一起經營一支球隊,而且還管理着達維納。 儘管這不是不可能的範圍(愛麗絲確實有這種職責),但從組織設計的角度來看,它在直覺上感覺很尷尬。

從圖論的角度來看,這也是不可能的。 由於愛麗絲參與了兩個牢固的關係,即她管理查理(和鮑勃)和管理達維納,所以自然地我們想通過在達維納和查理(和鮑勃)之間添加至少PEER_OF關係來創建三合會閉包。 但是,愛麗絲還參與了通向達維納的本地橋樑,它們共同構成了組織中各個小組之間的唯一溝通途徑。 與Alice MANAGES Davina建立關係意味着我們實際上必須創建封口。 這兩個屬性(局部橋接和強力三合會閉合)是對立的。

但是,如果Alice和Davina是同伴(弱關係),則不會激活強三合會閉合原理,因爲只有一個強關係(與Bob(或Charlie)的MANAGES關係),並且本地橋屬性儘可能有效 參見圖7-20。

這個本地網橋的有趣之處在於它描述了我們組織中各組之間的溝通渠道。 這樣的渠道對於我們企業的生命力至關重要。 特別是,爲了確保公司的健康,我們將確保本地橋樑的關係健康且活躍,或者同樣,我們可能會密切關注本地橋樑,以確保不發生不當行爲(盜用,欺詐等)。

 

尋找下一份工作

弱鏈接的這種概念在(社交)工作搜索等算法中特別相關。 求職的非凡之處在於,很少有人會提供最好的推薦,而是一個較寬鬆的熟人。

爲什麼會這樣呢? 我們的密友具有相似的世界視圖(它們在同一圖形組件中),並且對可用的職位數據具有相似的訪問權限,並對這些職位持有相似的觀點。 跨過本地橋樑的朋友顯然處於不同的社交網絡(不同的組成部分)中,相應地獲得工作的機會也不同,並且對工作的看法也不同。 因此,如果您要尋找工作,請跨過本地橋樑,因爲在那裏您和您的朋友有不同的瞭解。

作爲弱鏈接(在我們的示例組織中爲PEER_OF)的本地橋樑具有相同的屬性,這種屬性在整個社交圖中都非常普遍。 這意味着我們可以根據經驗得出的本地橋樑和強大的三合會封閉概念開始對組織的發展進行預測分析。 因此,給定一個任意的組織圖,我們可以看到業務結構可能如何發展併爲這些可能情況進行計劃。

6.摘要

圖是真正了不起的結構。 我們對它們的理解源於數百年的數學和科學研究。 但是,我們纔剛剛開始瞭解如何將其應用於我們的個人,社交和商業生活。 該技術在這裏是開放的,並且以現代圖形數據庫的形式對所有人開放,機遇無窮。

正如我們在本書中所看到的,圖論算法和分析技術並不苛刻。 我們只需要瞭解如何應用它們來實現我們的目標。 在本書中,我們簡單地呼籲:擁抱圖形和圖形數據庫。 充分利用您所學到的關於圖形建模,圖形數據庫體系結構,設計和實現圖形數據庫解決方案,以及將圖形算法應用於複雜的業務問題的知識,並着手構建下一個真正的開拓性信息系統。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章