动态规划博大精深,想完全掌握是很难的,不过我们可以从一些简单的例子之中去体会她的奥妙。
不说废话、先来一个简单的例子吧:
longest path in DAG
Problem:
Given a weighted directed acyclic graph G=(V, E), an vertex v, where each edge is assigned an integer weight, find a longest path in graph G
问题描述:
给一个带权有向无环图G=(V,E),找出这个图里的最长路径。
说实话初学者直接给出这个图会看蒙的、再看看问题,不知道从何下手。
好了,对上图做个简单的处理:
现在看起来是不是清晰多了呢
用dilg(v)表示 以点结尾的最长路径,现在考虑dilg(D), dilg(B), dilg(C)
dilg(D)=max{dilg(B)+1, dilg(C)+3}
来解释一下:点D的入度边有CD、BD。
以D结尾的最短路径必定经过C、D中的最后一点;如果是C点,则以dilg(C)+3(权值)定会大于等于