利用哈希高效组装稀疏矩阵及基于网站的并行PageRank计算分区技术
1. 利用哈希高效组装稀疏矩阵
1.1 插入操作
在稀疏矩阵的哈希表示中,插入操作是将值以元组 (k, v) 的形式插入到数组的下一个空闲位置,并将数组元素数量加 1。由于内存重新分配耗时,数组扩容时通常按当前大小的一定比例(如 10%)进行,且最小扩容不低于预定义常数(如 10 个元素),这样可避免频繁的小扩容,不过会占用一些未使用的内存。
1.2 获取操作
获取操作是在稀疏矩阵中查找给定 (x, y) 位置的元素。首先计算键 k 和哈希键 h(k) ,然后在数组 h(k) 中进行线性搜索,查找具有给定键的元素。若找到则返回其值,否则返回 0.0。由于搜索是在连续内存位置存储的平均长度为 b 的连续数组中进行,所以即使是 $O(N)$ 操作,搜索也很高效。使用长哈希表成功的关键在于每个哈希值 h(k) 所需数组的长度较短。也可使用基于树的结构(如 AVL 树)解决哈希键冲突,这样搜索变为 $O(logN)$ 操作,但插入操作会更复杂,且存储元素所需内存会增加,因为每个元素除键和值外,还需左右子树的两个指针。
1.3 添加操作
添加操作是将给定值加到稀疏矩阵中 (x, y) 位置存储的值上。首先执行获取操作定位元素,若找到且该位置已有非零值,则将给定值与之相加;若未找到,则使用插入操作插入该元素。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



