我目前正在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
答案 0 :(得分:0)
你可以试试这个。
function output = min_path(cost, m, n, output)
if ((m < 1) || (n < 1))
output = 9*10000; % Do something here. This well crash
elseif ( m == 1)
output(m,n) = cost(m,n);
else
output = cost(m,n) + minimumVal( min_path(cost, m-1, n-1, output),...
min_path(cost, m-1, n, output), min_path(cost, m, n-1, output) );
end
end % end min_path
它未经过测试,但应该可以使用。您需要分配足够大的数组以用作主输入。此外,m = 0,n = 0的情况将崩溃。由于我不确定你是怎么想的,所以我不能提出一个不会破坏你的其他代码的解决方案。