python的完美散列实用程序

perfection的Python项目详细描述


https://travis-ci.org/eddieantonio/perfection.svg?branch=master

为已知整数集创建完美哈希函数的模块 输入。

>>> import perfection
>>> l = (0, 3, 4, 7 ,10, 13, 15, 18, 19, 21, 22, 24, 26, 29, 30, 34)
>>> hf = perfection.make_hash(l)
>>> hf(19)
1

安装

pip install perfection

主要功能

  • make_hash(),它生成一个从诚实到善良的完美散列函数 对于给定的密钥。
  • make_dict()创建实现 MutableMapping接口(因此,其行为完全类似于dict),并且 使用在对make_hash()的等效调用中创建的哈希函数。

另外,hash_parameters()可以用于输出 为给定的输入密钥集生成一个完美的哈希。这些参数可以 然后用您的 选择。

例如,使用hash_parameters()

生成tr参数
>>> l = (0, 3, 4, 7 ,10, 13, 15, 18, 19, 21, 22, 24, 26, 29, 30, 34)
>>> params = hash_parameters(l)
>>> params.t
6
>>> params.r
(2, 7, 12, 0, 7, 10)

然后,伪代码中的散列函数如下:

function hash(i):
    static r = { 2, 7, 12, 0, 7, 10 }
    static t = 6

    x = i mod t
    y = i div t
    return x + r[y]

注意,div代表floor(整数)除法。

测试版功能

可以导入最小完美(已订购!)具有相同api的哈希函数 使用:

import perfection.czech

API尚未完成!

学分

Thomas Gettys描述的算法。

Python代码©2014,2016 Eddie Antonio Santos。麻省理工学院许可。

托马斯·卡尔曼特的贡献。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
交换数组中重复值的位置(Java)   java搜索使用百分比匹配Elasticsearch SpringBoot中的文本   java Spring JPA和按输入字段排序   java我在输入CSV时出错了   java如何在RecyclerView中精确显示5项   使用java安全吗。util。servlet中的计时器?   使用Cp1252编码的java比较字符串   javafx打包java桌面应用程序,并引用开源许可证   java Spring和Camel CXF在战争中表现出色   java当EJB客户端失去与应用服务器的连接时,是否存在可以捕获的异常?   更改字符串值的java注释   java如何在sharedperfernce中保存自定义数组列表   RequestResponseLink:当使用java客户端读取队列时,Azure服务总线上RequestResponseLink到“$cbs”的内部发送链接因错误而关闭