【发布时间】:2015-02-26 00:49:53
【问题描述】:
我目前正在用 Matlab 编写最短路径算法。我已经写了它,以便我可以计算它的总成本。相反,我想做的是生成一个矩阵,以便我可以将每个元素的值存储在最短路径中的当前成本。每当我尝试更改我的值时,我都会不断收到错误消息,指出矩阵超出范围或未定义所有输出变量。这是我的工作代码。如何更改它,以便我可以生成一个矩阵,该矩阵将当前成本沿最短路径中的所有元素存储。
以下代码传入成本矩阵和维度的参数并返回总成本。 minimumVal 是我编写的一个函数,它从它的三个参数中返回最小值。
function output = min_path(cost, m, n)
if ((m < 1) || (n < 1))
output = 9*10000;
elseif ( m == 1)
output = cost(m,n);
else
output = cost(m,n) + minimumVal( min_path(cost, m-1, n-1), min_path(cost, m-1, n), min_path(cost, m, n-1) );
end
end % end min_path
【问题讨论】:
-
minimumVal是做什么的?为什么不直接使用min? -
@DaveKielpinski 简单,试试
min(1,3,2)。否则,对于 OP,“存储值”可以以不同的方式完成。我想知道的是:你想如何存储它们。你的意思是你尝试做一个矩阵output来存储值?在这种情况下,我认为您需要将其与其他输入一起传递并在第一个函数调用之前预定义它(我的意思是在函数之外)。但是,其他可以做的是将值存储在节点树中。这不会给你很多空元素。可以使用嵌套单元格。 -
@patrik 是的,我知道。但是
min([1,3,2])也可以达到最小值。我想知道minimumVal函数是否在做一些显而易见的事情。
标签: matlab recursion shortest-path