给定节点值,找到边缘值(边缘的总和=节点的值)

时间:2019-10-16 01:54:33

标签: graph graph-algorithm

刚刚在网上看到一个问题,好奇是否有多项式解决方案。

  1. 有N个节点。为每个节点分配一个值(整数)
  2. 每对节点都已连接(完整的图形),并且没有回路(没有边缘连接节点及其自身)。
  3. 要查找每个边的值(也是整数),以便所有节点的边值之和=节点值(对于连接到节点的边)。

我在python上尝试了蛮力解决方案:

令v = [v1,v2,...,vn]为节点的值,M为n×n矩阵,其中Mij =连接节点i和节点j的边缘的值。 M是对称的,对角元素全为0(根据条件)。

因此,如果v = [2,3,3],则M应该是

0 1 1
1 0 2
1 2 0

我发现此方法非常慢,v = [20,32,26,24]花费了几秒钟。我想知道问题是否是NP完全的,并且没有多项式时间算法。

注意:给定任意v,可能不存在满足条件的图。而且解决方案可能不是唯一的

0 个答案:

没有答案