首页 文章

动态编程的最短路径

提问于
浏览
0

我不想要这个问题的答案,我只需要朝着正确的方向轻推 .

给定无向图G,其具有N(1 <N <= 1000)个顶点和正权重 . 找到从顶点1到顶点N的最短路径,或说明此路径不存在 . 提示:在每个步骤中,在尚未检查的顶点和找到顶点1的路径的顶点中,取一个具有最短路径的顶点,从顶点1到它,但仍然找到 .

首先,我必须定义一个州 . 这就是我说的:

状态是顶点i的解,其中i <= N.较小的状态将是j的解,其中j <i . 要找到状态i,我们需要找到所有较小的状态j(j <i) . 找到了i的最短路径后,我们可以轻松找到下一个状态 - i 1的解决方案 .

我从一个不同的问题中取出了这个,只是替换了变量名和一些单词,因为它听起来适用于这个 .

我必须为解决方案编写程序,但我不知道如何开始 . 这是我的问题:

  • 我对国家的定义是否正确?

  • 此外,由于这是一个无向图,并且每个顶点都是双向的,权重是否会作为多维数组传入(即 int W[N][2] ),其中 W[N][0] 是一个顶点的权重, W[N][1] 是另一个顶点的权重?

  • 如何表示最短路径?它是采用的路径数,所采用路径的所有权重之和,还是所采用路径的所有权重的数组?

1 回答

相关问题