function p = get_path(cameFrom, current) % Returns the path. This function is only called once and therefore % does not need to be extraordinarily efficient inds = find(cameFrom); p = nan(1, length(inds)); p(1) = current; next = 1; while any(current == inds) current = cameFrom(current); next = next + 1; p(next) = current; end p(isnan(p)) = []; end
时间: 2023-12-29 16:05:37 浏览: 103
这是一个用于获取路径的函数,输入参数为cameFrom和current。其中cameFrom是一个矩阵,表示每个节点的前驱节点,current是终点节点。该函数通过查找cameFrom矩阵,从终点节点开始一步一步往回找,直到找到起点节点,并返回路径。具体实现过程如下:
1. 找到所有非零元素的位置,即有前驱节点的节点位置。
2. 初始化路径p为NaN向量,长度为非零元素的个数。
3. 将终点节点current赋值给路径p的第一个元素。
4. 初始化next为1,表示当前已经找到了路径的第一个节点。
5. 在current的前驱节点中查找下一个节点,即在cameFrom中查找值为current的元素位置,将其赋值给current,并将其添加到路径p中。
6. 如果current为起点节点,则停止查找,返回路径p。
7. 否则,将next加1,继续查找下一个节点。
8. 最后,删除路径p中的NaN元素并返回路径p。
需要注意的是,由于该函数只会被调用一次,因此并没有特别高的效率要求。
阅读全文