当前位置: 首页 > 知识库问答 >
问题:

通过寻找顶点和边来去除连通图中的圈

计和顺
2023-03-14

我如何从这样的图中删除所有的循环?所有的边长度都是一个,所有的边要么是垂直的,要么是水平的。图是连通的。

我想计算为了使图不包含圈而必须去除的边的最小数目。

如果包含示例代码(最好是C++、C或Java),将会非常有帮助。

更新:显然我必须找到顶点和边的数量。我的问题给出了一组类似(向下、向左、向上、向下、向左、向左、向上、向下)的指令。你从坐标平面中的(0,0)开始,在指定的方向上移动一个单位。这将创建一个图形。我如何从这组指令中得到顶点和边的数量?

共有1个答案

凌俊语
2023-03-14

由于图是连接的,如果点是,如您所写的,到

计算需要删除的边的最小数目,以便使图形不包含圈

那么你就不需要写算法了。众所周知,去除循环的结果是一棵树,所有树的边数(顶点数减去一个)相同。

如果要点是实际枚举剩余的边(或移除的边),那么您可以使用DFS(深度优先搜索)。具体地说,在DFS的输出中,您只需要保留标记为“树边”的内容。

虽然有用于DFS的C++库,但它们可能不会以这种方式枚举边缘,而且自己编写代码可能会更容易。如您所见,伪代码相当简单。

 类似资料:
  • 我知道在中是一个顶点,去掉后图就断开了。对于Java代码,我访问了以下链接http://algs4.cs.princeton.edu/41undirected/biconnected.Java.html。 在上面的图中没有,因为图不会因为去掉任何一个顶点而断开连接。但是我们可以通过移除一个以上的顶点来使图断开连接,例如,如果我们移除4、6个顶点,图就会断开连接。 如何找到一组顶点,这样在去掉那些顶

  • 我有父顶点(P)连接到子顶点(C1,C2,C3,..Cn)(通过输出边标签“DEP”),其中Cn可能非常大。这些子顶点(C1、C2、..)可以或可以不通过输出边标签“FRNDS”连接到其他顶点。在Gremlin中是否有一种方法可以找出(P)的所有子顶点,这些子顶点没有任何带有标签“frnds”的外出边? 问候你,库马尔

  • 我想知道是否有人能帮我,我遇到了一个问题,在spark中为graphx编写的函数,如果我有没有边的顶点,它总是给出错误消息。

  • 在这里,我试图断开图中的两个顶点,尽可能减少边的去除。 对此有没有具体的算法? 我找到了一些用最大流最小割问题来解决这一问题的建议,但我还没有得到将这一问题转化为最大流最小割定理的一般思想。同样,在这个过程中,我可能会在F和G之间去掉一条边,这是无用的。

  • 本文向大家介绍图的边和顶点,包括了图的边和顶点的使用技巧和注意事项,需要的朋友参考一下 图是一组称为节点或顶点的点,它们由一组称为edge的线互连。图形或图形理论的研究是数学,工程学和计算机科学领域中许多学科的重要组成部分。 图论 定义-图形(表示为G =(V,E))由一组非空的顶点或节点V和一组边缘E组成。顶点a 表示边缘的端点。一条边连接两个顶点a,b ,并由其连接的一组顶点表示。 示例-让我

  • 我想在无向图中找到一个强连通分量,即如果我从一个节点开始,那么我将回到节点,并且每个边都被精确地访问一次。 对于有向图,可以用Tarjan算法求强连通分量,但是对于无向图,该怎么办。