5.hash-slides .pdf

ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ýěŚĺÝûďć ľøď
CLRS ŠŚţî 11 ÛÊê ěŘ
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
1
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(Symbol Table Problem) ŚûćŚÞœ ñøÀŻ ýĆÜßÆõ
.ÀĂîüõ ùÂČąč Řď ćďĄîď n Ćî T ýŚûćŚÞœ ñøÀŻ •
.ćďŘć Ýû ÂÚþć ýŚûĆÔóĄõ (key) ÀČÜî ýĆÔóĄõ ÂŞ ùøĚä ćďĄîď Âû •
(ýŘùćŘć ÙĂûÂê ñŚÞäŘ) ĄŻøťÆŻ ø éÁ§ ,Žďć :ñŚÞäŘ •
?楳 ùÂČąč ÀþŚŞ ĆœĄðĆİ ùćŘć •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
2
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(Direct Access Table) ÝČÖţÆõ üûć ğďćŊ ñøÀŻ
,K ⊆ {0, 1, · · · , m − 1} ø ÃþŚÞţõ ŚûÀČÜî ÂðŘ •
T [0..m − 1] ýĆþŘďŊ ⇐=




T [k] = 
x
if k ∈ K and key[x] = k
null otherwise
O(1) ďć ñŚÞäŘ •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
3
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ñŚÞäŘ) ÝČÖţÆõ üûć ğďćŊ ñøÀŻ
Direct-Address-Search (T, k)
1 return T [k]
Direct-Address-Insert (T, x)
1 T [key(x)] ← x
Direct-Address-Delete (T, x)
1 T [key(x)] ← null
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
4
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÛØÈõ) ÝČÖţÆõ üûć ğďćŊ ñøÀŻ
ÀłŚŞ ïďÃŞ ďŚČÆŞ ÀœŘĄŮüõ m •
!ÀłŚŞ ĆţłŘć ŰøŚÔţõ ďŘÀÖõ 18,446,744,073,709,551,616 ÀœŘĄŮüõ üţČŞ 64 ÀČÜî •
.ÀłŚŞ ÀœŘĄŮüõ ßþŘ ěŘ ÂŮÇČŞ Śţ§ ŚûťóŚ§ ćŘÀãŮ ,ÀłŚŞ Ćţłď ÂðŘ ÀČÜî •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
5
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(hashing tables) ýěŚĺÝûďć ýŚûñøÀŻ
T
0
1
h(k4)
h(k3)
k1
K
k5
U
k2
k4
h(k1)
h(k5) = h(k6)
k3
k6
h(k2)
m−1
(collision) ć凉ª ⇐= .楳 üõ ùÂČąč h(k) ýĆþŘďć ďć k = key[x] ÀČÜî ŚŞ x ÂÊĂä
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
6
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(hashing function) ýěŚĺÝûďć ⪌Ů
h : U → {0, 1, . . . , m − 1}
,À œĄ ł Â ÒŚ Ă ţ õ ñøÀ Ż ěŘ Ć þŘďć Œ þ Ć Ş ýěŚ ĺÝ ûďć â ŞŚ Ů Í ĺĄ Ů Â Ê Ă ä øć  ðŘ :Ó þ ã Ů
.ťĺŘ ùćŘć ýøď (collision) ć凉ª Œþ ÝČþĄðüõ
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
7
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ć凉ª Û§ ýŘÂŞ (chaining) ýŘùÂČźœě ľøď
T
i
86
49
52
h(49) = h(86) = h(52) = i
T [h(k)] ýÀœĄČŢ ťÆČó ďć (ÂŞŘÂŞ h(k)) ÀœĄłüõ ťłŚÚœ ĆþŘďć Œþ ĆŞ Ćî ýÂňŚĂä
(null) üúŮ ťÆČó
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
8
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ñŚÞäŘ) ýŘùÂČźœě ľøď
Chained-Hash-Search (T, k)
1 search an element whith key k in list T [h(k)]
Chained-Hash-Insert (T, x)
1 insert x at the head of list T [h(key[x])]
Chained-Hash-Delete (T, x)
1 delete x from the list T [h(key[x])]
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
9
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÛČÜ¡Ů) ýŘùÂČźœě ľøď
.ÀĂîüõ ùÂČąč Řď ÂÊĂä n ,m ýùěŘÀœŘĆŞ (T ) ýěŚĺÝûďć ñøÀŻ :ŋÂê •
α=
n
m
üĂãŞ ,T (load factor) ýďŘÁð řþÂő α :ÓþÂãŮ •
.ÀœÂČðüõ ďŘÂì ùÂČźœě Œþ ďć Ćî ťĺŘ ýÂňŚĂä ćŘÀãŮ ßČÚœŚČõ α •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
10
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ťóŚ§ ßþÂŮÀŞ) ýŘùÂČźœě ľøď ÛČÜ¡Ů
.ÀœÂČð ďŘÂì ĆþŘďć Œþ ďć ÂÊĂä n :ťóŚ§ ßþÂŮÀŞ •
:ĄŻøťÆŻ ýŘÂŞ öŚõě ßþÂŮÀŞ •
.ýěŚĺÝûďć âŞŚŮ ĆśĺŚ¡õ ýŘÂŞ ôěĎ öŚõě ùøĚäĆŞ O(n)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
11
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ßČÚœŚČõ ťóŚ§ ďć) ýŘùÂČźœě ľøď ÛČÜ¡Ů
.(simple uniform hashing) ťĺŘ ť§ŘĄĂØþ ø ùćŚĺ ýěŚĺÝûďć ⪌٠:ŋÂê •
.ćÂČðüõ ďŘÂì ñøÀŻ ýŚûĆþŘďć ěŘ Œþ Âû ďć ýøŚÆõ ñŚÞţ§Ř ŚŞ ÂÊĂä Âû üĂãþ
(j = 0 . . . , m − 1) Tj ťÆČó ýùěŘÀœŘ :nj •
n = n0 + n1 + ... + nm−1 :ÝþďŘć •
α=
n
m
ŚŞ ťĺŘ ÂŞŘÂŞ nj ßČÚœŚČõ ďŘÀÖõ •
.ÝČĂîüõ ŠŚÆ§ O(1) ďć Řď h(k) ďŘÀÖõ :ŋÂê •
nh(k) Ć Ş ü Î ą ŰďĄ ňĆ Ş k À Č Ü î Ś Ş Â Ê Ă ä Œ þ ýĄ Żøť Æ Ż ýŘÂ Ş ěŚ Č œ ćďĄ õ öŚ õě •
&
üĺÀì ÀÞ¡õ
.ćďŘć üÚţÆŞ
c
°
1387 öŚŞŊ 25
12
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ĄŻøťÆŻ) ýŘùÂČźœě ľøď ßČÚœŚČõ ÛČÜ¡Ů
.ćďŘÀœ ÕêĄõŚœ Śþ ÕêĄõ ýĄŻøťÆŻ :ĄŻøťÆŻ ÛÞä Œþ ýŘÂŞ ťóŚ§ øć
:ĆČÌì
ùćŚÔţĺŘ ŋÂê ŚŞ ,ÀœŘùÀł Û§ ýŘùÂČźœě ľøď ĆŞ Śûć凉ª Ćî ýěŚĺÝûďć ñøÀŻ Œþďć
ß Č Ú œŚ Č õ öŚ õě Ć Ş Õ êĄ õŚ œ ýĄ Żøť Æ Ż Œ þ ,ť ąŘĄ œŒ þ ýùćŚ ĺ ýěŚ ĺÝ ûďć â ŞŚ Ů ěŘ
.ćďŘć ěŚČœ O(1 + α)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
13
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÕêĄõŚœ ýĄŻøťÆŻ) ýŘùÂČźœě ľøď ßČÚœŚČõ ÛČÜ¡Ů
:ŰŚśŹŘ
öŚ Æ Ø þ ñŚ Þ ţ §Ř Ś Ş ,À łŚ Ş ùÀ È œ ùÂ Č ąč ñøÀ Ż ďć ěĄ Ă û Ć î k À Č Ü î  û ŋ ê Õ ś Ï •
.ćÂČð ďŘÂì ñøÀŻ ýŚûĆþŘďć ěŘ Œþ Âû ďć ÀœŘĄŮüõ
ĄŻøťÆŻ ýŘÂŞ ôěĎ öŚõě ÂŞŘÂŞ ÕêĄõŚœ ýĄŻøťÆŻ Œþ ôŚźœŘ ýŘÂŞ ôěĎ öŚõě ÅŢ •
.ťĺŘ α ßČÚœŚČõ ñĄÏ ýŘďŘć Ćî ,ÀłŚŞüõ T [h(k)] ťÆČó ýŚúţœŘ ŚŮ
.ťĺŘ O(1 + α) ÂŞŘÂŞ ÕêĄõŚœ ýĄŻøťÆŻ öŚõě ßþŘÂŞŚĂŞ •
(.ťĺŘ ùÀł ŋÂê O(1) ,h(k) ĆśĺŚ¡õ öŚõě)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
14
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÕêĄõ ýĄŻøťÆŻ) ýŘùÂČźœě ľøď ßČÚœŚČõ ÛČÜ¡Ů
:ĆČÌì
ŋÂ ê Ś Ş ,À œŘùÀ ł Û § ýŘùÂ Č ź œě ľøď Ć Ş Ć Ş Ś ûćďĄ ąÂ Ş Ć î ýěŚ ĺÝ ûďć ñøÀ Ż Œ þďć
ßČÚœŚČõ öŚõě ÕêĄõ ýĄŻøťÆŻ Œþ ,ťąŘĄœŒþ ýùćŚĺ ýěŚĺÝûďć ⪌٠ěŘ ùćŚÔţĺŘ
.ćďŘć ěŚČœ O(1 + α)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
15
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÕêĄõ ýĄŻøťÆŻ) ýŘùÂČźœě ľøď ßČÚœŚČõ ÛČÜ¡Ů ýĆõŘćŘ
:ŰŚśŹŘ
楳üõ Žďć ñøÀŻ ďć Ćî ÀłŚŞ ýÂÊĂä ßČõŘ i ,xi :ŋÂê •
.ki = key[xi ] ø ,(i = 1, 2, . . . , n)
Xij = I(h(ki) = h(kj )) :Xij üêćŚÊŮ ÂČçţõ •
pr(h(ki) = h(kj )) =
E[Xij ] =
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
16
1
m
1
m
:ÝþďŘć •
ßþŘÂŞŚĂŞ •
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ÕêĄõ ýĄŻøťÆŻ ýŘÂŞ üĺďÂŞ ćďĄõ ÂňŚĂä ßČÚœŚČõ ćŘÀãŮ
n 
n
X
1 X



