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

边1代价顶点2代价的最小代价算法

公冶嘉
2023-03-14

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

这里有一个链接到我正在尝试实现的一个简单示例。该解决方案的成本为57,这是该图可能的最低成本。

编辑:拼写。

共有1个答案

彭畅
2023-03-14

你描述的问题可以简单地转化为最小割问题,然后用Stoer-Wagner算法求解。再创建两个顶点,每个顶点都有到所有其他顶点的边(彼此除外)。边代价取自相应顶点的代价1s;另一方面,从他们的成本。现在找到一个最小的削减;这将在两个新节点之间进行切割,并将原始顶点划分为type1和Type2。

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

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

  • 问题内容: 您知道Java中引发和处理异常的代价是多少? 我们在团队中就异常的实际成本进行了多次讨论。一些人尽可能地避免使用它们,有人说使用异常会导致性能损失被高估。 今天,我在我们的软件中找到了以下代码: 与之相比,它的性能如何 我不想讨论代码美感或其他任何内容,而只是关于运行时行为!您有真实的经验/测量方法吗? 问题答案: 我没有花时间去阅读Exception,但是用您的一些修改后的代码进行了

  • 例如,给定以下矩阵: 其中对于每个元组,第一个数字是食物,第二个数字是水。我需要从右下角到左上角,我只能向上或向左移动。

  • 新手问题 我正在使用 TensorFlow 编写一个 OpenAI Gym 乒乓球运动员,到目前为止,我已经能够基于随机初始化创建网络,以便它会随机返回以向上或向下移动玩家桨。 时代结束后(在电脑获胜的21场比赛中),我收集了一组观察结果、动作和得分。一场比赛的最后观察得到一个分数,之前的每一次观察都可以根据贝尔曼方程进行评分。 现在我的问题是我还不明白的:我如何计算成本函数,以便它作为反向传播的

  • 例如,我们有一个由顶点(城市)和边(道路)组成的图,每个边(道路)都有一个特定的成本,找到至少一次访问所有城市的最小成本。Cost是所遍历边的边成本之和。“至少有一次”这个角色吸引了我。在TSP中,根据Wiki,我们只能访问一次节点。考虑图,在TSP中,循环路径为A-B-E-D-C-A成本-140(或A-C-D-E-B-A成本-140)。其中,根据我的问题描述,我们可以访问每个顶点至少一次,这样我

  • 假设我们有一个有向图,它同时包含正加权边和负加权边。 我知道最短路径解决方案是Bellman-Ford算法。 我的问题是:为什么我们不能只是在所有的边成本上增加一些大的值N,这样就不再有负边了,然后使用效率高得多的Dijkstra算法?