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 具有1个边代价和2个顶点代价的最小代价算法_Algorithm_Graph - Fatal编程技术网

Algorithm 具有1个边代价和2个顶点代价的最小代价算法

Algorithm 具有1个边代价和2个顶点代价的最小代价算法,algorithm,graph,Algorithm,Graph,我试图找出以下情况的算法:我想在无向图上运行一个最小代价算法。边具有与其关联的成本,顶点具有与其关联的两个成本。这就是它变得有点棘手的地方。我必须从与顶点相关的两个成本中选择一个。如果我选择cost1,顶点将是类型1,如果我选择cost2,顶点将是类型2。如果顶点属于不同类型,则只能将其视为通过边连接。大多数情况下,为顶点选择最低成本是合乎逻辑的,但根据与其关联的边的成本及其相邻顶点的类型,您更愿意为顶点选择最高成本,从而降低总体成本。如有任何建议,如我应该尝试应用哪种算法或什么方法,我将不胜感

我试图找出以下情况的算法:我想在无向图上运行一个最小代价算法。边具有与其关联的成本,顶点具有与其关联的两个成本。这就是它变得有点棘手的地方。我必须从与顶点相关的两个成本中选择一个。如果我选择cost1,顶点将是类型1,如果我选择cost2,顶点将是类型2。如果顶点属于不同类型,则只能将其视为通过边连接。大多数情况下,为顶点选择最低成本是合乎逻辑的,但根据与其关联的边的成本及其相邻顶点的类型,您更愿意为顶点选择最高成本,从而降低总体成本。如有任何建议,如我应该尝试应用哪种算法或什么方法,我将不胜感激

。此解决方案的成本为57,这是此图的最低成本


编辑:拼写。

您所描述的问题可以简单地转化为最小切割问题,然后使用。再创建两个顶点,每个顶点都有到所有其他顶点(彼此除外)的边。一方面,边缘代价取自相应顶点的代价1;另一方面,从他们的成本2。现在找到一个最小切割;这将在两个新节点之间剪切,并将原始顶点划分为type1和type2


编辑:如果(原始)边成本与顶点成本相比足够高,则最终可能会在同一分区中出现两个新顶点。为了防止这种情况发生,请向添加到新顶点的所有边添加一个较大的相等代价(大于所有其他边的总和)。

您必须解释“最小代价算法”的含义。您发布的内容看起来不像流图,我的意思是返回顶点和边代价的最小可能和的算法@您是否应该编辑您的问题以包含该信息。