Skip to content

Commit

Permalink
更新线性代数
Browse files Browse the repository at this point in the history
  • Loading branch information
870138612 committed Dec 7, 2024
1 parent 52de935 commit 277c81d
Show file tree
Hide file tree
Showing 3 changed files with 223 additions and 226 deletions.
33 changes: 17 additions & 16 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 12 additions & 12 deletions src/discovery/1datastructure.md
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ public class Test {
### 哈夫曼树,最优二叉树.

- 路径长度:从根结点到某一个结点经历的边的个数.
- $WPL=$树中所有结点的带权路径长度之和,带权路径长度$=$路径长度$*$结点权值.
- $\text {WPL}$=树中所有结点的带权路径长度之和,带权路径长度$=$路径长度$*$结点权值.
- 最优二叉树的构造:每次选取两个权值小的结点构成一个新的结点放入原来的元素中继续进行这个步骤.
- 最优$n$叉树的构造:最优$n$叉树的第$2$层必须是满的,每次构造少了$n-1$个元素,添加权值为$0$的元素,使得最后一次构造元素个数是$n$.

Expand Down Expand Up @@ -606,14 +606,14 @@ void DFS(Agraph agraph, int i){
```

- 最小生成树,边包含权值
- 普里姆算法,以顶点为考虑对象,每次并入和当前顶点集合最近的顶点(直接联通),时间复杂度$o(V^2)$,适用于稠密图.
- 普里姆算法,以顶点为考虑对象,每次并入和当前顶点集合最近的顶点(直接联通),时间复杂度$o(v^2)$,适用于稠密图.
- 克鲁斯卡尔算法,以边为考虑对象,每次将最短的边进行连接,用并查集解决环路问题,时间复杂度$O(e\log e)$因为排序算法的最小平均时间复杂度$O(n\log n)$,适用于稀疏图,边较少,排序算法的时间较少.

### 最短路径问题

- $Dijkstra$算法,求解一个顶点到其余各个顶点的最短路径,时间复杂度$O(n^2)$.
- $\text {Dijkstra}$算法,求解一个顶点到其余各个顶点的最短路径,时间复杂度$O(n^2)$.

- $Floyd$算法,求解任意两个顶点之间的最短路径,时间复杂度$O(n^3)$.
- $\text {Floyd}$算法,求解任意两个顶点之间的最短路径,时间复杂度$O(n^3)$.

- ```java
for(int i = 0;i<edges.length;i++)//遍历edges的行
Expand All @@ -630,7 +630,7 @@ void DFS(Agraph agraph, int i){

### 关键路径

- 在$AOV$的基础上添加边权值得到$AOE$网.
- 在$\text {AOV}$的基础上添加边权值得到$AOE$网.

- 关键路径,从起点到终点的最长路径,又是一个最短的路径
- 最短代表了工期完成的最短时间,如果给定的时间少于最长路径,则一定有事件不能完成.
Expand All @@ -641,8 +641,8 @@ void DFS(Agraph agraph, int i){

### 关键指标

- $ASL1$代表查找成功的平均比较次数.
- $ASL2$代表查找失败的成功比较次数.
- $\text {ASL1}$代表查找成功的平均比较次数.
- $\text {ASL2}$代表查找失败的成功比较次数.
- 从一个单链表中找到一个值为k的结点,则如果找到了平均的比较次数$\cfrac{1+n}{2}$,如果没找到平均比较次数为$n$.

### 折半查找
Expand All @@ -656,7 +656,7 @@ void DFS(Agraph agraph, int i){
- 二叉排序树,每一个结点的值都是不同的
- 左子树都小于根结点,右子树都大于根结点
- 查找的时间复杂度,一般为$O(\log n)$,特殊情况为$O(n)$,树只有一个分支.
- $ASL1$分母是关键字的个数,$ASL2$中分母是查找失败的位置.
- $\text {ASL1}$分母是关键字的个数,$ASL2$中分母是查找失败的位置.

### 平衡二叉树

Expand All @@ -667,7 +667,7 @@ void DFS(Agraph agraph, int i){

### 红黑树

- AVL树是严格的平衡二叉树,调整的频率较高.
- $\text {AVL}$树是严格的平衡二叉树,调整的频率较高.
- 红黑树是大致平衡的二叉树
- 每个结点是红色或者黑色.
- 根结点是黑色.
Expand All @@ -690,7 +690,7 @@ void DFS(Agraph agraph, int i){
### 散列表

- 构造方法
- 直接定址法$H(key)=a\cdot key+b$,关键字分布不均匀,浪费空间.
- 直接定址法$\text H(key)=a\cdot key+b$,关键字分布不均匀,浪费空间.
- 除留余数法$H(key)=key \mod p$,$p$一般取小于等于表长的最大素数,例如表长15,则$p=13$,分布均匀,基本不浪费.
- 处理冲突
- 取$key = 0,13$,$H(key)=1$,这就叫冲突。
Expand All @@ -700,8 +700,8 @@ void DFS(Agraph agraph, int i){
- 双散列法,将原本的$key$再次进行$hash$操作.
- 拉链法
- 当发生冲突的时候,将元素采用尾插法对应地址的单链表.
- $ASL1$查找成功的平均比较次数,就是结点所在的层次之和/结点个数.
- $ASL2$查找失败的平均比较次数,分母是查找失败的位置,一般就等于$p$,分子是每个地址到空结点的有效元素比较次数.
- $\text {ASL1}$查找成功的平均比较次数,就是结点所在的层次之和/结点个数.
- $\text {ASL2}$查找失败的平均比较次数,分母是查找失败的位置,一般就等于$p$,分子是每个地址到空结点的有效元素比较次数.
- 计算过程
- 一般只给出元素的个数和装填因子,通过装填因子$a=\cfrac{n}{m}$,$n$是元素的个数,$m$是表长.
- 在通过表长取得除留余数法中的$p$,小于等于表长的最大素数.
Expand Down
Loading

0 comments on commit 277c81d

Please sign in to comment.