问题标签 [graph-traversal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - Neo4j 图形数据库与属性的关系
我正在开发一些用于学习图形数据库的东西。我在以下部分中找到了查询的最短路径:
但是我对此有疑问。该查询将返回最短路径并且不考虑 ROUTE 属性。我的意思是,如果存在相同的属性,我想获得具有关系的最短路径。
节点 A ==> :RELATION(ROUTE_ID=180) ==> 节点 B ==> :RELATION(ROUTE_ID=180) ==> 节点 C ==> :RELATION(ROUTE_ID=197)
当我调用正常的最短路径函数时,它通过随机属性为我提供关系。我也想关注属性。关键字是什么?如何解决该问题或如何改进该查询?
谢谢。
java - Breadth First Search: How many states of a vertex are needed?
I am working on Breadth First Search and I tried to write BFS to print all the edges. The first version is adapted from Algorithm book in which a vertex has 3 states: NOT_VISIT (initial state), VISIT and PROCESSED. A vertex is 'VISIT' when you first see it. A vertex is 'PROCESSED' when all of its neighbors are visited. The second version is the one that I wrote, use only 2 states: Initial state and VISITED. Both work:
My question is: When is it necessary to have 3 states for a vertex in BFS ? Can you give an example when we need 3 states ?
neo4j - Neo4j:传递查询和节点排序
我正在使用 Neo4j 来跟踪 OOP 架构中的关系。让我们假设节点代表类并且(u) -[:EXTENDS]-> (v)
如果类u
扩展类v
(即对于每个节点,最多有一个类型为 的出边EXTENDS
)。我正在尝试找出给定类 ( n
) 的一系列前置类。我使用了以下 Cypher 查询:
我需要以这样的顺序处理节点,即类的直接前身排在n
第一位,其前身排在第二位,依此类推。似乎 Neo4j 引擎完全按照这个顺序返回节点(给定上述查询) - 这是我应该做的吗依赖或可能会在未来的某些版本中突然改变这种行为?
如果我不应该依赖这种行为,什么 Cypher 查询将允许我以给定的顺序获取所有前驱节点?我正在考虑以下查询:
这会很好,但我想避免指定根类(Object
在这种情况下)。
groovy - 使用 Gremlin 在二分图上随机游走
我想根据给定的用户偏好(用户喜欢的项目)对项目进行排名,该偏好基于在 groovy 中使用 gremlin 在有向二部图上的随机游走。
该图具有以下基本结构:
[User1] ---'喜欢'---> [ItemA] <---'喜欢'--- [User2] ---'喜欢'---> [ItemB]
此后我提出的查询:
但是,此代码没有找到新项目(上面示例中的 [ItemB]),而只找到给定用户喜欢的项目(例如 [ItemA])。
为了继续步行,我需要更改什么以将循环步骤返回到“out('likes')”步骤来喂养新用户(例如 [User2])?
一旦这段代码工作,它可以被视为“个性化 PageRank”的实现吗?
这里是运行示例的代码:
和输出:
parallel-processing - neo4j 并行遍历 api
这篇文章的答案(在 neo4j 数据库中查找不同的路径)建议使用 Traversal API 来识别图中的不同路径(请参阅原始问题),而不是使用 Cypher 查询。对于包含 10,000 个节点的图,API 立即返回结果;比 Cypher 查询快得多。
我想为包含超过 100 mio 的图表创建相同的结果。节点。根据我添加到代码中的简单进度检查,识别不同的路径可能需要几个小时。数据库文件总计约。500 MB。内存似乎不是问题,但 CPU 以 12% 的速度运行(在 8 核机器上)=> 看起来该进程受 CPU 限制。有什么方法可以让进程并行运行吗?
我正在使用在 Windows 8 上运行的 Neo4j 2.1.3、JRE 1.7.0_51-b13(64 位)。
非常感谢!
neo4j - Neo4j 哈密顿路径 (TSP)
作为一个有图表的新手,我正在寻找是否可以使用 Neo4j 来计算通过所有输入航点的最佳路线(距离是边缘的权重)。
我熟悉使用 A* 和 Dijkstra 找到最短/最便宜路径的能力,但还没有找到一种简单的方法来做到这一点。由于每次计算的节点数量相对较少(< 30),我主要希望与在 Node.js 中从头开始编写解决方案相比,使用 Neo4j(如果可能的话)更容易实现,因为我猜性能不会在这个规模上不会是一个问题。
感谢您的时间!
java - 休息遍历 Neo4j java.lang.UnsupportedOperationException
这是我在 neo4j 上的第一个应用程序,我喜欢使用遍历 API 以获得更好的性能和易用性,但是当我查看其余遍历时我被难住了,大多数操作都没有实现,我正在使用 spring-data- neo4j-rest ( 3.1.2) neo4j 内核和核心版本 os 2.0 Ex。来自 Resttraversal Src(只实现了两个评估器)如果不是,我是否使用正确的版本,哪个版本支持更多的这个
需要帮助,我觉得我浪费了一天多的时间浏览解决方案....
algorithm - 通过用户定义点的 TSP
我有一些点,并且有一些点的子集,标记为“静态”。所以我需要解决 TSP,这将创建最佳路径,包括静态位置的标记点。我该如何解决?
可能我的问题可以通过另一种方式解决:点有两个主要特征 - 彼此之间的距离和时间,其中推销员必须在点。是否有一些问题可以解决这个物流任务?
UPD我不明白,非静态点的TSP如何与静态点的TSP合并?
orientdb - 遍历时携带变量
在我的 OrientDB 数据库中,我有一个文档类 A,它有 4 个字段和一个关系:
- ID
- 父母身份
- 资源
- 终端
- 相对
我需要选择具有终端集的所有元素的根元素的来源。一个例子是:
- A1: (Rel: NULL, id: 1, parentId: NULL, source: test )
- A2: (Rel: A1, id: 2, parentId: 1)
- A3: (Rel: A2, id: 3, parentId: 2)
- A4: (Rel: A3, id: 4, parentId: 3, terminal: no1 )
- A5: (Rel: A4, id: 5, parentId: 4)
我需要得到的是: 终端:no1,来源:测试
我现在能做的是获取所有来源,但我不知道它们属于哪个终端:
SELECT source FROM (TRAVERSE A.Rel FROM (SELECT FROM A WHERE terminal IS NOT NULL) WHILE $depth <= 99) WHERE parentId IS NULL
我试着玩, LET
但无法让它按照我想要的方式工作。
编辑
从 A 中选择
首先尝试使用 LET
java - 相当于密码查询的遍历描述
我有一个密码查询,我正在尝试编写等效的遍历描述,但我被顺序卡住了。
这个查询很耗内存而且很慢,遍历描述很快:
我可以在遍历描述中也有密码查询的最后两行(减少顺序)吗?之后我可以自己循环执行..