算法导论的11.3-3解答
来源:互联网 发布:数据库设置主键和外键 编辑:程序博客网 时间:2024/06/06 20:21
题目描述:h(k)=k mod m,m =2^p-1,k为按基数2^p表示的字符串,证明:如果串x可由串y通过其自身的字符置换排列导出,则x和y具有相同的散列值。
证明过程:
假设V(y)表示字符串y用基数2^p表示的值。那么在字符串y中,它的a位和b位(从右往左数,最右的为0位)发生置换得到字符串x,则V(x)=V(y)-y[a]*2^(p*a)+y[b]*2^(p*a)+y[a]*2^(p*b)-y[b]*2^(p*b)
那么V(x)-V(y)=((y[b]-y[a])*(2^(p*a)-2^(p*b))) mod (2^p-1)
不失一般性,我们可以假设a>b,那么有
V(x)-V(y)=((y[b]-y[a])*2^(p*b)*(2^(p*a-p*b)-1)) mod (2^p-1)
又因为
2^(p*a-p*b)-1 = 0 mod (2^p -1)
所以
V(x)-V(y) = 0 mod (2^p-1)
因此在一个字符串中交换两个位置的字符后所得到的新字符串的散列值是不变。也就是字符串中随意位置的字符交换并不会影响它的散列值。
也就是说,如果串y通过自身字符置换排列导出的串x,那么两者是具有相同的散列值。
0 0
- 算法导论的11.3-3解答
- 算法导论 6.3-3解答
- 算法导论 6.3-3解答
- 算法导论 6.5-8解答
- 【通告】算法导论习题解答
- Introduction to Algorithms 算法导论 第3章 函数的增长 学习笔记及习题解答
- 算法导论(3版)第4章习题的部分解答
- 算法导论(3版)第5章少量习题的解答
- 《算法导论》习题解答 Chapter 22.1-3(转置图)
- 算法导论动态规划课后习题解答
- 算法导论习题15.5-1解答
- 算法导论习题32.1-4解答
- 算法导论第三版4.1习题解答
- 算法导论课后习题部分解答
- 关于《算法导论(第三版)》的课后作业7.4-5的解答
- 《算法导论》习题解答 Chapter 22.1-7(关联矩阵的性质)
- 《算法导论》习题解答 Chapter 22.1-8(变换邻接表的数据结构)
- 算法导论 第三章 函数的增长,3.1练习个人解答(Sor)
- Regular Expression 正则表达式 笔记
- null 与Undefined的区别
- TextView——文本省略显示
- HDU ACM 2524 矩形A + B
- adb在调试的作用
- 算法导论的11.3-3解答
- Web前端工程师为何不优先适配IE浏览器?
- 你能答的上来吗?
- 反射
- MAC maven配置
- Leetcode NO.53 Maximum Subarray
- Mybatis返回Map的一种实现
- Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.Invocation
- Java实现简易的文件的迁移器