我正在尝试学习并使用GAS API在我的数据库上实现随机漫游,将每个访问过的顶点与起始顶点相关联。
我有一些问题需要了解如何才能做到这一点;我一直在审查PATHS,BFS,PR和其他GAS课程,但我不太清楚如何开始。
我认为我的实现应该扩展BaseGASProgram
并实现所需的方法。此外,作为迭代,前沿包含当前迭代的所有顶点。 前身的概念对我来说也很清楚。
但我认为我不太了解Gather,Apply,Scatter哲学以及如何在这三个概念上分布随机漫步。
此外,一旦我实现了我的代码,我该怎么称呼它?如何在我的代码中调用已经实现的算法(PR,SSSP,BFS等)?我应该实例化一个SSSP
对象,然后呢?还是GASContext
? GASRunnerBase
?
答案 0 :(得分:1)
看看bigdata-gas包中的TestBFS类:
final IGASEngine gasEngine = getGraphFixture()
.newGASEngine(1/* nthreads */);
try {
final SailConnection cxn = getGraphFixture().getSail()
.getConnection();
try {
final IGraphAccessor graphAccessor = getGraphFixture()
.newGraphAccessor(cxn);
final IGASContext<BFS.VS, BFS.ES, Void> gasContext = gasEngine
.newGASContext(graphAccessor, new BFS());
final IGASState<BFS.VS, BFS.ES, Void> gasState = gasContext
.getGASState();
// Initialize the froniter.
gasState.setFrontier(gasContext, p.getMike());
// Converge.
gasContext.call();
[snip]
要在测试用例上下文之外使用它,您需要创建某种SailConnection
。有关示例,请参阅 blazegraph-samples GitHub项目。然后你需要创建一个SAILGASEngine
。这应该让您开始直接在Java层调用GASEngine
。