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

找出所有可能的方法来连接一个断开连接的无向图,并为每种可能性计算从src到目的地的最短路径

毋举
2023-03-14

在这个问题中,你会得到一个断开连接的无向图和每个顶点之间的距离的2D矩阵。我试图找到所有可能的方法来从这个状态制作一个连接的图,然后计算每个可能的组合从顶点0到顶点1的最短路径的距离。顶点0被选择为源顶点,所有具有到顶点0路径的顶点都被认为是连接的,所有没有到顶点0路径的顶点都没有连接。我试图使用BFS找到所有可能的路径,但使用动态规划进行优化,但无法弄清楚子问题和数据结构应该是什么。

例如,给定此图,其中V={0,1,2}和adj矩阵(第一个)以及每个矩阵之间的距离(第二个):

  0 1 2          0 1 2
0 0 0 0        0 0 3 4
1 0 0 1        1 3 0 1
2 0 1 0        2 4 1 0

由于顶点1和2没有连接,如果我连接0到1,最短路径的长度将是3。如果我连接0到2,从0到1的最短路径将是4 1。两种情况的可能性相同。

子问题是什么?我应该如何解决这个问题?

共有1个答案

毕嘉
2023-03-14

将连接的组件折叠为多重图(多条边可以连接两个顶点的图)的单个顶点。使用任何回溯搜索来枚举多重图的所有生成树。

这个任务的不可约复杂度是K!,其中K是连通分支的数量。

用传递闭包算法计算连通分支。

 类似资料:
  • 我正在研究一个优化问题,需要列出一个无向图的所有可能割集。具体来说,我感兴趣的是在两个顶点子集中找到所有断开图的边子集。 详细地: 在无向图G(V,E)中,V是顶点集,E是边集。割形成两个顶点子集a和B,这样: A联合B=V 和 A交叉点B=空集 A和B建立C(E的子集),使得C中的每条边连接两个顶点,一个在A中,一个在B中。我感兴趣的是找到所有可能的子集C,这样:对于每一个C,它是一个图的割,没

  • 我正在寻找一个算法,找到顶点的最小子集,这样从图中移除这个子集(以及连接这些顶点的边),所有其他顶点都变得不连通(即,图将没有任何边)。 null 我有图论的基础知识,所以请原谅任何不正确的地方。

  • 使一个无向加权(正权)图断开连接的最小代价是什么。 我的意思是,我必须找出那些边,这些边的去除断开了图的连接,并且它们的代价最小化。 我有以下想法... 1.找出图的所有桥。则最小重量的桥边为ANS。 该图没有自循环。 这个阿尔戈对吗?

  • 我有一个有向图。我想找到从源到目标的所有可能路径,覆盖所有转换。这与“覆盖所有顶点的所有可能路径”不同。该图将正好有一个起始顶点,并且可能有多个结束顶点。如果没有传出转换,则节点是结束节点。集合中的路径可能具有重复的变换,但不能具有重复的顶点。附有一个示例有向图。顶点a(黑色)是起始顶点,顶点e和f是结束节点(黄色)。此图的解决方案如下所示。 您可以看到最后一条路径有两次b。这是有效的。i、 例如

  • 运行播放后,当我卷曲服务器时,我看不到index.html文件中的内容。有人能帮我玩游戏吗? 名称:安装webserver并链接到文件夹主机:prod任务: 名称:创建目录文件:路径:/web_hosting状态:目录设置类型:httpd_sys_content_t模式:0775 名称:install yum:name:httpd state:present 名称:配置服务服务:名称:httpd状

  • 问题内容: 我只是不明白发生了什么。我的go应用程序无法连接到elasticsearch。该节点可用,已启动并正在运行。我在这里做错了什么? 这里有什么不对的地方?错误说 这是我在浏览器中命中GET请求时从elasticsearch返回的数据 } 问题答案: 当您继续在客户端中进行嗅探但群集没有可用节点时,通常会发生错误。您可以通过点击来检查集群的状态。 如果您不禁用嗅探功能,则Golang客户端