图的介绍

心里又有些浮躁了,所以只是很粗略的看了一遍图。

网:带权的图
图的存储结构:
《1》邻接矩阵:用二维数组存放结点之间的关系
{
1---第i个顶点与第j个顶点有边相连
a[i][j]=
0---无边相连
}


对于无向图,邻接矩阵为对称阵,第i行1的个数(或者第i列1的个数)
表示:第i个顶点的度
**对于有向图:第i行1的个数表示顶点的出度,第i列1的个数表示第i
个顶点的入度,度=入度+出度
如果对于网:

{
wi---第i个顶点与第j个顶点的权值
a[i][j]=
∞---无权值
}

《2》邻接表:顺序结构+链式存储相结合构成的。--出边表
Struct node/*顶点的邻接表结点*/
{
Int adjvext;//顶点序号
Strct node *next;//指向下一个相连的顶点指针域
}
Struct node2
{
Elementype info;//顶点信息
Struct node *first_adj_vertex;//与该顶点相连的第一条边
};
Node2 Vexs[maxsize];//分配数组空间存放顶点信息
Int v,e;//顶点个数,边的个数
顺序结构:顶点信息存放在数组中,链式存储:与顶点相连的另一顶点序号(在数组中的下标位置),构造的链表。
无向图:如果有v个顶点,e条边,则它的邻接表需要v个顶点邻接表首指针和2e个顶点邻接表结点。顶点的度:与该顶点相连的单链表结点个数。
对于有向图:
邻接表:为出边表,单链表中结点的个数表示出度。如果有v个顶点,e条边,则它的邻接表需要v个顶点邻接表首指针和e个顶点邻接表结点。
有向图逆邻接表:为入边表,把单链表中的结点变成入边的结点序号。
十字链表:把邻接表与逆邻接表即出边表与入边表全部表示出来。
Struct node
{
tail_vertex,head_vertex,info,head_link,tail_link;
}



《1》 顶点信息:指向第一条入边的指针,指向第一条出边的指针.
《2》 边的信息:弧尾—弧头—权值—下一条弧头---下一条弧尾

V2 v3 inf指向下一个以v3为终点的边,指向下一个以v2为起点的边
〈3〉图的遍历:经过所有的顶点一次并且仅有一次。
DFS:深度遍历栈


BFS:广度遍历队列
最小生成树:有N个顶点构成的连通图,包含所有顶点(n个),n-1边的最小连通子图。
* ***:N个标点,n-1条边,连通无回路
连通图生成树的权值之和最小的生成树。Prime(普里姆算法)+Kruskal克鲁斯卡尔算法 
《1》Kruskal克鲁斯卡尔算法涨边:顶点不变,每次加权值最小的边(保证连通无回路),最后边的条数=n-1时结束。
《2》Prime(普里姆算法)算法涨顶点:从一个顶点出发,加与它连通的权值最小的边,与已有顶点的集合相连通(无加路),最后顶点的个数=n个结束。
最短路径:从某个顶点出发到其他任意一个顶点的最短路径。
任意两个顶点之间的最短路径。
AOV网(activity on vertex netword): 如果顶点表示一种活动,边表示这些活动的先后次序。
如排课系统
拓扑排序:--------可以判断一个图有没有环
《1》在图中找一个入度为0的顶点,访问(输出)
《2》把所有与该顶点相连的顶点的入度都减1(把与该顶点相连的的边全部剪掉),再重复1,2直到图中没有一个入度为0 的顶点结束或者顶点个数=n结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值