首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微软GraphEngine LIKQ查询

微软GraphEngine LIKQ查询
EN

Stack Overflow用户
提问于 2017-03-11 18:47:17
回答 1查看 517关注 0票数 2

描述

我有一个简单的有向图,它有两个端节点C,E(接收器)和一个起始节点A。我使用的框架是微软的GraphEngine

我的TSL文件如下所示:图节点由一个NodeItem组成,它只是一个具有属性Id和名称的容器。该节点具有用于传出关系的OutEdges和用于传入关系的InEdges。

我知道有几种图形算法,如A*,Dijkstra,Floyd Warshall,Bellman-Ford等.它们每一个都解决了非常具体的遍历问题。到目前一切尚好。但是现在我想学习如何使用利科遍历这个图。LIKQ是一种语言集成的知识查询语言.它允许用户通过图形遍历和lambda表达式实时查询、搜索和消费知识。

问题

我想做的是:找到节点A和C以及节点A和E之间的所有最短路径。

到目前为止,我得到的是:

代码语言:javascript
复制
 List<PathDescriptor> paths = KnowledgeGraph.StartFrom(start)
            .FollowEdge("OutEdges")
            .VisitNode(_ => Action.Continue)
            .FollowEdge("OutEdges")
            .VisitNode(_ => Action.Continue)
            .FollowEdge("OutEdges")
            .VisitNode(_ => Action.Return)
            .ToList();

我可以从an通过,但这是一个手动的步骤。有没有机会让LIKQ决定如何从节点A开始,得到两条路径(到C和E)作为返回?

此外,我想知道BFS或DFS是否可以被翻译成LIKQ?

希望有人能把一些光明带入黑暗(:谢谢你提前!)

向你问好,菲尔

EN

回答 1

Stack Overflow用户

发布于 2017-04-13 08:06:39

目前,这有点棘手,扇出搜索算法不能保证发出的遍历步骤的顺序,但较短的路径实际上是提前调度的。因此,如果您在每一步中都放入Action.Continue & Action.Return,并设置一个全局标志变量--当您击中目标时,切换该位以使其他路径读取可以停止,那么您很可能会得到最短的路径。

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

https://stackoverflow.com/questions/42739177

复制
相关文章

相似问题

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