1 / 23

Hash 在信息学竞赛中的一类应用

Hash 在信息学竞赛中的一类应用. 安徽师范大学附属中学 杨弋. 前言. Hash. 前言. Hash. 前言. CRC32!. Hash. MD5!. SHA-1!. More …. 例 1. 多维匹配. 一维:在一个串中找另一个串第一次出现的位置 二维:在一个字符矩阵中找另一个字符矩阵第一次出现的位置 如果扩展到 k(k ≤ 10) 维呢?. c. a. c. c. a. b. a. b. a. b. a. 例 1. 多维匹配. 一维的情况: Rabin-Karp 算法. O(NM)?. c. a. b. é. ù.

maxine-dyer
Download Presentation

Hash 在信息学竞赛中的一类应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hash在信息学竞赛中的一类应用 安徽师范大学附属中学 杨弋

  2. 前言 Hash

  3. 前言 Hash

  4. 前言 CRC32! Hash MD5! SHA-1! More…

  5. 例1.多维匹配 • 一维:在一个串中找另一个串第一次出现的位置 • 二维:在一个字符矩阵中找另一个字符矩阵第一次出现的位置 • 如果扩展到k(k≤10)维呢?

  6. c a c c a b a b a b a 例1.多维匹配 • 一维的情况:Rabin-Karp算法 O(NM)? c a b

  7. é ù mod q ê ú ë û ( ) len S å - = ( ) len S i f ( S ) S [ i ] p a b c = 1 i × × × × × × × 1 p2 p2 p p 1 1 b c [ ] 求和 = + + - M f ( S ) × pf × ( × S ) X [ i M ] p X [ i ] mod q + 1 i i p3 p2 p 例1.多维匹配 • 一维的情况:Rabin-Karp算法 O(NM)? O(N+M)! a a

  8. ×p2 q3 ×p2 q2 ×p2 q ×p2 ×p q3 ×p q2 ×p q ×p ×q3 ×q2 ×q 例1.多维匹配 • 扩展到二维的情况 a b a a c b b c a b a c

  9. × × × × × × × × × p4 p3 p3 p2 p p2 1 1 p 例1.多维匹配 • 扩展到二维的情况

  10. 例1.多维匹配 • 更高维的情况……

  11. 传统算法 O(k(N+M)) 难以理解 相对实现困难 多维Rabin-Karp O(kN+M) 易于理解 易于编写,不易出错 例1.多维匹配

  12. 例1.多维匹配 回顾:我们是怎么计算出Hash值的? 部分和? 两端增加或者删除一位后的Hash值 O(1) 计算两个串连接后的串的Hash值 O(1) 线段树! 分块! 平衡树! Sparse Table! 预处理!

  13. 例2.树和图的同构 有根树 = ≠

  14. 例2.树和图的同构 有根树

  15. 例2.树和图的同构 有根树 对每一个子树计算一个Hash值…… 68 1234 × 131 = 1417 1417 1417 1417 (mod 2081) 1234 1417 1234 1234 1234 (( ×557)xor ×557)xor 1234 1234 (mod 2081) × 131 346 346 924 =

  16. 例2.树和图的同构 有根树 516 68 ≠ ≠

  17. 例2.树和图的同构 有根树 O(n log n) 可以使用Hash表在O(1)时间内查询 可以给出具体对应方案

  18. 例2.树和图的同构 有根树,另一种办法 树→串 子树的顺序? 字母序? 0 1 0 0 1 0 2 3 按Hash值排序!

  19. u v 例2.树和图的同构 无根树 f(u,v)表示以u为v的父亲节点时以v为根的子树的Hash值

  20. 例2.树和图的同构 类似地,有根森林,甚至任意图的同构问题也是可以使用Hash函数解决的 无根树

  21. 总结 Hash的本质 信息量大 不易比较 Hash “概括” 化繁为简 方便高效地比较

  22. 总结 正确性 有所舍弃? 优美性 题目 适合 理想的算法 效率 自己 简洁 有所收获! 扩展性

  23. 结束 谢谢!

More Related