图论
图的存储结构:
1、二维数组邻接矩阵存储
2、数组模拟邻接表存储 图的邻接表存储法,又称链式存储法。本来是要采用链表实现的,但大多数情况只要用数组模拟即可。
void add_edge(int from,int to,int dis) //加入一条从from到to距离为dis的单向边
{
edge[++num_edge].next=head[from];
edge[num_edge].to=to;
edge[num_edge].dis=dis;
head[from]=num_edge;
}
图的遍历
类似于搜索的深搜和广搜,主要分为深度优先遍历和广度优先遍历,此处可使用优先队列。
最短路径算法
两点之间,并非连线的权值最小,而有可能经过拐点。
最基础的算法——Floyed算法,但此算法需三重循环,只对小数据有效,当数据值较大时往往就会超时。进而引入Dijkstra算法,该算法用来计算从一个点到其他所有点的最短路径,是一种单源最短路径算法,即只能计算起点只有一个的情况。
图论这一部分最重要的是思路(当然不只是图论),需要思考如何画出图形,而又用编程语言进行编程。