java - 是什么让这个散列函数具有内射性?
问题描述
对散列技术有更好理解的人可以向我解释一下:是什么使下面的函数成为单射散列函数?
下面的这个函数应该为搜索树生成一个唯一的哈希键:
- 仅包含 1 到 99 之间的值和
- 包含所有可能的 int 不超过一次
是否真的有必要选择 100 作为乘数(我假设 100 不在可能的树值范围内)?
例如,像 31 这样的素数不会可靠地产生预期的输出吗?
int injectiveHashFunc(Tree b){
int[] po = postorder-tree-walk(b);
int key = 0;
for(k = 0; k < po.length; k++) {
key = key * 100 + po[k];
}
return key;
}
解决方案
推荐阅读
- c++ - 如何在虚幻引擎中将 Do N 节点从蓝图转换为 C++?
- javascript - 如何检测页面刷新以响应执行功能?
- swiftui - Swiftui watchos 导航栏被截断
- mobx - 如何使用 mobx-react-devtools
- java - 从自定义后缀服务器发送的 Spring Boot 电子邮件不起作用
- valgrind - 如何安装和配置 Valgrind Memcheck?
- jquery - 当表单中存在文件字段时,Rails 不发出 Ajax 请求
- java - kotlin 的 readLine 函数的奇怪行为
- c++ - 有符号整数溢出[C++]
- html - 为什么我的切换按钮在 bootstrap 3 中不起作用?