我有父顶点(P)连接到子顶点(C1,C2,C3,..Cn)(通过输出边标签“DEP”),其中Cn可能非常大。这些子顶点(C1、C2、..)可以或可以不通过输出边标签“FRNDS”连接到其他顶点。在Gremlin中是否有一种方法可以找出(P)的所有子顶点,这些子顶点没有任何带有标签“frnds”的外出边?
问候你,库马尔
玩具图:
g = new TinkerGraph()
p = g.addVertex('p')
c1 = g.addVertex('c1')
c2 = g.addVertex('c2')
c3 = g.addVertex('c3')
o1 = g.addVertex('o1')
o2 = g.addVertex('o2')
g.addEdge(p, c1, 'dep')
g.addEdge(p, c2, 'dep')
g.addEdge(p, c3, 'dep')
g.addEdge(c1, o1, 'frnds')
g.addEdge(c1, o2, 'frnds')
g.addEdge(c2, o2, 'frnds')
您的查询描述的解决方案(可能不是最聪明的):
r = []; g.v('p').out('dep').store(r).outE('frnds').outV.sideEffect{r.remove(it)}
输出:
r
==>v[c3]
更新:一个更短的版本,可能也更有效:
g.v('p').out('dep').filter{!it.outE('frnds').hasNext()}
==>v[c3]
我如何从这样的图中删除所有的循环?所有的边长度都是一个,所有的边要么是垂直的,要么是水平的。图是连通的。 我想计算为了使图不包含圈而必须去除的边的最小数目。 如果包含示例代码(最好是C++、C或Java),将会非常有帮助。 更新:显然我必须找到顶点和边的数量。我的问题给出了一组类似(向下、向左、向上、向下、向左、向左、向上、向下)的指令。你从坐标平面中的(0,0)开始,在指定的方向上移动一个单位。
本文向大家介绍图的边和顶点,包括了图的边和顶点的使用技巧和注意事项,需要的朋友参考一下 图是一组称为节点或顶点的点,它们由一组称为edge的线互连。图形或图形理论的研究是数学,工程学和计算机科学领域中许多学科的重要组成部分。 图论 定义-图形(表示为G =(V,E))由一组非空的顶点或节点V和一组边缘E组成。顶点a 表示边缘的端点。一条边连接两个顶点a,b ,并由其连接的一组顶点表示。 示例-让我
一个简单的背景:我正在构建一个语义图,使用带有邻接表的BGL有向图: 我需要做的事情之一,是处理一个较小的图(子图)到我的主图。 暗示我的lambda捕获参数应该是一对(我猜是一个实际的边?)。 所以,我的问题是:我怎样才能发现在顶点的外边中是否存在类似的边呢?
所以我正在研究这个问题: 这是我目前所掌握的 首先,我想对我的答案再作核实。我对有向图不是那么熟悉,对算法的效率/复杂度也不是特别熟练。我想我做得对,但如果我需要的话,我想要一些帮助。我也在寻找任何想法,使它更有效率。这些是我脑海中最先出现的算法,所以我觉得可能有更好的方法来实现它。 谢谢
图的变换有什么算法或名称吗?可以把边变换成顶点,顶点变换成边?这样我们就可以得到一个新的图形或者类似的问题?我不确定这是否真的有意义,但我会很高兴,如果你能给我任何关于这样一个问题的提示。
我有以下图表 如果我写一个查询g.V('a')。Out(),我如何才能得到被遍历的边和在traveral中遇到的顶点的值?