图形组件之间的路径算法
Algorithm for pathing between graph components
首先,这是一道家庭作业题。我有一个布尔矩阵,其中1表示节点,相邻的节点被认为是连接的。例如:
1 0 0 0 1
1 1 1 0 0
1 0 0 1 1
0 0 0 0 0
0 0 0 0
根据我给出的定义,这个矩阵包含3组。一个位于左上角,由5个节点组成,一个位于右上角,包括1个节点,另一个位于由2个节点组成的节点下方
我需要做的是编写一个函数,该函数确定必须添加到矩阵中的最少节点数,以便连接所有单独的组件。当可以从一个组中的任何节点到另一个组建立路径时,两个组是连接的。
所以,我要求的是有人在算法方面把我推向正确的方向。我已经考虑过如何使用路径查找算法来查找两组之间的最短路径,但不确定如何为矩阵中的每一组都这样做。如果我使用深度优先遍历来确定单独的组,那么我可以为每个组中的任意节点到另一个组使用路径查找算法吗?
一般问题称为Steiner树问题,它是NP完全问题。
有一种算法不是指数型的,但它会给你一个次优的解决方案。
你可以这样做的方法是计算任何两对组件之间的最短路径,只使用初始组件和你计算的权重来做最小生成树,然后遍历你的解决方案并消除循环。
由于您有很多连接岛屿的选项,我将添加一个步骤来优化连接。
但一个最佳答案的算法:NP完全(尝试每种组合)。
将每个连接的组件(组)视为一个节点。然后您可以运行MST(最小生成树)算法来找到连接所有组的最小成本。
复杂性:构建边的复杂性=O(M*M)+O(ElgV
相关文章:
- C++A*算法并不总是在路径中具有目标节点
- 用于查找网格中最短路径的算法
- 查找最短路径算法
- 使用 Dijkstra 算法跟踪两个节点之间的最短路径
- 使用C++具有两个数字的最短路径算法.(C++)
- 弗洛伊德最短路径算法C++
- Dijkstra 最短路径算法性能 std::p riority_queue VS std::set.
- 具有恒定权重的 Dijkstra 最短路径算法
- 最短路径算法太慢
- 有没有一个带有距离标记的最短路径算法的开源实现
- O(N^2)最短路径算法
- 图形组件之间的路径算法
- 什么是适用于多个入口和多个出口的类似BFS的最佳路径算法
- Djikstra 最短路径算法的堆实现,C++
- 低内存最短路径算法
- 直线跟随机器人中的最短路径算法(迷宫求解)
- url的最短路径算法
- k最短路径算法
- 对最短路径算法进行建模时的队列问题
- 我在 OpenMP 中实现 Dijkstra 最短路径算法时可能存在的范围问题?