图和最短路径

图的相关操作

数据结构:邻接矩阵

图的种类:有向图

图的操作:增删顶点和增删边

代码:

#include "stdio.h"

#define MAXINT 30000
#define MAXNODE 100
typedef char elemtype;
typedef struct
{
    elemtype vexs[MAXNODE];
    int arc_matrix[MAXNODE][MAXNODE];
    int vex_num, arc_num;
}amgraph;

void create_graph(amgraph *graph);
void print_graph(amgraph graph);
int locate_vex(char *vexs, char vex);
int insert_vex(amgraph *graph, char vex);
void delete_vex(amgraph *graph, char vex);
void delete(char *vexs, char vex);
void in
  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最短路径动态规划是一种解决从起始点到终止点的最短路径问题的方法。根据最优子结构的性质,可以使用动态规划来求解最短路径。首先,对于每个节点,从起始点到它的最短路径可以通过两种方式获得:直接从起始点到该节点,或者从最短的前驱节点开始到该节点。这种递归的性质使得回溯法也可以解决最短路径问题。然而,在回溯的过程中可能存在重复的工作,因此使用动态规划更加高效。 动态规划的原理是先从终点开始,依次向前找到最短的路径。根据引用的说法,对于多段,如果从起始点s到终点t的一条最短路径已经求出,且s到s1的路径已经求出,那么问题可以转化为求解s1到t的最短路径。这种转化的过程可以一直迭代下去,直到从起始点到终点的最短路径被找到。根据引用的最优性原理,如果存在另一条更短的路径,那么可以通过该路径的一部分替换当前的最短路径,这与最短路径的定义相矛盾。 因此,可以使用动态规划的方法从终点开始,逐步向前求解从起始点到终点的最短路径。这种自顶向下的方式可以通过递归实现,也可以通过迭代实现。在每一步中,根据引用的公式,可以根据已知的最短路径长度来更新当前节点的最短路径长度,直到达到起始点。 总结起来,最短路径动态规划是一种求解从起始点到终止点的最短路径的方法,它利用的最优子结构性质和最优性原理,通过自顶向下的方式逐步求解最短路径

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值