gpt4 book ai didi

algorithm - 关于方案的 Dijkstra 算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:49 27 4
gpt4 key购买 nike

我几乎已经创建了我的 Dijkstra 算法运行所需的每个过程,但我在最短路径过程中遇到了一些问题,我将其写在纸上但无法使其在方案中运行

(define (shortestpath origin destiny graph)
(define (update x)
(begin
(set! new-dist (+ (dist-between n x graph)
(dist-info-node (get-info-node i n))))
(when (< new-dist (dist-info-node (get-info-node i v)))
(update-previous-dist-node i v new-dist n))))

上面是主要程序,在第 4 行给我一个错误

(define (get-info-node i n)
(define (get-info-node-aux i n cont)
(if (equal? n (vector-ref (no-info-no i) cont))
(vector-ref i cont)
(get-info-node-aux i n (+ cont 1))))
(get-info-node-aux i n 0))


(define (dist-info-node i)
(vector-ref i 1))

(define new-dist 0)

我得到的错误是 “expand: unbound identifier in module in: i” 在第 4 行

(define (update-previous-dist-node! i n d a)
(define (update-previous-dist-node!-aux i n d a cont)
(if (equal? n (vector-ref (no-info-no i) cont))
(begin
(modify-dist! (vector-ref i cont) d)
(modify-previous! (vector-ref i cont) a))
(update-previous-dist-node!-aux i n d a (+ cont 1))))
(update-previous-dist-node!-aux i n d a 0))

所有程序都按应有的方式定义,但主要程序无法正常工作。这是首先写在纸上的,我已经尝试了一切,我一定是遗漏了什么

最佳答案

在我看来,您似乎已将程序构造为在一个较大函数内定义的许多小函数。这是一个坏主意。无法独立测试辅助函数抵消了优势(内部过程可以引用起点、终点和图形)。如果我正在调试这个函数,我会:

  • 将内部函数拉到顶层,
  • 为每个人创建目的陈述,并且
  • 为每一个写几个测试用例。

关于algorithm - 关于方案的 Dijkstra 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com