思维导图 重要概念 1.假设图中有n个顶点,e条边,则 含有 e=n(n-1)/2条边的无向图称作完全图; 含有 e=n(n-1)条弧的有向图称作有向完全图; 若边或弧的个数 e<nlogn,则称作稀疏图,否则称 作稠密图。 2.假若顶点v和顶点w之间存在一条边,则称顶点v和w互为邻接点; 边(v, ...
分类:
其他好文 时间:
2021-06-02 15:13:04
阅读次数:
0
前言: 对于稀疏图而言,前向星(邻接表)是必不可少的工具,感性理解前向星,写多了就背下来了 结构体写法: struct fdfdfd{int next,to,w;}a[1000];//定义 int head[1000],cnt; void addedge(int x,int y,int w){a[+ ...
分类:
其他好文 时间:
2020-07-17 22:14:06
阅读次数:
74
Kruskal算法(适用于稀疏图) 1、将所有边按权重从小到大排序 O(mlogn) 2、枚举每条边a,b,权重c O(m) if a,b不连通 将这条边加入集合中 判断连通 使用并查集来判断两个连通块是否连通 #include<iostream> #include<algorithm> using ...
1,学习内容小结: 图:(1)存储结构: 邻接矩阵 :适用于稀疏图,顶点较多 & 邻接表 :适用于稠密图,顶点较少或无需记录权值 (2)遍历:深度优先搜索(DFS):类似先序遍历 广度优先搜索(BFS) :类似层次遍历 (3)应用:<1>最小生成树(不是唯一的,但权值一定是一样的;若由程序得出则一定 ...
分类:
其他好文 时间:
2020-06-14 23:53:07
阅读次数:
103
图的定义 邻接矩阵 结构简单,操作方便 稀疏图将浪费大量的空间 邻接表 (类比 树 孩子表示法?) 操作复杂 注意邻接链表的结构体定义 不要搞混不要被绕晕啊! 嵌套太多了 有时用指针 还要看清给的int还是char typedef struct ArcNode { int adjvex; struc ...
分类:
其他好文 时间:
2020-06-14 18:36:30
阅读次数:
102
一、本章学习小结 本章学习了图这一复杂的非线性数据结构,图包括有向图和无向图,有向图中又包含始点和终点,弧尾和弧头的概念。两者的本质区别应该是有无序。重点学习了DFS算法和BFS算法实现图的遍历,理解了迪杰斯特拉算法的逻辑思想。 1、图的基本术语(顶点数目为n,边数目为e) 子图、稀疏图和稠密图、权 ...
分类:
其他好文 时间:
2020-06-14 12:51:36
阅读次数:
76
一、思维导图 二、重要概念 1.DFS 时间复杂度为 O(n+e) 。 2.BFS 时间复杂度为 O(n+e) 。 3.最小生成树 1)Prim算法 时间复杂度为 O(n n) ,所以更适用于 稠密图 。 2) Kruskal算法 时间复杂度为 O(elog2e) ,所以更适用于 稀疏图 。 4.最 ...
分类:
其他好文 时间:
2020-05-17 21:45:57
阅读次数:
110
邻接矩阵的优点: (1)可以通过M[u][v]直接引用边(u, v), 因此只需常数时间(O(1))即可确定顶点u 和顶点v 的关系 (2)只要更改M[u][v] 就能完成边的添加和删除, 简单且高效O(1) 邻接矩阵的缺点: (1)消耗的内存空间等于顶点的平方数。如果图的边数较少(稀疏图),则会浪 ...
分类:
其他好文 时间:
2020-03-31 21:10:22
阅读次数:
266
图的存储方式 在说最短路之前,先介绍一下图的几个存储方式:主要有vector、邻接表和链式前向星三种存储方式。其中会牵扯到稀疏图和稠密图的概念, 稠密图指点的个数的平方和边的个数是一个数量级的($n^2 ≈ m$) , 两者数量级类似别称为稀疏图 。 G[maxn]; for(int i=1;i f ...
分类:
其他好文 时间:
2020-02-02 15:31:23
阅读次数:
74
/*每个点自己建立一座发电站相当于向超级源点连一条长度为c[i]的边,连电线即为(k[i]+k[j])*两点间曼哈顿距离,跑最小生成树(prim适用于稠密图,kruscal适用于稀疏图)*/ #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>usi ...
分类:
其他好文 时间:
2019-11-11 09:31:31
阅读次数:
84