8086指令系统之算数运算指令
本篇介绍了汇编指令中如何进行运算,包括加、减、乘、除
前置问题:
- 怎么做多字节的加减法?
- 为什么加减法指令不分有符号数和无符号数,而乘除法的有符号数和无符号数运算分别是不同的指令
- 如何确定指令执行的是字节操作还是字操作?
- 符号扩展指令再什么时候会用到,如何用?
- 取负指令NEG为什么执行的是取反加一?
本篇介绍了汇编指令中如何进行运算,包括加、减、乘、除
前置问题:
本篇在投影梯度下降法的基础上,引出Bregman散度的概念,并且介绍Mirror Descent方法
块状链表大概就长这样。
不难发现块状链表就是一个链表,每个节点指向一个数组。 我们把原来长度为 n 的数组分为
1 | struct node { |
块状链表应该至少支持:分裂、插入、查找。 什么是分裂?分裂就是分裂一个 node
,变成两个小的 node
,以保证每个 node
的大小都接近 node
的大小超过
EM算法的迭代式子为
为了解决高斯模型的单峰性的问题,我们引入多个高斯模型的加权平均来拟合多峰数据:
在EM算法的介绍中使用到了
块状数组,即把一个数组分为几个块,块内信息整体保存,若查询时遇到两边不完整的块直接暴力查询。一般情况下,块的长度为
下面直接给出一种建立块状数组的代码。
1 | num = sqrt(n); |
其中 st[i]
和 ed[i]
为块的起点和终点,size[i]
为块的大小。
两种操作:
我们要询问一个块内大于等于一个数的数的个数,所以需要一个 t
数组对块内排序,a
为原来的(未被排序的)数组。对于整块的修改,使用类似于标记永久化的方式,用 delta
数组记录现在块内整体加上的值。设
用 delta
数组记录每个块的整体赋值情况。
1 | void Sort(int k) { |
本篇博客补充一些关于概率图的知识。