Basic Blocks & Traces
# Basic Blocks and Traces
# Canonical Form
IR 存在一些与机器语言不能完全对应的情况,和与编译优化分析相冲突的情况。
CJUMP 能够转移到 t 或者 f,但是真正的机器语言在条件为假的时候直接下降至下一条指令(条件为真才跳转)
在表达式中使用 ESEQ 不太方便,会使子树不同的计算顺序产生不同的计算结果
CALL 调用 CALL 作为参数的时候会有寄存器冲突、语句副作用(修改全局变量、改变堆内存,etc.)等问题
三种方法:
Linearize: Transform trees into a list of canonical
trees...
more...
Week8-9
# K-Means
问题描述:如何将 n 个数据依据其相似度大小将它们分别聚类到 k 个集合,使得每个数据仅属于一个聚类集合。
初始化质心:随机选择 k 个数据点作为初始质心c1,c2,...,ckc_1, c_2, ..., c_kc1,c2,...,ck。
分配数据点:对于每个数据点xix_ixi,计算它与所有质心的距离,并将其分配到距离最近的质心所在的簇中
更新质心:对于每个簇,计算该簇内所有数据点的平均值,将该平均值作为新的质心。
迭代过程:重复执行分配和更新步骤,直到质心不再发生变化或达到预设的最大迭代次数。
# 主成分分析 (PCA)
输入:n 个 d...
more...
活动记录
# Activation Record/Stack Frame
函数的栈帧是栈上用来放函数的局部变量、参数、返回地址以及其他临时变量的区域
stack 一般从高地址向低地址,heap 从低地址向高地址
layout:
incoming arguments: 存储 caller 传递给 callee 的参数
frame pointer: 帧指针,用来访问 incoming arguments,从低向高是 argument 1, argument 2, …
local variables: 存储函数的局部变量(还有一些保存在寄存器里)
return address: 存储需要返回 caller...
more...
Week4-5
#Ch3 搜索算法
# 无信息搜索
BFS DFS 略
# 启发式搜索
贪婪优先搜索
每次取最短的;缺点:不一定是最优的
时间和空间复杂度均为 O(bm)O(b_m)O(bm),b 是搜索树分支因子,m 是最大深度
每次取当前节点的下一个节点到终点中直线距离最短的
A * 算法
评价函数:f (n) = g (n) + h (n)
代价函数 g (n) 表示从起始结点到结点 n 的开销代价值
启发函数 h (n) 表示从结点 n 到目标结点路径中所估算的最小开销代价值。
评价函数 f (n) 可视为经过结点 n、具有最小开销代价值的路径。
在最短路径问题中,g (?)...
more...








