Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在图中标记穿过一定长度的特殊节点以填充每个节点_Algorithm_Graph - Fatal编程技术网

Algorithm 在图中标记穿过一定长度的特殊节点以填充每个节点

Algorithm 在图中标记穿过一定长度的特殊节点以填充每个节点,algorithm,graph,Algorithm,Graph,所以我在研究一个问题,你有一个图,所有的边都有一定的权重。现在,算法应该选择图中的特定节点,并且所选节点必须能够在一定的总权重内遍历/跨越所有其他节点。输出应该是所选节点的最小数量和所选节点的位置(只要是所选节点的最小数量,输出哪个位置并不重要) 我想到了几个简单的解决方案,但到目前为止,它们都不太好 通过尝试每个节点来使用蛮力。该算法将从一个选定节点开始,然后尝试选定节点的每一个组合,然后循环通过每一个其他非选定节点,并检查它们是否都在范围内。如果没有,则增加一个额外的选定节点并重复相同的过程

所以我在研究一个问题,你有一个图,所有的边都有一定的权重。现在,算法应该选择图中的特定节点,并且所选节点必须能够在一定的总权重内遍历/跨越所有其他节点。输出应该是所选节点的最小数量和所选节点的位置(只要是所选节点的最小数量,输出哪个位置并不重要)

我想到了几个简单的解决方案,但到目前为止,它们都不太好

  • 通过尝试每个节点来使用蛮力。该算法将从一个选定节点开始,然后尝试选定节点的每一个组合,然后循环通过每一个其他非选定节点,并检查它们是否都在范围内。如果没有,则增加一个额外的选定节点并重复相同的过程

  • 该算法生成一个子图列表,每个节点位置都有一个选定的节点可以遍历该子图。然后尝试对子图进行拼图拟合,以便重新创建原始图,如果成功,则是解决方案

  • 作为一个例子,这里有一张网格图

    该栅格中每条边的权重为1,每个选定节点的总权重为2


    我不太熟悉图形问题,所以如果有类似的问题,或者如果有人能提供任何解决方案的帮助,那就太好了

    首先,如果两个节点在距离限制内,只需在两个节点之间创建一条边,即可消除边权重。然后,您需要找到节点的子集,以便每个节点都是选定的或是选定节点的邻居。这就是所谓的问题。不幸的是,它是NP难的,所以通常采用启发式或整数线性规划来解决。可以利用输入的某些属性,但如果不了解它们的外观,就很难判断它们。

    图形有多大(节点/边的数量)<代码>总重量这意味着到节点
    x
    覆盖的所有节点的总距离,或者仅仅是从该节点
    x
    到其他节点的最大距离?虽然总重量不会太大,但节点/边/重量的数量没有限制。从图像中,您将看到每个彩色节点都是选定节点,每个彩色边都是每个选定节点可以穿过的路径,目标是用最少的选定节点覆盖图中的所有节点。这是一个简化的示例,并非所有边都具有相同的权重。