首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免循环的图形数据库设计

避免循环的图形数据库设计
EN

Stack Overflow用户
提问于 2022-11-07 10:56:57
回答 1查看 37关注 0票数 -1

我正在设计一个计算商业集装箱最佳运输路线的系统。

因此,容器通常采用的路径是:

皮卡 -> 装货港 -> 目的地港 -> 交付

我已经编制了一个已知地点的清单,可以从这些地点(如城市)和港口的清单,以及这些港口之间的联系。

在这里可以看到数据的样本。

在寻找、奥斯汀、->、法兰克福、之间的路由时,图应该只返回以下路径:

  1. 奥斯汀->佛罗里达->佛罗里达港汉堡港->法兰克福

奥斯丁->,纽约->港,纽约港,->港,伦敦港,汉堡港,->Frankfurt被排除在外,因为它有两个国际步骤

例如,图还返回往返行程(不应该返回)。

奥斯汀,->,佛罗里达,->,佛罗里达港,->,汉堡,->,柏林,->,汉堡,->,法兰克福

到目前为止,我已经编写了以下gremlin查询

代码语言:javascript
复制
g.V(*from_vertices)
    .repeat(
        outE()
        .has("ff_id", within(ff_id, "ANY"))
        .has("quote_methods", containing(quote_method.value))
        .has("valid_to", gte(current_date))
        .has("valid_from", lte(current_date))
        .in_v()
    )
    .until(hasId(within(*to_vertices)))
    .path()
    .as_("p")
    .map(unfold().coalesce(values("international_stops"), constant(0)).sum_())
    .as_("international_stops")
    .filter_(select("international_stops").is_(lte(1)))
    .select("p")
    .map(unfold().coalesce(values("pricing_document_ids"), constant("")).fold())
    .to_list()

我面临两个问题:

图中的

  1. 循环包含许多循环,除了直接的循环外,它还包含任意数量的边沿
  2. ,由于内存和性能的限制,无法获得所有路径,然后过滤包含
  3. 的路径。
EN

回答 1

Stack Overflow用户

发布于 2022-11-07 12:41:31

我相信这里缺少的是simplePath()步骤1,这将忽略repeat()步骤发现的循环。

例如:

代码语言:javascript
复制
g.V(<id>).repeat(out().simplePath()).until(hasId(<target-id>)).path()

1

2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74345499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档