E
Xij  =
1 +
n i=1
j=i+1



=
=
=
=
=
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
17
1




1
+
E[X
]

ij 
n i=1
j=i+1


n 
n
1 X
1
X



1 +

n i=1
m
j=i+1
n
1 X
1+
(n − i)
nm i=1

1  2 n(n + 1) 
1+
n −

nm
2
n−1
α
α
1+
=1+ −
2m
2 2n
n
X

n
X

ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
ßþŘÂŞŚĂŞ
$
ťĺŘ ÂŞŘÂŞ (ýěŚĺÝûďć âŞŚŮ ĆśĺŚ¡õ ýŘÂŞ ôěĎ öŚõě ŠŚÆţ§Ř ŚŞ) ÕêĄõýĄŻøťÆŻ öŚõě
ŚŞ
Θ(2 + α/2 − α/2n) = Θ(1 + α)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
18
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ýěŚĺÝûďć âŞŘĄŮ
simlpe uniform hashing ùćŚĺ ø ťąŘĄĂØþ ÀþŚŞ ŠĄą ýěŚĺÝûďć ⪌٠Œþ •
,ÀĂţÆû üãČśÏ ćŘÀäŘ ÂňŚĂä ÀČÜî ÀĂĂîüõ ŋÂê ýěŚĺÝûďć âŞŘĄŮ ěŘ ýďŚČÆŞ •
ýŘÂŞ üłøď ÀþŚŞ ÀłŚśœ üãČśÏ ÝČĂî ùÂČąč ÝČûŘĄąüõ Ćî ýÂňŚĂä ÀČÜî ÂðŘ ßþŘÂŞŚĂŞ •
.ÝČŞŚČŞ üãČśÏ ćŘÀäŘ ŚŞ ŚûöŊ öćÂî ÂÒŚĂţõ
Àî áĄÞźõ Řď ÀČÜî ÝČœŘĄŮüõ ,ÀłŚŞ ŚûĆÆþĄœ ěŘ üþŚûĆţłď ÂňŚĂä ÀČÜî ÂðŘ ,ñŚůõ ýŘÂŞ •
.ÝþÂČÚŞ ÂÑœ ďć Ćţłď öŊ ýŚûĆÆþĄœ üØĺŘ
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
19
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÝČÆÖŮ ľøď) ýěŚĺÝûďć âŞŘĄŮ
.h(k) = k mod m •
.ÝČĂî ŠŚĂţŻŘ m ýŘÂŞ üňŚą ÂþćŚÖõ ŠŚ£ţœŘ ěŘ ÀþŚŞ •
.ťĺŘ k ľěďŘÝî ťČŞ p ñćŚãõ h(k) ,m = 2p ÂðŘ ŘÂþě ,ÀłŚŞ 2 ěŘ üœŘĄŮ ÀþŚśœ m Ě
f ůõ •
.楳 ùćŚÔţĺŘ h(k) ýĆśĺŚ¡õ ýŘÂŞ ŚûťČŞ ýĆÞû ÂþćŚÖõ ěŘ ťĺŘ ÂŮĆŞ •
m ýŘÂŞ üśĺŚĂõ ŠŚ£ţœŘ ÀłŚśœ 2 ěŘ üœŘĄŮ ĆŞ ŒþćÃœ Ćî ñøŘ ćÀä Œþ üÜî ďĄÏĆŞ •
.ťĺŘ
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
20
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÝČÆÖŮ ľøď) ýěŚĺÝûďć âŞŘĄŮ
:ÀœďŘć ÇÖœ ýěŚĺÝûďć ⪌٠ýÀŞ Śþ üŞĄą ďć ŚûÀČÜî ďŘÀÖõ ø âþěĄŮ
ñŚůõ
ø (i = 1..100) Xi = i2 üĂãþ ÀĂłŚŞ ÛõŚî ďøÁźõ ćŘÀäŘ ,ĆäĄÞźõ ÂňŚĂä •
m=7•
xy mod m = (x mod m)(y mod m) mod m ÝČœŘćüõ •
h(x) = i2 mod 7 = (i mod 7)2 mod 7 •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
21
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
i i mod 7 (i mod 7)2 mod 7
1
1
1
2
2
4
3
3
2
4
4
2
5
5
4
6
6
1
7
0
0
14 ∗ 7 + 2 = 100
0 ĆþŘďć ďć ć凉ª = 14
1 ĆþŘďć ďć ć凉ª 14 ∗ 2 + 1 = 29
2 ĆþŘďć ďć ć凉ª14 ∗ 2 = 28
4 ĆþŘďć ďć ć凉ª 14 ∗ 2 + 1 = 29
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
22
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ŠÂő ľøď) ýěŚĺÝûďć âŞŘĄŮ
.ťĺŘ üţČŞ w ÂŮĄČşõŚî ýĆÞÜî ø m = 2r ,ijČ¡ň ćŘÀäŘ ŚûÀČÜî :ŋÂê •
h(k) = (A.k mod 2w ) rsh (w − r) •
üţČŞ ťĺŘď ťÔČł üĂãþ rsh •
.2w−1 < A < 2w ĆîýďĄÏĆŞ ťĺŘ ćÂê ijČ¡ň ćÀä Œþ A •
:ŰŚØœ ø ŚûĆČňĄŮ •
.ÀłŚśœ 2w ĆŞ ŒþćÃœ A -.ťĺŘ âþÂĺ mod 2w ďć ŠÂő ÛÞä -&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
23
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
&
üĺÀì ÀÞ¡õ
.ťĺŘ âþÂĺ Ýû rsh ÛÞä --
c
°
1387 öŚŞŊ 25
24
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
$
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ñŚůõ) ŠÂő ľøď ĆŞ ýěŚĺÝûďć âŞŘĄŮ
w bits
k
A
r1
r0
r bits
h(k)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
25
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ñŚůõ) ŠÂő ľøď ĆŞ ýěŚĺÝûďć âŞŘĄŮ
1011001
A
1101011
k
10010100110011
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
26
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ýěŚĺÝûďć âŞŘĄŮ ÛØÈõ
Ćî ćÂî ŘÀČŢ ŚûÀČÜî ěŘ ýŘĆäĄÞźõ öŘĄŮüõ ,ÝþŘùÀþć Ćî h ýěŚĺÝûďć ⪌٠Âû ýŘÂŞ •
.楳 ćŚþě ďŚČÆŞ ĄŻøťÆŻ öŚõě ßČÚœŚČõ
ÀČÜî ßõ ø ⪌٠ŚÞł :ý쌪 Œþ Ûůõ •
(universal hashing) ýÂĺŘÂĺ ýěŚĺÝûďć :Û§ùŘď ýùÀþŘ •
ěŘ ÛÖţÆõ ø üêćŚÊŮ ŰďĄňĆŞ Řď üØþ ýěŚĺÝûďć âŞŘĄŮ ěŘ ĆäĄÞźõ Œþ ßČŞ ěŘ -ßî ŠŚ£ţœŘ ŚûÀČÜî
.ÀĂî ŠŚ£ţœŘ Řď ÀŞ ýŚûÀČÜî ÀœŘĄŮüÞœ ,ÀœŘÀŞ Ûśì ěŘ Řď âŞŘĄŮ ýĆÞû ÕŞÂ§ ÂðŘ Śţ§ -.Àł ÀûŘĄą ŠŚ£ţœŘ ýěŚĺÝûďć ⪌٠ôŘÀî ÀœŘćüÞœ öĄİ -&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
27
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(open hashing) 쌪 üûćğďćŊ
楳üõ ùÂČąč ñøÀŻ ĆþŘďć Œþ ďć ÂÊĂä Âû 쌪 üûćğďćŊ ďć
Žďć
ßþŘ ĆŞ Řď ýěŚĺÝûďć ⪌٠ÀœĄł üĺďÂŞ ÀþŚŞ ŚûĆþŘďć ôŘÀî ĆîßþŘ öćÂî É£Èõ ýŘÂŞ
:ÝČĂîüõ ÓþÂãŮ ŰďĄň
h : U ∗ {0, 1, ..., m − 1} → {0, 1, ..., m − 1}
:ÝþďŘć Âþě ýŚûĆþŘďć üóŘĄţõ öćÂî Œİ ĆŞ ěŚČœ k ÀČÜî Âû ýŘÂŞ 쌪 üûćğďćŊ ďć
< h(k, 0), h(k, 1), ..., h(k, m − 1) >
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
28
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
Hash-Insert (T, k)
1 i← 0
2 repeat j ← h(k, i)
3
if T [j] = null
4
then T [j] ← k
5
return j
6
else i ← i + 1
7 until i = m
8 error ”hash table overflow”
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
29
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
Hash-Search (T, k)
1 i← 0
2 repeat j ← h(k, i)
3
if T [j] = k
4
then return j
5
i← i+1
6 until T [j] = null or i = m
7 return null
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
30
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
ďŘÀÖõ ÝČûć ďŘÂì null ùÀł éÁ§ ÂÊĂä ĆþŘďć ďć ĆîßþŘ ýŚŻĆŞ ,éÁ§ ÛÞä ôŚźœŘ ýŘÂŞ
$
ćďŘć đĚňŘ üîÀœŘ ĆŞ ěŚČœ Ýû Žďć ÝţþďĄÚóŘ ßþŘÂŞŚĂŞ) ÝČûćüõ ďŘÂì Řď “deleted” ńŚą
(.ćÂî Žďć ýÀþÀŻ ÂÊĂä öŘĄŮüõ ĆþŘďć öŊ Ćî ŰďĄň ßþŘ ĆŞ
Hash-Delete (T, k)
1 i ← Hash-Search (T, k)
2 if i 6= null
3
then T [j] ← “eleted”
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
31
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
Hash-Insert (T, k)
1 if Hash-Search(T, k) 6= null
2
then error “item already exits”
3 i← 0
4 repeat j ← h(k, i)
5
if T [j] = null or T [j] = “deleted”
6
then T [j] ← k
7
return j
8
else i ← i + 1
9 until i = m
10 error “hash table overflow”
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
32
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
쌪 üûćğďćŊ ýŘÂŞ ñĄÞãõ ýŚûľøď
(linear probing) üÎą üĺďŘø •
(quadratic probing) ø 2 ĆŻďć üĺďŘø •
(double hashing) ĆœŚðøć üĺďŘø •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
33
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
üÎą üĺďŘø
0
h(k, i) = (h (k) + i) mod m
i = 0, 1, ..., m − 1 ýŘÂŞ
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
34
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
øć ĆŻďć üĺďŘø
0
2
h(k, i) = (h (k) + c1i + c2i ) mod m
0
ø ťĺŘ üØÞî ýěŚĺÝûďć ⪌٠Œþ h
ÀĂţÆû üØÞî ýŚûťŞŚŹ (c2 6= 0) c1, c2
(i = 0, 1, ..., m − 1)
:ťĺŘ Ýû Ûůõ ŚûöŊ ýŚûüĺďŘø Ćţłď ÀĂłŚŞ ĆţłŘć ĆŞŚÈõ ĆČóøŘ üĺďŘø ÀČÜî øć ÂðŘ
h(k1, 0) = h(k2, 0) =⇒ h(k1, i) = h(k2, i)
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
35
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
36
$
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ĆœŚðøć ýěŚĺÝûďć
:ćďŘć ÛØł ßþŘ ĆŞ ýěŚĺÝûďć âŞŚŮ ĆœŚðøć ýěŚĺÝûďć
h(k, i) = (h1(k) + ih2(k)) mod m
.ÀĂţÆû üØÞî ýěŚĺÝûďć âŞŘĄŮ h2, h1 Ćî
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
37
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
쌪 üûćğďćŊ ÛČÜ¡Ů
,ćÂČðüõ ďŘÂì ÂÊĂä Œþ ÂůîŘÀ§ ñøÀŻ ĆþŘďć Âû ďć 쌪 üûćğďćŊ ďć •
α=
n
m
≤ 1 ⇐= n ≤ m •
ťąŘĄĂØþ ýěŚĺÝûďć :ŋÂê •
< h(k, 0), h(k, 1), . . . , h(k, m − 1) > :üĺďŘø Ćţłď ŰďĄň ßþŘďć •
< 0, 1, . . . , m − 1 > ýŚûťÈÚþŚŻ ěŘ üØþ ñćŚãõ :k ÀČÜî ýĄŻøťÆŻ Śþ Žďć •
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
38
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÕêĄõŚœ ýĄŻøťÆŻ) 쌪 üûćğďćŊ ÛČÜ¡Ů
:ĆČÌì
ýĄŻøťÆŻ Œþ ýŘÂŞ α < 1 ŚŞ 쌪 ýěŚĺÝûďć ñøÀŻ Œþ ďć ŚûüĺďŘø ćŘÀãŮ ÂůîŘÀ§
1
1−α
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
39
ŚŞ ťĺŘ ÂŞŘÂŞ ßČÚœŚČõ ďĄÏĆŞ ÕêĄõŚœ
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
ŰŚśŹŘ
ÕêĄõŚœ ýĄŻøťÆŻ Œþ ďć ŚûüĺďŘø ćŘÀãŮ ŚŞ ÂŞŘÂŞ üêćŚÊŮ ÂČçţõ Œþ :X
.ćøÂŞ ÂŢ ýĆþŘďć ĆŞ üĺďŘø ßČõŘ i ĆîßþŘ ćŘÀąď :Ai
ù楪 ÂŢ ÇóøŘ üĺďŘø i − 1 fŚ Þţ§ Ćî ÕêĄõŚœ ýĄ§øťÆŻ Œþ :üĂãþ {X ≥ i} ćŘÀąď
ÅŢ .ťĺŘ ù楪 üúŮ (ÂŮÇČŞ Śþ ôŘ i) ÇþŚûüĺďŘø ěŘ üØþ öŊ ěŘ ÅŢ ø ťĺŘ
{X ≥ i} = zA1 ∩ A2 ∩ . . . ∩ Ai−1
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
40
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
Pr{X ≥ i} = Pr{A1 ∩ A2 ∩ . . . ∩ Ai−1}
= Pr{A1} × Pr{A2|A1} × Pr{A3|A1 ∩ A2} . . .
n−2
n−i+2
n
n−1
×
× ... ×
=
×
m m−1 m−2
m−i+2


