2

我正在尝试学习和使用 GAS API 在我的数据库上实现随机游走,将每个访问的顶点与起始顶点相关联。

我在理解如何做到这一点时遇到了一些问题;我一直在回顾 PATHS、BFS、PR 和其他 GAS 类作为示例,但我不太确定如何开始。

我认为我的实现应该扩展BaseGASProgram和实现所需的方法。此外,作为迭代,边界包含当前迭代的所有顶点。前任的概念我也很清楚。

但我认为我不太了解 Gather、Apply、Scatter 哲学以及如何将 Random Walk 分布在这三个概念上。

另外,一旦我实现了我的代码,我该如何调用它?我如何在我的代码中调用已经实现的算法(PR、SSSP、BFS 等)?我应该实例化一个SSSP对象,然后呢?或者GASContextGASRunnerBase?

4

1 回答 1

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. 这应该让您开始GASEngine直接在 Java 层调用。

于 2016-03-29T16:48:25.890 回答