如何hash一条有向边

之前这个问题还困扰了我好久,但是现在我才明白这个很蠢的问题

那就是(3,7)(4,9)(3,3)这种有向序点对(括号可能用的不对)

我们可以变成对“(3,7)”字符串的hash,当然我觉得括号可以去掉

具体可以用下面这个函数

unsigned int BKDRhash(TYPE key)
{//BKDRhash函数
    unsigned int seed = 131;
    unsigned int hash = 0;

    while(*key != '
' && *key != 0)      //通常使用时,判别条件为*key != 0即可,此处的*key != '
'是因笔者程序需要
        hash = hash * seed + (*key++);

    return hash % DICLEN;
}

有一个写的较完善的hash表利用这个字符串hash函数,http://www.cnblogs.com/liuliuliu/p/3966851.html

我们还可以a*base+b*base*base类似整数hash。。。

原文地址:https://www.cnblogs.com/linkzijun/p/6059418.html