数学建模自学心得系列1
两个指定顶点间最短路径问题
之前在研究《数学建模算法与研究》中第四章的内容时,注意到了4.2.2这个问题,但是对于其中的约束条件如何得到非常疑惑,经过一段时间的思考才想明白,所以打算写一篇博客记录一下,第一次写博客,也算是全新的尝试。
定义
关于这个问题的定义如下:
这个pdf是司守奎老师后来自己写的,和原书有着细微的不同,完整的定义应该是,当Xij=1时,说明弧位于顶点1至顶点n的最短路上,这个差别一开始也对我造成了一些误导,我看了很多别的博客,好像也都是保留了上面这种不严谨的版本,所以我在此先强调一下。
约束条件
然后我们重新回到题目本身,我之前对于这个约束条件不太理解,重新修改题目之后再看,觉得应该是这样:
第一种情况,当i=1时,
- 第一项代表所有路径中从顶点1出发的路径,其中最少且只能有1条路径位于最短路径上,所以求和之后的结果为1.
- 第二项代表所有路径中通向顶点1的路径,这个时候需要注意,我们这个案例是在讨论有向图中顶点1到顶点n的最短路径,所以通向顶点1的路径,一定不会出现在最短路径上,求和结果为0。
所以当i=1时,等式右侧为1-0=1。
用相同的方法分析后两种情况,结果也很清楚。
- 第二种情况讨论的是从顶点n出发和通向顶点n的所有路径是否位于最短路径上,结果是0-1=-1。
- 第三种情况是讨论图中不经过顶点1和顶点n的其他所有路径,此时只能是0-0=0。
这个模型里的约束条件大概表达的就是这个意思。
补充一个例子
如果你搞明白了约束条件的定义,那么你也就自然而然的明白,为什么lingo代码里倒数的5行为什么这么写了。
当然了,这只是我个人的一点简单的理解,如果有看到这篇博客的朋友发现我哪里想的不对,一定要在评论区告诉我哦!万分感谢!!