【问题标题】:Algorithm to add weights in a directed graph (using adjacency matrix)在有向图中添加权重的算法(使用邻接矩阵)
【发布时间】:2015-12-12 06:44:16
【问题描述】:

对于我在 Paint 中制作的糟糕图表,我深表歉意。

无论如何,我很难想出一种方法来在图表中添加权重。

谁能提供(使用伪代码)一些关于如何解决这个问题的见解。我曾考虑过使用方法重载,但它并不适用于所有情况。我完全被困住了。请记住,我使用的是邻接矩阵而不是列表。谢谢!

例子:

从节点 1 到节点 2 到节点 3 的距离 = 6

从节点 1 到节点 2 到节点 3 到节点 4 的距离 = 8

从节点 1 到节点 2 到节点 3 到节点 4 到节点 2 到节点 3 的距离 = 18

【问题讨论】:

  • 考虑图中的循环。您希望如何通知您的算法不会通过 1-2-3-4-2-3-4-2-3-4-2-3-4-2-3-4 无限递归 .... 我会从那个问题开始。您是否希望在每个序列中最多只访问每个节点 1 次?在没有循环的情况下,一个简单的递归就可以了。根据您的要求,这将需要修改。
  • 好点,我不认为@Juice 真正指定此算法是否在进行寻路,或者它是否只是计算给定路径的权重。一些澄清会很有用。

标签: java algorithm directed-graph adjacency-matrix


【解决方案1】:

让我们来看看你提供的这个图的邻接矩阵,它看起来像这样 让 INF 成为一个不存在的链接。

   1   2   3   4
1 INF  3  INF  3 
2 INF INF  3  INF
3 INF INF INF  2
4 INF  7  INF INF

它存储了关于图的所有相关信息,并提供了一些极其简单的算法。要获得从节点 x 到 y 的特定边的权重,只需使用 AdjacencyMatrix[x][y]。要么是权重,要么是INF,表示不存在链接。

此时,对路径的权重求和非常简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2017-06-21
    • 2017-12-14
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多