笔试题—知识点汇总(一)
目录:
1、有序树转换二叉树
2、洗牌问题
3、矩阵秩的几何意义
1、有序树转换二叉树
如果T2是由有序树T转换而来的二叉树,那么T中结点的前序就是T2中结点的前序,T中结点的后序就是T2中结点的中序
2、洗牌问题
简单直接的方法:对数组从头到尾扫描一遍,扫描过程中,每次都从整个数组随机选一个元素,跟当前扫描到的元素交换位置。也就是,先拿起第一张牌,把它跟从整副牌里随机挑出的另一张牌(把它叫做随机牌)交换位置(随机牌也可能是第一张牌自己,这个时候就相当于不交换位置);接着拿起第二张牌,也把它跟随机选出的另一张牌交换位置;一直重复直到把最后一张牌跟随机牌交换位置。
但是实际并不公平,有些组合出现概率会大些,解释:https://yjk94.wordpress.com/2017/03/17/%E6%B4%97%E7%89%8C%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%A7%BF%E5%8A%BF-knuth-shuffle%E7%AE%97%E6%B3%95/
Knuth洗牌算法:唯一修改的就是随机牌j
选取的方法,在拿起第i
张牌时,只从它之后(或者之前)的牌随机选出j
,而不是从整副牌里面随机选取。这次概率就相同了。
vector<int> shuffle() { vector<int> res=v; for(int i=0;i<res.size();++i) { int t = i + rand()%(res.size()-i);//从当前位置之后的书中随机找一个交换位置 swap(res[i],res[t]); } return res; }
3、矩阵秩的几何意义
一个向量组中,极大线性无关组中向量的个数,就是矩阵的秩。
可以用于降维,去除相关性大的向量,保留主要的向量。SVD降维。