寻找二维数组中最短路径的matlab实现

本文介绍了一种使用MATLAB寻找二维数组中从左上角到右下角最短路径的方法,通过动态规划策略,避免了遍历所有路径。详细解释了算法思路,并提供了程序源码,讨论了遇到相同最短路径值时的处理以及边界情况的处理。最后,作者提及正在研究三维数组的最短路径问题。
摘要由CSDN通过智能技术生成

     这是一道比较有意思的题目,给定一个数字方阵,你只能向右或者向下走,让你寻找从左上角到右下角的一条路径,且让这条路径所经过的数字之和最小。

     我将以下面这个方阵为例讲解一些较为关键的算法思路。现在给你如下方阵,如何找出一条数字和最小的路径呢?

     最简单粗暴的方法就是把所有的路径找出来,计算每一条路径的值,然后进行比较,找出那条最短路径。但我们不需要这么做,毕竟设计一个遍历所有路径的算法还是挺复杂的。我们知道,最短路径的子路径也一定最短,从这一点出发便可以大大简化我们算法的设计-------我们只需要找出最短的一条子路径,然后沿着最短子路径再寻找其他最短子路径就可以了。

    我们可以从第一行开始,很显然,第一行每一条子路径都是最短的,因为只有一条路径,因此我们可以对每条路径进行求和(这里得提醒一下每条路径的起点都是数组的左上角)。同理,第一列也是如此。我们可以将每条路径的值存入一个新的数组中,终点对应的位置存放这条路径的值,如下图所示:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值