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

分解的图算法

裴实
2023-03-14

一个图形有 n 个顶点和 m 条边。图形开始连接,然后按边缘在列表中出现的顺序删除边缘。在该过程结束时,图形将断开连接。

因此,在边列表中有一个特定的边,因此在移除它之前,有一个连接的组件的顶点数超过 n/4 个顶点的底部。移除此边后,图中没有连接组件的顶点数超过 n/4 个顶点的底部。

我将如何设计找到这条边的最佳算法。我是否只是开始删除边,然后每次遍历图以检查最大的连通分量是否足够?这在O(nm)时间内运行,但我觉得一定有更快的方法。我认为答案与使用脱节集来找到连通分支有关,但我不确定如何实现它。

共有1个答案

公良理
2023-03-14

考虑反向运行此过程,添加边而不是删除边。该过程与Kruskal算法非常相似(每个节点都从自己开始,并且在连接不同连通分支的过程中添加边),只是一旦至少有一个连接组件中至少有n/4节点,您就会停止。

解决这个问题的一种方法是使用Kruskal算法的修改版本和增强的联合查找数据结构,以便联合查找结构中的每个代表存储其连接组件中的节点数。按相反顺序遍历边,如果endpoint已连接,则在每个点处丢弃边,否则将链接边。如果添加的边导致存在至少一个的连接组件⌊n/4⌋ 节点,你已经找到了你要寻找的边。如果使用union find数据结构的快速实现,这将在时间O(n mα(n))内运行,在实践中基本上是线性的。

 类似资料:
  • 我接到一个任务,要找到一种算法,将图G(V,E)分成几对相邻边(给图上色,这样每对相邻边都有相同的颜色)。 我试图通过绘制一些随机图表来解决这个问题,并得出了一些结论: 如果顶点连接到2(4,6,8…)阶数为1的顶点构成一对边 如果阶数为1的顶点直接连接到循环,则循环的哪条边与单条边配对并不重要 然而,我无法得出任何其他结论,所以我尝试了另一种方法。我考虑过使用DFS,找到连接点,并将图划分为具有

  • 本文向大家介绍深入解析NoSQL数据库的分布式算法(图文详解),包括了深入解析NoSQL数据库的分布式算法(图文详解)的使用技巧和注意事项,需要的朋友参考一下 尽管NoSQL运动并没有给分布式数据处理带来根本性的技术变革,但是依然引发了铺天盖地的关于各种协议和算法的研究以及实践。在这篇文章里,我将针对NoSQL数据库的分布式特点进行一些系统化的描述。 系统的可扩展性是推动NoSQL运动发展的的主要

  • 我需要在MATLAB中实现一个基于连通分量算法原理的图像分割函数,但需要做一些修改。这是为了非常简单的2D图像,有一个背景颜色和一些不同颜色的对象。 其思想是,将图像作为一个矩阵,我提供了一个选择背景颜色的工具(它将对每个图像变化)。然后,当图像的背景颜色的值被选中时,我要对图像中的所有对象进行分割,结果应该是一个带标签的矩阵,图像大小相同,背景为0,每个对象有不同的数字。 这是我的意思的一个生动

  • 本文向大家介绍JavaScript实现的拼图算法分析,包括了JavaScript实现的拼图算法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了JavaScript实现的拼图算法。分享给大家供大家参考,具体如下: 学了html5的拖拽事件,相信做出一款小小的拼图游戏也不难吧。就来说一下怎么用drag事件完成拼图游戏吧,当然html5的新方法在IE下是不兼容的。这里我把这个拼图游戏封装成一

  • 目标 在这一章当中, 我们将学习使用基于标记的分水岭算法来进行图像分割 我们将看到:cv2.watershed() 理论基础 任何灰度图像可以被看作是一个地形表面,其中高强度表示峰和山,而低强度表示山谷。你开始用不同颜色的水(标签)填充每个孤立的山谷(局部最小值)。随着水位上升,根据附近的山峰(梯度),来自不同山谷的水,明显不同的颜色将开始合并。为了避免这种情况,你在水合并的地方建立障碍。你继续填

  • 在介绍GraphX之前,我们需要先了解分布式图计算框架。简言之,分布式图框架就是将大型图的各种操作封装成接口,让分布式存储、并行计算等复杂问题对上层透明,从而使工程师将焦点放在图相关的模型设计和使用上,而不用关心底层的实现细节。 分布式图框架的实现需要考虑两个问题,第一是怎样切分图以更好的计算和保存;第二是采用什么图计算模型。下面分别介绍这两个问题。 1 图切分方式 图的切分总体上说有点切分和边切