Does anyone knows if there exists a breadth first(from multiple sources) implementation in either of the graph processing systems- Giraph, Pregel or Graphchi.
Or please tell some easier implementation on either of the systems.
Does anyone knows if there exists a breadth first(from multiple sources) implementation in either of the graph processing systems- Giraph, Pregel or Graphchi.
Or please tell some easier implementation on either of the systems.
In the Giraph user mail list, one can find a few discussions - and i guess an implementation also - of BFS implementation.
I have made this type of search for Giraph in the past and they are available at:
https://github.com/MarcoLotz/GiraphBFSSO
https://github.com/MarcoLotz/GiraphBFSTO
The difference between them is that one is target oriented and other one is structure oriented.
Although they are not from multiple start vertex, one can easily modify the code to support it :)
You are looking for the multi-seed breadth first search (BFS) algorithm.
For Giraph, this is still an open issue as can be read in this feature request.
For Pregel, you can not expect to find any open algorithm as Pregel is a closed-source graph system at Google.
I guess the easiest thing would be to use the code from Github and execute it for each source separately. One idea to optimize the algorithm's runtime complexity is to execute BFS for the first seed vertex and reuse your results for subsequent vertex seeds (the first BFS results in a spanning tree which can be easily transformed to a BFS order for any given seed vertex).
Nevertheless, KISS suggests to simply execute k times BFS for k seed vertices until you run into performance issues (which is unlikely due to linear runtime complexity of BFS).