- 博客(22)
- 收藏
- 关注
原创 算法笔记——拓扑排序
for(int i=1;i<=n;i++) if(r[i]==0) sta.push(i);while(sta.size()){ int t=sta.top();sta.pop(); cnt++; for(int i=0;i<c[t].size();i++) { int y=c[t][i]; --r[y]; if(r[y]==0) sta.push(y); …… ...
2022-03-17 22:15:08
111
原创 算法笔记——最小生成树
对于n个节点的连通图,找到n-1条权值最小且无回路的边使所有节点连通。Prim算法将所有节点分为2个集合,一个是已生成树的集合U,和剩余的集合V-U:第i个节点到U集合的直接连边的最近的点:第i个节点到U集合的直接连接的边的最小权值无直接连边的点无穷大,已经在集合中的点.........
2022-03-17 11:31:11
92
原创 算法笔记——连通分量
注意追溯点的定义是通过非父子边追溯桥判定法则:无向边x-y是桥,当且仅当搜索树上存在x的子节点y,满足也就是说,若孩子的low值比自己的dfn值大,则从该节点到这个孩子的边为桥表示孩子没有其他路径可以返回父节点或更前的节点处,因此父子边为连接这两个节点的唯一边,即为桥割点判定法则:若x不是根节点,则x是割点,当且仅当在搜索树上存在x的子节点y,满足;若x是根节点,则x是割点,当且仅当搜索树上至少存在2个子节点满足以上条件因为要把x点删掉,所...
2022-03-15 19:01:48
2734
1
原创 算法笔记——哈夫曼编码
哈夫曼编码是一种不等长编码,常用字符编码短,不常用字符编码长。不等长编码需要解决两个关键问题:(1)编码尽可能短(最长的编码最短)(2)不能有二义性(前缀码特性:一个编码不能是另一个编码的前缀)具体操作:在树的分支上编码,字符都放在叶子结点,从根走向叶子的路径上的编码即为该对象的编码。(以叶子结点为编码对象解决了前缀码特性)将字符出现的频率作为叶子的权值,刚开始为全部为单节点的树的集合,每次取出权值最小的两个树进行合并,合并后权值为两树权值之和,合并后再插入树的集合,按同样的方式进行
2022-03-10 20:58:02
1246
原创 算法笔记——并查集
一、扩展域并查集适用情况:涉及到2种或3种相互关系的冲突判断时使用。例如划分两个集合,有互斥关系的人不在一个集合,有友好关系的人得在同一个集合,判断能不能划分成满足要求不冲突的两个集合。具体操作:将并查集扩大一倍,x表示本身,x+n表示冲突的反节点。表示友好关系时,x和y以及x+n和y+n合并;表示互斥关系时,x+n和y以及y+n和x合并。进行冲突判断时,如果表述为友好,但x+n和y(或x和y+n)已经在同一集合,则冲突;如果表述为互斥,但x+y(或x+n和y+n)已经在同一集合,则冲突
2022-03-10 10:32:06
150
原创 算法笔记——树的性质
一、孩子兄弟表示法长子当做左孩子,兄弟关系向右斜用于将树以及森林转化为二叉树。森林转化为二叉树时将每棵树的根节点看作兄弟即可。二、二叉树性质(1)第i层最多有个节点(2)深度为k的二叉树最多有个节点(3)对于任意一颗二叉树,若叶子数为,度2的节点数为,则b为分支数,节点数=分支数+1满二叉树:每层都充满结点的二叉树 完全二叉树:从上往下,从左向右排满的二叉树 深度为k的完全二叉树,当且仅当其每一个节点与深度为k的满二...
2022-03-09 21:27:45
236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人