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

23
Hash Hash 在在在在在在在在 在在在 在在在在在在在在 在在在 安安安安安安安安安安 安安安安安安安安安安 安安 安安

Upload: maxine-dyer

Post on 15-Mar-2016

110 views

Category:

Documents


4 download

DESCRIPTION

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. é. ù. - PowerPoint PPT Presentation

TRANSCRIPT

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

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

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

前言前言

Hash

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

前言前言

Hash

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

前言前言

HashCRC32!

MD5!

SHA-1!More…

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

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

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

例例 1.1. 多维匹配多维匹配 一维的情况:一维的情况: Rabin-KarpRabin-Karp 算法算法

c a ca b a b c a b a

c a b

O(NM)?

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

例例 1.1. 多维匹配多维匹配 一维的情况:一维的情况: Rabin-KarpRabin-Karp 算法算法

a b c× ××

1pp2

ab c

× ××1pp2

求和××pp2

×p3

a

×1

O(NM)?O(N+M)!

qmodiXpMiXSpfSf Mii ][][)()( 1

qmod

piSSf

Slen

i

iSlen][)()(

1

)(

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

例例 1.1. 多维匹配多维匹配 扩展到二维的情况扩展到二维的情况a b a ac b b ca b a c

×p2

×p

×p2 ×p2 ×p2

×p ×p ×p

×q3

q3

q3

q2

q2

q

q

×q2 ×q

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

例例 1.1. 多维匹配多维匹配 扩展到二维的情况扩展到二维的情况

×p3

×p 1

××p2

×p2 p

××p3

×p4

×1

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

例例 1.1. 多维匹配多维匹配 更高维的情况……更高维的情况……

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

例例 1.1. 多维匹配多维匹配传统算法传统算法

O(k(N+M))O(k(N+M))难以理解难以理解

相对实现困难相对实现困难

多维多维 Rabin-KarpRabin-KarpO(kN+M)O(kN+M)易于理解易于理解

易于编写,不易出错易于编写,不易出错

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

例例 1.1. 多维匹配多维匹配回顾:我们是怎么计算出回顾:我们是怎么计算出 HashHash 值的?值的?

部分和?两端增加或者删除一位后的两端增加或者删除一位后的 HashHash 值值计算两个串连接后的串的计算两个串连接后的串的 HashHash 值值 O(1)O(1)

O(1)O(1)

线段树!Sparse Table!

分块!预处理!

平衡树!

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

例例 2.2. 树和图的同构树和图的同构有根树有根树

=≠

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

例例 2.2. 树和图的同构树和图的同构有根树有根树

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

例例 2.2. 树和图的同构树和图的同构有根树有根树 对每一个子树计算一个Hash 值……

1234

1234 12341234

1234

× 131 = 1417

(mod 2081)

1417

1417

1234 1234

(mod 2081)

(( ×557)xor ×557)xor

924 × 131 = 346

1417

1417

346

68

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

例例 2.2. 树和图的同构树和图的同构有根树有根树

68 516

≠≠

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

例例 2.2. 树和图的同构树和图的同构有根树有根树 O(n log n)

可以给出具体对应方案可以使用 Hash 表在 O(1) 时间内查询

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

例例 2.2. 树和图的同构树和图的同构有根树,另一种办法有根树,另一种办法

树→串

2 3 0 1 0 0 1 0

子树的顺序?字母序?

按 Hash 值排序!

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

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

u

v

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

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

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

总结总结HashHash 的本质的本质

Hash信息量大不易比较

方便高效地比较

“ 概括”化繁为简

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

总结总结正确性优美性 有所舍弃?

效率简洁扩展性 有所收获!题目适合 理想的算法自己

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

结束结束

谢谢!谢谢!