在ArangoDB中實現connectedcomponents算法

操做環境:

tool:ArangoDB 3.3.13git

操做系統:Debian 7.2.0-20github

概念:

Connected Components即連通體算法。用id標註圖中每一個連通體,將連通體中序號最小的頂點的id做爲連通體的id。算法

若是在圖G中,任意2個頂點之間都存在路徑,那麼稱G爲連通圖,不然稱該圖爲非連通圖,則其中的極大連通子圖稱爲連通體,以下圖所示,該圖中有兩個連通體:ui

實例:

建立集合

//testv LET data = [{"_key":"6014c5cac3424d8386dac12c46017c03","host_name":"Salih Tektase"}, {"_key":"6014c5ccca5b4cae893257bf86f0ead0","host_name":"Aditya Bramhan"}, {"_key":"6014c5c80177417fbfd0faf9d5fb31a4","host_name":"Ica palya"}, {"_key":"6014c5c891e54e4a8903cd306d55eb26","host_name":"null"}, {"_key":"6014c5c8f29d426686d6c30152a01459","host_name":"Boanny Patel"}, {"_key":"6014c5ccd2484a4581137ab8aa245ba7","host_name":"El Chapo"}, {"_key":"6014c5c8f1cb47ff886dd1991d19e59d","host_name":"Andrej Altuchov"}, {"_key":"6014c5dd17b54eda83e02e8dd913dba0","host_name":"Maria"}, {"_key":"6014c5e78bfd4051a421bd6adf017e56","host_name":"null"}, {"_key":"6014c5f1c88e40a6a1aa88da08d7c404","host_name":"Aaron Villaflor"}] for d in data insert d into testv
//teste LET data = [{"_key":"2716265062","_from":"testv/6014c5ccca5b4cae893257bf86f0ead0","_to":"testv/6014c5cac3424d8386dac12c46017c03"}, {"_key":"2716265063","_from":"testv/6014c5c80177417fbfd0faf9d5fb31a4","_to":"testv/6014c5cac3424d8386dac12c46017c03"}, {"_key":"2716265064","_from":"testv/6014c5ccd2484a4581137ab8aa245ba7","_to":"testv/6014c5c8f29d426686d6c30152a01459"}, {"_key":"2716265065","_from":"testv/6014c5e78bfd4051a421bd6adf017e56","_to":"testv/6014c5dd17b54eda83e02e8dd913dba0"}, {"_key":"2716265066","_from":"testv/6014c5f1c88e40a6a1aa88da08d7c404","_to":"testv/6014c5dd17b54eda83e02e8dd913dba0"}, {"_key":"2716265067","_from":"testv/6014c5c8f29d426686d6c30152a01459","_to":"testv/6014c5c891e54e4a8903cd306d55eb26"}, {"_key":"2716265068","_from":"testv/6014c5c891e54e4a8903cd306d55eb26","_to":"testv/6014c5ccd2484a4581137ab8aa245ba7"}, {"_key":"2716265069","_from":"testv/6014c5c8f1cb47ff886dd1991d19e59d","_to":"testv/6014c5e78bfd4051a421bd6adf017e56"}] for d in data insert d into teste
//teste2 LET data = [{"_key":"3016636","_from":"testv/6014c5cac3424d8386dac12c46017c03","_to":"testv/6014c5ccca5b4cae893257bf86f0ead0"}, {"_key":"3016637","_from":"testv/6014c5cac3424d8386dac12c46017c03","_to":"testv/6014c5c80177417fbfd0faf9d5fb31a4"}, {"_key":"3016639","_from":"testv/6014c5dd17b54eda83e02e8dd913dba0","_to":"testv/6014c5e78bfd4051a421bd6adf017e56"}, {"_key":"3016641","_from":"testv/6014c5c891e54e4a8903cd306d55eb26","_to":"testv/6014c5c8f29d426686d6c30152a01459"}, {"_key":"3016638","_from":"testv/6014c5c8f29d426686d6c30152a01459","_to":"testv/6014c5ccd2484a4581137ab8aa245ba7"}, {"_key":"3016640","_from":"testv/6014c5dd17b54eda83e02e8dd913dba0","_to":"testv/6014c5f1c88e40a6a1aa88da08d7c404"}, {"_key":"3016642","_from":"testv/6014c5ccd2484a4581137ab8aa245ba7","_to":"testv/6014c5c891e54e4a8903cd306d55eb26"}, {"_key":"3016643","_from":"testv/6014c5e78bfd4051a421bd6adf017e56","_to":"testv/6014c5c8f1cb47ff886dd1991d19e59d"}] for d in data insert d into teste2

建立圖

運行算法

var pregel = require("@arangodb/pregel") var handle = pregel.start("connectedcomponents", "cc", {maxGSS: 250, resultField: "component"})

查看進程:url

var status = pregel.status(handle);

結果

 

 

參考資料:

https://github.com/arangodb/arangodb/issues/4062spa

https://blog.csdn.net/zryowen123/article/details/77386992操作系統

相關文章
相關標籤/搜索