ŚûÝţþďĄÚóŘ üœŚśõ ø ŚûďŚţąŚĺùćŘć ' $ ýěŚĺÝûďć ľøď 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 ÂŮĄČşõŚî üĺÀĂúõ ýùÀØÈœŘć %
© Copyright 2024 Paperzz