n i−1

≤
m
= αi−1
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
41
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
E[X] =
=
=
≤
=
∞
X
i=1
∞
X
i=1
∞
X
i=1
∞
X
i=1
∞
X
i=0
$
iPr{X = i}
i(Pr{X ≥ i} − Pr{X ≥ i + 1})
Pr{X ≥ i}
αi−1
αi
1
=
1−α
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
42
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(Žďć) 쌪 üûć ğďćŊ ÛČÜ¡Ů
:ĆźČţœ
ěŚČœ üĺďŘø
1
1−α
ÂůîŘÀ§ ßČÚœŚČõ ťóŚ§ ďć 쌪 ýěŚĺÝûďć ñøÀŻ Œþďć ÂÊĂä Œþ Žďć
.ćďŘć
:ŰŚśŹŘ
.α < 1 ßþŘÂŞŚĂŞ .ÀłŚŞ ĆţłŘć 楯ø üóŚą ýŚÌê Œþ ÛìŘÀ§ ÂðŘ ćĄłüõ Žďć ÂÊĂä Œþ
ýĆþŘďć ßČóøŘ ďć öŊ öćŘć ďŘÂì ø ĄŻøťÆŻ Œþ ôŚźœŘ ôÃÜţÆõ ÂÊĂä Œþ Žďć ßÞőďć
.楪 ÀûŘĄą
&
üĺÀì ÀÞ¡õ
c
°
1
1−α
1387 öŚŞŊ 25
ÂŞŘÂŞ Ûśì ýĆČÌì ĆŞ ĆŻĄŮ ŚŞ ŚûüĺďŘø ßČÚœŚČõ ćŘÀãŮ ÅŢ .ťĺŘ üóŚą
43
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
(ÕêĄõ ýĄŻøťÆŻ) 쌪 üûć ğďćŊ ÛČÜ¡Ů
:ĆČÌì
Œ þ ýŘÂ Ş α < 1 Ś Ş ěŚ Ş ýěŚ ĺÝ ûďć ñøÀ Ż Œ þ ďć Ś ûü ĺďŘø ćŘÀ ã Ů ß Č Ú œŚ Č õ ďŘÀ Ö õ
ŚŞ ťĺŘ ÂŞŘÂŞ ÂůîŘÀ§ ÕêĄõ ýĄŻøťÆŻ
1
1
ln
α 1−α
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
44
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
:ŰŚśŹŘ
$
.ÝČĂî Žďć ÝČûŘĄ£Ş Řď k ÂðŘ Ćî ćďŘć Řď ŚûüĺďŘø ýĆóŚśœć öŚÞû k ýŘÂŞ ĄŻøťÆŻ
:ŚŞ ťĺŘ ÂŞŘÂŞ ŚûüĺďŘø ßČÚœŚČõ ,楳üõ Žďć Ćî ÀłŚŞ ýÀČÜî ßČõŘ (i + 1) k ÂðŘ
1/(1 − i/m) = m/(m − i)
ÅŢ
1 n−1
m
m n−1
1
X
X
=
n i=0 m − i
n i=0 m − i
1
= (Hm − Hm−n)
α
.ťĺŘ ôŘ i üœĄõďŚû ⪌٠Hi =
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
45
Pi
j=1 1/j
Ćî
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%
ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć
'
$
1 n−1
m
m n−1
1
X
X
=
n i=0 m − i
n i=0 m − i
m
1
1
X
(Hm − Hm−n) =
1/k
α
α k=m−n+1
1Zm
≤
(1/x)dx
α m−n
1
m
= ln
α m−n
1
1
= ln
α 1−α
&
üĺÀì ÀÞ¡õ
c
°
1387 öŚŞŊ 25
46
ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć
%