可以通过哈希表实现高效的集合操作。
接口
一个集合对象可以包含了以下接口:
public interface Set> {
public void add(Key key);
public boolean contains(Key key);
public void remove(Key key);
public int siz...
分类:
其他好文 时间:
2014-06-17 22:28:05
阅读次数:
288
战争故事
很久很久以前,曾经发生过很多关于哈希函数的战争故事。那些战争的基本原理就是通过精心构造造成大量的哈希冲突从而占用大量的CPU资源。
被攻击的软件例有以下例子:
带有漏洞的服务器:攻击者精心构造哈系冲突,只需要56K的网速就能让服务器死机,从而达到DOS攻击的目的。
Perl 5.8.0:攻击者精心构造哈系冲突插入到关...
分类:
其他好文 时间:
2014-06-17 21:48:18
阅读次数:
206
在上章节中已经介绍了通过红黑树实现键值对数组的查询操作,复杂度是logN。有没有性能更好的算法呢?答案是有。
基本想法就是计算关键字的哈希值,再通过哈希值直接获取对应的键值。
这种方法的需要解决的问题是:
如何计算哈希值
如何解决哈系冲突
哈希函数
目标
根据对象中的成员变量的值,按照一定的规则计算出一个...
分类:
其他好文 时间:
2014-06-14 10:05:28
阅读次数:
273
独立链表是解决哈希冲突的一种办法。它的基本思想就是将哈希值相互冲突的几个对象放到一个链表中。
代码
public class HashST {
private static class Node {
Object key; // 由于无法创建泛型数组,只能将对象设置为Object类
Object value;
Node n...
分类:
其他好文 时间:
2014-06-14 10:04:26
阅读次数:
206
Bloom filter的实现以及常用的hash函数
bloom filter利用时间换空间的思想,利用多个哈希函数,将一个元素的存在状态映射到多个bit中,特别是在网络环境中,BF具有广泛的用途,关键问题就是要减少false positive rate(可以设置参数来调节),扩展有 counting BF。这里选用的hash函数是表现较好的 BKDRHash , SDBMHash, D...
分类:
其他好文 时间:
2014-06-13 20:42:05
阅读次数:
412
哈希函数思想在查找中是非常重要的一个思想。在数据结构中我们学习的都只是一些简单的函数
比如:
相加取余
相乘取余
相除取余
。。。。
哈希函数在查找中可以在O(1)时间中查找到数据的位置。
哈希函数的关键在于函数的选取 , 然而不管选择怎么样的函数 , 一般都会存在冲突 , 但是如果函数选取得得当,那么冲突就会减小。
poj 3349是一题简单的hash题
我们选取的...
分类:
其他好文 时间:
2014-06-08 04:43:01
阅读次数:
241
哈希表的链地址法来解决冲突问题将所有关键字为同义词的记录存储在同一个线性链表中,假设某哈希函数产生的哈希地址在区间[0, m -
1]上,则设立一个至振兴向量Chain ChainHash[m];数据结构//链表结点typedef struct _tagNode{ int data;
...
分类:
其他好文 时间:
2014-05-31 19:23:52
阅读次数:
436
1.字典字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、只含不可变类型元素的元组(1,2...
分类:
编程语言 时间:
2014-05-27 01:59:59
阅读次数:
422
[转自]:http://my.oschina.net/chape/blog/132533目录[-]哈希表的原理与实现一致性
hash 算法基本场景hash算法和单调性consistent
hashing算法的原理虚拟节点小结分布式哈希算法哈希函数哈希表分布式哈希表哈希表的工作原理与常用操作基础操作应...
分类:
其他好文 时间:
2014-05-21 11:42:14
阅读次数:
412
哈希表,也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。
哈希函数最主要的设计在于哈希函数和冲突处理的解决,其中哈希函数的设计方法主要有直接定址法和除留余数法;冲突处理的方法主要有开放定址法和链地址法。本文主要实现了一个基本存放字符串的哈希表,冲...
分类:
编程语言 时间:
2014-05-15 01:35:01
阅读次数:
396