這樣就使得對存放在磁碟中的邊的訪問絕大部分是順序進行的,減少了隨機訪問可能導致的系統效能下降。
(graphchi** osdi』12)
graphchi採用了以頂點為中心(vertex centric)的程式設計模型,相鄰頂點之間通過邊來傳遞訊息,使用者在實現圖挖掘相關演算法時只用考慮單個頂點如何處理,具體細節如頂點並行等交由graphchi engine解決。系統對外提供了乙個名為graphchiprogram的抽象結構體(相當於演算法的模板),該結構體內包含了以下幾個虛函式:
virtual
void before_iteration(int iteration, graphchi_context &gcontext)
virtual
void after_iteration(int iteration, graphchi_context &gcontext)
virtual
bool repeat_updates(graphchi_context &gcontext)
virtual
void before_exec_interval(vid_t window_st, vid_t window_en, graphchi_context &gcontext)
virtual
void after_exec_interval(vid_t window_st, vid_t window_en, graphchi_context &gcontext)
virtual
void update(vertex_t &v, graphchi_context &gcontext)=0
其中重要的是純虛函式update,使用者在繼承graphchiprogram時必須實現update函式(系統對每個頂點都呼叫update函式),在函式體中寫入自己的頂點處理邏輯。
graphchi引擎在每次迭代中,對每個interval首先呼叫before_iteration,然後呼叫before_exec_interval(可以不實現),接下來就是update,然後呼叫after_exec_interval,將整個圖中的所有頂點(即所有interval)遍歷一遍後呼叫after_iteration(我們可以結合before_iteration來判斷演算法是否已近結束) -
-file=/home/data/web
.txt--
membudget_mb=200--
source=1
走出迷宮 詳細介紹BFS
bfs介紹 已知圖g v,e 和乙個源頂點s,寬度優先搜尋以一種系統的方式探尋g的邊,從而 發現 s所能到達的所有頂點,並計算s到所有這些頂點的距離 最少邊數 該演算法同時能生成一棵根為s且包括所有可達頂點的寬度優先樹。對從s可達的任意頂點v,寬度優先樹中從s到v的路徑對應於圖g中從s到v的最短路徑...
BFS及DFS的Java實現
bfs 廣度優先遍歷,breadth first search 及dfs 深度優先遍歷,depth first search 是遍歷樹或圖的兩種最常用的方法。本文簡單的講解在面對樹或者圖的問題時,使用bfs及dfs解答題目時的思路及實現。根據上圖就可以很清晰的理解出bfs的概念,即一層一層的遍歷。在...
BFS(廣度優先搜尋)解決迷宮問題(JAVA實現)
問題 迷宮問題 現有乙個m n的方陣,其中有若干個路障,先要求求出從出發點s到終點e的最短路徑,跨越每個方格的時間固定,均為1。思路 本題的解答可以用廣度優先搜尋 bfs 來做,廣度優先搜尋本質上是動態規劃的一種應用,先求出演算法第一步中所有的可行解,然後對解空間中的每乙個可行解依次執行演算法的下乙...