【问题标题】:Big problem with Dijkstra algorithm in a linked list graph implementationDijkstra 算法在链表图实现中的大问题
【发布时间】:2010-04-16 23:39:03
【问题描述】:

我用链表实现了我的图,包括顶点和边,这正成为 Dijkstra 算法的一个问题。正如我在上一个问题中所说,我正在转换使用邻接矩阵的this code 来处理我的图形实现。

问题是当我找到最小值时,我得到一个数组索引。如果图形顶点存储在数组中,则该索引将与顶点索引匹配。并且对顶点的访问是恒定的。

我没有时间更改我的图形实现,但我确实有一个哈希表,由一个唯一数字索引(但不是从 0 开始,就像 100090000)这是我遇到的问题.每当我需要时,我都会使用取模运算符来获取一个介于 0 和顶点总数之间的数字。

当我需要数组索引中的数字时,这很好用,但是当我需要数组索引中的数字(以在恒定时间内访问计算出的最小距离顶点)时,就没有那么多了。

我试图搜索如何反转模运算,例如 100090000 mod 18000 = 10000 和 10000 invmod 18000 = 100090000 但找不到方法。

我的下一个替代方法是构建某种参考数组,在上面的示例中,arr[10000] = 100090000。这将解决问题,但需要再循环一次整个图。

对于我当前的图形实现,我有更好/更简单的解决方案吗?

【问题讨论】:

  • 这是什么语言?以及链表是如何构造的?
  • 抱歉,C,添加了标签。你的意思是它是如何构建的?它是一个链表,带有指向下一个节点的指针...

标签: c graph linked-list modulo dijkstra


【解决方案1】:

在您的数组中,不要只存储计数(或您在其中存储的任何内容),而是存储一个包含计数和顶点索引号的结构。

【讨论】:

  • 这就是我在倒数第二段中所说的“参考数组”的意思,但为此我需要遍历整个图一次,并且我正在寻找一种更好的方法,如果有的话。跨度>
猜你喜欢
  • 2021-04-21
  • 2012-11-25
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2019-04-02
  • 2015-02-05
  • 1970-01-01
相关资源
最近更新 更多