第五周总结博客(图论+搜索)

笨鸟先飞,一次学不会就再学一次

目录

笨鸟先飞,一次学不会就再学一次

一:图论

1:哥尼斯堡七桥问题(现在是俄罗斯的加里宁格勒)、

2: 图的基本概念。

CSDN上有很多,此处省略。

3:图的存储与遍历

a.可以用邻接矩阵实现

 b.邻接表

4:图的连通性问题

a.无向图DFS:

 d:Tarjan算法

5:LCA最近公共祖先

a:暴力法

b:倍增法

c:转化为RMQ问题

d:塔扬离线算法

6:最小生成树

二:搜索

1:收获:

a:笔算

b:看头文件源码

c:洛谷的讨论区非常有用

2:感受


一:图论

这一部分还没开始做题,刚开始看资料

以下是这周学习到的有关图论的知识

1:哥尼斯堡七桥问题(现在是俄罗斯的加里宁格勒)、

在哥尼斯堡(加里宁格勒) 的一个公园里, 有七座桥将普雷格尔河中两个岛及岛与河岸连接起来 . 问是否可能从这四块陆地中任一块出发, 恰好通过每座桥一次, 再回到起点?

由这个问题我得到了如果枚举每一种可能,就是7的阶乘,把该问题抽象成图,仔细阅读欧拉回路后得知,这个图的各个节点必须是联通的,和每个节点相连的线段必须是偶数,否则就不能回来。

2: 图的基本概念。

CSDN上有很多,此处省略。

3:图的存储与遍历

a.可以用邻接矩阵实现

用一个一维数组存储图中顶点的信息 , 用一个二维数组 ( 矩阵 ) 表示图中各顶点之
间的邻接关系 .
#define MAXN 100
int main()
{
int n, m, u, v, map[MAXN][MAXN];
memset(map, 0, sizeof(map));//初始化,元素清零
scanf("%d%d", &n, &m);
for(int i = 0; i < m; i++)
{
scanf("%d%d", &u, &v);
map[u-1][v-1] = 1; map[v-1][u-1] = 1;//无向图需要
}
//其它操作
return 0;
}

图的DFS遍历是很多算法的基础,所以一定要掌握好DFS;

 邻接矩阵的特点:

 空间复杂度:O(n2)

 可以O(1)查询点对间的边数(或相邻情况)

邻接矩阵的缺点:空间复杂度大,处理稀疏图效率低,不便于处理多 重图边上的附加信息。

 b.邻接表

邻接表可以用四种方式去实现,第一种是动态链表,第二种是用vector实现。第三种是用静态链表实现也就是纯数组实现&#x

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值