ADSL
DMA
网络
补码
多路复用
电话网络
电路交换
香农定理
数据通信的理论基础
- 傅里叶分析
- 带宽:传输过程中振幅不会明显减弱的一段频率范围
- 尼奎斯特定理:无噪声、有限带宽信道的最大传输率=2Hlog2(V) b/s
- 香农定理:带宽为H,信噪比为S/N的信道最大传输率=Hlog2(1+S/N)
ALOHA
IP
LAN
TCP
WAN
栈
接口
网络
蓝牙
路由
多路复用
操作系统
电话网络
顾名思义,计算机网络是指计算机连接而成的网络。但我们首先还是需要区分一下计算机网络和分布式系统:
- 分布式系统
对于用户是一个统一的整体,只有一个模型或泛型,由操作系统之上的中间件负责实现。
eg. 万维网(world wide web)
- 计算机网络
大量独立的计算机互相连接起来共同完成计算任务。
Dijkstra
排序
算法
队列
最小生成树
单源最短路径
广度优先搜索
深度优先搜索
基本的图算法
图的表示
图 G=(V,E) 可以用两种标准表示方法表示。
- 邻接链表:由一个包含 |V| 条链表的数组 Adj 构成,每个结点有一条链表。
权重图:直接将边 (u,v) 的权重值 w(u,v) 存放在 u 的邻接链表里。
邻接链表表示 稀疏图(边的条数|E|远小于$|V|^2$)时非常紧凑。
- 邻接矩阵:由$|V|\times |V|$的矩阵 $A=(a_{ij})$ 表示:
$a_{ij}=
\begin{cases}
1,~if~(i,j)\in E\
0,~other
\end{cases}
$
邻接矩阵更适合表示 稠密图、需要快速判断任意两个点是否相连的图。
B树
指针
磁盘
算法
红黑树
B树
- B树类似于红黑树。他们在降低磁盘I/O操作数方面更好一些。因为B树的分支因子可以非常大,所以其高度要比红黑树小得多。
- B树是以一种自然的方式推广了的二叉搜索树。
B树的定义
我们假定,任何与 关键字相联系的 卫星数据将与关键字一样存放在同一结点中,并随着关键字一起移动。一棵B树T是具有以下性质的有根树(根为T.root):
B+树是B树的变种。
- 每个结点x有如下属性:
a. x.n,表示结点x中的关键字个数
b. x.n个关键字以非降序排列
c. x.leaf,表示x是否为叶结点
- 每个内部结点包含 x.n+1 个指针指向孩子们 c[i]
- x 中的关键字 x.key[i] 对子树中的关键字 k[i] 进行分割,n个关键字,n+1个子树
- 每个叶结点有相同的深度,即树的高度h
- 每个结点的关键字数由 最小度数(minimum degree)t>=2控制:
a. 除根节点外,每个结点至少含 t-1 个关键字
b. 每个结点至多含 2t-1 个关键字
如果 n>=1,那么对任意一棵包含n个关键字、高度为h、最小度数t>=2 的B树T,有
$h\leq \log_t \frac{n+1}{2}$
分治
算法
贪心
动态规划
动态规划
动态规划方法通常用来求解 最优化问题(optimization problem),通常有四个步骤:
- 刻画一个最优解的特征
- 递归地定义最优解的值
- 计算最优解的值
- 利用计算出的信息构造一个最优解
动态规划(dynamic programming)与分治方法相似,都是通过组合子问题的解来求解原问题。区别在于分治法的子问题互不相交,而动态规划应用于子问题重叠的情况。
栈
指针
数组
算法
链表
队列
二叉树
哈希表
字符串
红黑树
线段树
全局变量
栈和队列
栈(stack)实现的是一种后进先出策略。
STACK-EMPTY(S)
if S.top == 0
return TRUE
else return FALSE
PUSH(S, x)
S.top = S.top + 1
S[S.top] = x
POP(S)
if STACK-EMPTY(S)
error "underflow"
else S.top = S.top - 1
return S[S.top +1]
排序
数组
算法
队列
二叉树
- 待排序的项称为 记录(record),每个记录包含一个 关键字(key),即排序问题中要重排的值,记录的剩余部分由 卫星数据(statellite data)组成。
- 如果输入数组中仅有常数个元素需要在排序过程中存储在数组之外,则称排序算法是 原址的(in place)。插入排序可以在$\Theta(n^2)$时间内将n个数排好序,是一种非常快的原址排序算法;归并排序有更好的渐近运行时间$\Theta(n\lg n)$,但它使用的MERGE过程并不是原址的。
| 算法 |
最坏情况运行时间 |
平均情况/期望运行时间 |
| 插入排序 |
$\Theta(n^2)$ |
$\Theta(n^2)$ |
| 归并排序 |
$\Theta(n\lg n)$ |
$\Theta(n\lg n)$ |
| 堆排序 |
$O(n\lg n)$ |
— |
| 快速排序 |
$\Theta(n^2)$ |
$\Theta(n\lg n)$(期望) |
| 计数排序 |
$\Theta(k+n)$ |
$\Theta(k+n)$ |
| 基数排序 |
$\Theta(d(n+k))$ |
$\Theta(d(n+k))$ |
| 桶排序 |
$\Theta(n^2)$ |
$\Theta(n)$(平均情况) |