42
Hashing Nishant Mehta Lectures 15 and 16

lecture15 16 hashing

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: lecture15 16 hashing

Hashing

Nishant Mehta

Lectures 15 and 16

Page 2: lecture15 16 hashing

Warm-up puzzle

We have a deck of n distinct cards (where n is large) and repeatedly sample a card uniformly at random, with replacement. On average, how many cards do we need to draw before we see some card twice (that is, before we have repeated a card)?

(a)

(b)

(c)

(d)

(e)

Θ(n2)Θ(n)

Θ ( n)Θ(log n)Θ(1)

Page 3: lecture15 16 hashing

Warm-up puzzle

We have a deck of n distinct cards (where n is large) and repeatedly sample a card uniformly at random, with replacement. On average, how many cards do we need to draw before we see some card twice (that is, before we have repeated a card)?

(a)

(b)

(c)

(d)

(e)

Θ(n2)Θ(n)

Θ ( n)Θ(log n)Θ(1)

For some amusing reading, check out the birthday paradox in Section 5.4.1 of CLRS

Page 4: lecture15 16 hashing

Dictionary

A dictionary is a data structure that contains key-value pairs

• Keys should be unique

• Values can be anything and need not be unique

Page 5: lecture15 16 hashing

Dictionary - Operations

SEARCH - Need to specify key k

INSERT - Need to specify object x (obtain key via x.key)

DELETE - Need to specify object x

• We will see later why it is better to take as input x rather than x.key

Page 6: lecture15 16 hashing

Unordered list

Suppose that we use an unordered list (let’s make it a doubly linked list)

SEARCH( )

INSERT( )

DELETE( )

S, k

S, x

S, x

Operation

head<latexit sha1_base64="+bv/2VrEDB1Owgg+IU6rqQX8BVY=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQqqyYCgy0olBdQCZWDaSkkYOZ6bGWscJ9gOdGTyCWzhb/gP9uwQW9Y4D6CTqaVIx+dx740TRxmjUnW735eWrXPnL1xcudS5fOXqteurazcOZZoLAgOSslQcR1gCoxwGiioGx5kAnEQMjqLpTqkffQAhacrfqlkGYYLHnMaUYGWoN9Phg+Gq093sVsteBG4DHNSsg+Ga5QSjlOQJcEUYltJ3u5kKNRaKEgZFJ8glZJhM8Rh8AzlOQIa6mrWw7xhmZMepMA9XdsWeTmicSDlLIuNMsJrItlaSZ2l+ruKtUFOe5Qo4qRvFObNVapcvbo+oAKLYzABMBDWz2mSCBSbKHM9cJW+w7/Wf9j1v7x7kDMRYAExDLTGvu3eCv7DTCZ6AOQMBL8zuVQYCq1ToQKqUTBi8L3SgBMV8zIBBrAxxZmBDBxnNQBr7p8LU5PCRpEmC+UgHIBJDT7DScTE05eBESaJLtijmnSyVZQVgrCWcyEry3bA2DbXjFvZ9u9nE7zbapeoEVoXfO51Zd3p353Mls5AVVE7rbp7t202xqmfY8npm3rQ5hPI30UH1XWPtLbzdblGLBDO92xaf7zSqSLTBLXVv/79qcEutpv2n98td2wGYycYSRbrf1jlWuZizvCwKc63c9iVaBIe9TffRpvv6obO91VywFXQL3UbryEWP0TZ6hg7QABE0Rp/RF/TV+mb9sH5av2rr8lKTuYnmlvX7D168dyg=</latexit>

k3<latexit sha1_base64="aDQx3cDpNjiS589MrWQsOX12kBE=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQpGkxGCLiuVFFALlIFpKyXpyPHczFjjOMF2oJXJJ7CFv+E/2LNDbFnjPIBOppYiHZ/HvTdOHGWMStXrfV9ati5cvHR55Urn6rXrN26urt06kGkuCAxJylJxFGEJjHIYKqoYHGUCcBIxOIxm26V++AGEpCl/p04zCBM84TSmBCtDvZ2N3NGq0+v2qmUvArcBDmrW/mjNcoJxSvIEuCIMS+m7vUyFGgtFCYOiE+QSMkxmeAK+gRwnIENdzVrY9wwztuNUmIcru2LPJjROpDxNIuNMsJrKtlaS52l+ruLNUFOe5Qo4qRvFObNVapcvbo+pAKLYqQGYCGpmtckUC0yUOZ65St5wzxs8G3je7gPIGYiJAJiFWmJed+8Ef2GnEzwFcwYCXprd6wwEVqnQgVQpmTJ4X+hACYr5hAGDWBni3MCGDjKagTT2T4WpyeEjSZME87EOQCSGnmKl42JkysGJkkSXbFHMO1kqywrAWEs4kZXku2FtGmnHLeyHdrOJjzfapeoEVoXfP5tZd/r353Mls5AVVM7qbp7t202xqmfY8npm3rQ5hPI30UH1XWPtLbzdTlGLBDO90xZfbDeqSLTBLXV3779qcEutpv2nD8pd2wGYycYSRXrQ1jlWuZizvCoKc63c9iVaBAf9rvu467555GxtNhdsBd1Bd9E6ctETtIWeo300RARN0Gf0BX21vlk/rJ/Wr9q6vNRkbqO5Zf3+A1cQdyY=</latexit>

k1<latexit sha1_base64="dKmaXMDiviDazSf9qUjcNYU058w=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQqqyQiVLiuVFFALlIFpKyVh5HhuZqxxnGA70JHJJ7CFv+E/2LNDbFnjPIBOppYiHZ/HvTdOHGWMStXtfl9ati5cvHR55Urn6rXrN26urt06kmkuCAxIylJxEmEJjHIYKKoYnGQCcBIxOI6mu6V+/AGEpCl/q2YZhAkecxpTgpWh3kyHW8NVp7vZrZa9CNwGOKhZh8M1ywlGKckT4IowLKXvdjMVaiwUJQyKTpBLyDCZ4jH4BnKcgAx1NWth3zPMyI5TYR6u7Io9m9A4kXKWRMaZYDWRba0kz9P8XMXboaY8yxVwUjeKc2ar1C5f3B5RAUSxmQGYCGpmtckEC0yUOZ65St7gwOs/7Xve/gPIGYixAJiGWmJed+8Ef2GnEzwBcwYCXpjdqwwEVqnQgVQpmTB4X+hACYr5mAGDWBni3MCGDjKagTT2T4WpyeEjSZME85EOQCSGnmCl42JoysGpkkSXbFHMO1kqywrAWEs4lZXku2FtGmrHLeyHdrOJ3220S9UJrAq/dzaz7vTuz+dKZiErqJzW3Tzbt5tiVc+w5fXMvGlzCOVvooPqu8baW3i7vaIWCWZ6ry0+321UkWiDW+r+wX/V4JZaTftP75e7tgMwk40linS/rXOscjFneVkU5lq57Uu0CI56m+7Wpvv6kbOz3VywFXQH3UXryEWP0Q56hg7RABE0Rp/RF/TV+mb9sH5av2rr8lKTuY3mlvX7D2o+dys=</latexit>

k6<latexit sha1_base64="QfGOga0xAyr+3iTsmpaIP/B7m2c=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQqqyaiCLiuVFFALlIFpKyVh5HhuZqxxnGA70JHJJ7CFv+E/2LNDbFnjPIBOppYiHZ/HvTdOHGWMStXtfl9ati5cvHR55Urn6rXrN26urt06kmkuCAxIylJxEmEJjHIYKKoYnGQCcBIxOI6mu6V+/AGEpCl/q2YZhAkecxpTgpWh3kyHW8NVp7vZrZa9CNwGOKhZh8M1ywlGKckT4IowLKXvdjMVaiwUJQyKTpBLyDCZ4jH4BnKcgAx1NWth3zPMyI5TYR6u7Io9m9A4kXKWRMaZYDWRba0kz9P8XMXboaY8yxVwUjeKc2ar1C5f3B5RAUSxmQGYCGpmtckEC0yUOZ65St7gwOs/7Xve/gPIGYixAJiGWmJed+8Ef2GnEzwBcwYCXpjdqwwEVqnQgVQpmTB4X+hACYr5mAGDWBni3MCGDjKagTT2T4WpyeEjSZME85EOQCSGnmCl42JoysGpkkSXbFHMO1kqywrAWEs4lZXku2FtGmrHLeyHdrOJ3220S9UJrAq/dzaz7vTuz+dKZiErqJzW3Tzbt5tiVc+w5fXMvGlzCOVvooPqu8baW3i7vaIWCWZ6ry0+321UkWiDW+r+wX/V4JZaTftP75e7tgMwk40linS/rXOscjFneVkU5lq57Uu0CI56m+6jTff1lrOz3VywFXQH3UXryEWP0Q56hg7RABE0Rp/RF/TV+mb9sH5av2rr8lKTuY3mlvX7D2KSdyk=</latexit>

k4

Worst-case running time? (for n elements)

Page 7: lecture15 16 hashing

Unordered list

Suppose that we use an unordered list (let’s make it a doubly linked list)

SEARCH( )

INSERT( )

DELETE( )

S, k

S, x

S, x

Operation

head<latexit sha1_base64="+bv/2VrEDB1Owgg+IU6rqQX8BVY=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQqqyYCgy0olBdQCZWDaSkkYOZ6bGWscJ9gOdGTyCWzhb/gP9uwQW9Y4D6CTqaVIx+dx740TRxmjUnW735eWrXPnL1xcudS5fOXqteurazcOZZoLAgOSslQcR1gCoxwGiioGx5kAnEQMjqLpTqkffQAhacrfqlkGYYLHnMaUYGWoN9Phg+Gq093sVsteBG4DHNSsg+Ga5QSjlOQJcEUYltJ3u5kKNRaKEgZFJ8glZJhM8Rh8AzlOQIa6mrWw7xhmZMepMA9XdsWeTmicSDlLIuNMsJrItlaSZ2l+ruKtUFOe5Qo4qRvFObNVapcvbo+oAKLYzABMBDWz2mSCBSbKHM9cJW+w7/Wf9j1v7x7kDMRYAExDLTGvu3eCv7DTCZ6AOQMBL8zuVQYCq1ToQKqUTBi8L3SgBMV8zIBBrAxxZmBDBxnNQBr7p8LU5PCRpEmC+UgHIBJDT7DScTE05eBESaJLtijmnSyVZQVgrCWcyEry3bA2DbXjFvZ9u9nE7zbapeoEVoXfO51Zd3p353Mls5AVVE7rbp7t202xqmfY8npm3rQ5hPI30UH1XWPtLbzdblGLBDO92xaf7zSqSLTBLXVv/79qcEutpv2n98td2wGYycYSRbrf1jlWuZizvCwKc63c9iVaBIe9TffRpvv6obO91VywFXQL3UbryEWP0TZ6hg7QABE0Rp/RF/TV+mb9sH5av2rr8lKTuYnmlvX7D168dyg=</latexit>

k3<latexit sha1_base64="aDQx3cDpNjiS589MrWQsOX12kBE=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQpGkxGCLiuVFFALlIFpKyXpyPHczFjjOMF2oJXJJ7CFv+E/2LNDbFnjPIBOppYiHZ/HvTdOHGWMStXrfV9ati5cvHR55Urn6rXrN26urt06kGkuCAxJylJxFGEJjHIYKqoYHGUCcBIxOIxm26V++AGEpCl/p04zCBM84TSmBCtDvZ2N3NGq0+v2qmUvArcBDmrW/mjNcoJxSvIEuCIMS+m7vUyFGgtFCYOiE+QSMkxmeAK+gRwnIENdzVrY9wwztuNUmIcru2LPJjROpDxNIuNMsJrKtlaS52l+ruLNUFOe5Qo4qRvFObNVapcvbo+pAKLYqQGYCGpmtckUC0yUOZ65St5wzxs8G3je7gPIGYiJAJiFWmJed+8Ef2GnEzwFcwYCXprd6wwEVqnQgVQpmTJ4X+hACYr5hAGDWBni3MCGDjKagTT2T4WpyeEjSZME87EOQCSGnmKl42JkysGJkkSXbFHMO1kqywrAWEs4kZXku2FtGmnHLeyHdrOJjzfapeoEVoXfP5tZd/r353Mls5AVVM7qbp7t202xqmfY8npm3rQ5hPI30UH1XWPtLbzdTlGLBDO90xZfbDeqSLTBLXV3779qcEutpv2nD8pd2wGYycYSRXrQ1jlWuZizvCoKc63c9iVaBAf9rvu467555GxtNhdsBd1Bd9E6ctETtIWeo300RARN0Gf0BX21vlk/rJ/Wr9q6vNRkbqO5Zf3+A1cQdyY=</latexit>

k1<latexit sha1_base64="dKmaXMDiviDazSf9qUjcNYU058w=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQqqyQiVLiuVFFALlIFpKyVh5HhuZqxxnGA70JHJJ7CFv+E/2LNDbFnjPIBOppYiHZ/HvTdOHGWMStXtfl9ati5cvHR55Urn6rXrN26urt06kmkuCAxIylJxEmEJjHIYKKoYnGQCcBIxOI6mu6V+/AGEpCl/q2YZhAkecxpTgpWh3kyHW8NVp7vZrZa9CNwGOKhZh8M1ywlGKckT4IowLKXvdjMVaiwUJQyKTpBLyDCZ4jH4BnKcgAx1NWth3zPMyI5TYR6u7Io9m9A4kXKWRMaZYDWRba0kz9P8XMXboaY8yxVwUjeKc2ar1C5f3B5RAUSxmQGYCGpmtckEC0yUOZ65St7gwOs/7Xve/gPIGYixAJiGWmJed+8Ef2GnEzwBcwYCXpjdqwwEVqnQgVQpmTB4X+hACYr5mAGDWBni3MCGDjKagTT2T4WpyeEjSZME85EOQCSGnmCl42JoysGpkkSXbFHMO1kqywrAWEs4lZXku2FtGmrHLeyHdrOJ3220S9UJrAq/dzaz7vTuz+dKZiErqJzW3Tzbt5tiVc+w5fXMvGlzCOVvooPqu8baW3i7vaIWCWZ6ry0+321UkWiDW+r+wX/V4JZaTftP75e7tgMwk40linS/rXOscjFneVkU5lq57Uu0CI56m+7Wpvv6kbOz3VywFXQH3UXryEWP0Q56hg7RABE0Rp/RF/TV+mb9sH5av2rr8lKTuY3mlvX7D2o+dys=</latexit>

k6<latexit sha1_base64="QfGOga0xAyr+3iTsmpaIP/B7m2c=">AAAEPHicbVPLbtQwFHUbHmV4tbBkExEhlQqqyaiCLiuVFFALlIFpKyVh5HhuZqxxnGA70JHJJ7CFv+E/2LNDbFnjPIBOppYiHZ/HvTdOHGWMStXtfl9ati5cvHR55Urn6rXrN26urt06kmkuCAxIylJxEmEJjHIYKKoYnGQCcBIxOI6mu6V+/AGEpCl/q2YZhAkecxpTgpWh3kyHW8NVp7vZrZa9CNwGOKhZh8M1ywlGKckT4IowLKXvdjMVaiwUJQyKTpBLyDCZ4jH4BnKcgAx1NWth3zPMyI5TYR6u7Io9m9A4kXKWRMaZYDWRba0kz9P8XMXboaY8yxVwUjeKc2ar1C5f3B5RAUSxmQGYCGpmtckEC0yUOZ65St7gwOs/7Xve/gPIGYixAJiGWmJed+8Ef2GnEzwBcwYCXpjdqwwEVqnQgVQpmTB4X+hACYr5mAGDWBni3MCGDjKagTT2T4WpyeEjSZME85EOQCSGnmCl42JoysGpkkSXbFHMO1kqywrAWEs4lZXku2FtGmrHLeyHdrOJ3220S9UJrAq/dzaz7vTuz+dKZiErqJzW3Tzbt5tiVc+w5fXMvGlzCOVvooPqu8baW3i7vaIWCWZ6ry0+321UkWiDW+r+wX/V4JZaTftP75e7tgMwk40linS/rXOscjFneVkU5lq57Uu0CI56m+6jTff1lrOz3VywFXQH3UXryEWP0Q56hg7RABE0Rp/RF/TV+mb9sH5av2rr8lKTuY3mlvX7D2KSdyk=</latexit>

k4

Worst-case running time? (for n elements)

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="v+tlRz4Rf3bxGkqSMky8pl3gwyA=">AAAEPXicdVPdbtMwFPYWfkb52+CSG4sKaZugSsYK692kkQHaYKOi26QmVI570kZ1nGA7sMnkFbiFt+E5eADuELfc4qQZrNmwFOnz93POiRMHKYuksu3vc/PWpctXri5ca1y/cfPW7cWlOwcyyQSFHk1YIo4CIoFFHHoqUgyOUgEkDhgcBpOtQj/8AEJGCX+rTlLwYzLiURhRogpqb5mvDBabdstud9qOje1W23Y6jwvQ6Wyst9vYadnlaqJq7Q+WrKY3TGgWA1eUESn7jp0qXxOhIsogb3iZhJTQCRlB30BOYpC+LofN8QPDDHGYCPNwhUv2bEKTWMqTODDOmKixrGsFeZHWz1S44euIp5kCTqeNwoxhleDizfEwEkAVOzGAUBGZWTEdE0GoMuczU8nt7brd513X3XkIGQMxEgATX0vCp90b3ilsNLxnYM5AwCuz20tBEJUI7UmV0DGD97n2lIgIHzFgECpDXBhY1V4apSCN/VNuanL4SJM4JnyoPRCxocdE6TAfmHJwrCTVBZvns06WyKICMFYTjmUp9R1/ahroppPjR7jahO9W66WmCaLy/trZzHJzbWU2VzDnsiKSk2k3F/dxVazs6de8rpk3qQ6h+E20V37XULvn3m47n4qUML1dF19uVaqItcE1dWf3n2pwTS2n/at3i13dAYTJyhIEulvXOVGZmLG8znNzrU7vDv4/OFhrOU9a62/Wm5ub1QVbQPfQfbSMHPQUbaIXaB/1EEVj9Bl9QV+tb9YP66f1a2qdn6syd9HMsn7/AfBYd5w=</latexit>

O(n)

Page 8: lecture15 16 hashing

Ordered list

If we use an ordered list (in the form of an array), then searching is fast; other operations are slow

SEARCH( ) - binary search enables O(log n)

INSERT( ) - O(n)

DELETE( ) - O(n)

S, k

S, x

S, x

k0

k1

k3

k4

k7

k6

0 1 2 3 4 5 6 7

k2

k5

<latexit sha1_base64="lYwq47fctIgUMftjMQ+cX5w/RWY=">AAAEWXicdVNdb9MwFPW2AqN8dewRCVlUSGOCKikrWyUeJo0M0AaMim6TmhA57k0b1fnAdmCTyRu/hlf4M4g/g/MxWLNhKdG555x7r30TewkLhDSMXwuLS40rV68tX2/euHnr9p3Wyt1DEaecwpDGLObHHhHAggiGMpAMjhMOJPQYHHmznVw/+gxcBHH0QZ4m4IRkEgV+QInUlNu6P3MN/BzPXLN4d/XbZuNYiiLcdFtto2P0+j3TwEanZ5j9pzno97c2ej1sdoxitVG1DtyVpbY9jmkaQiQpI0KMTCORjiJcBpRB1rRTAQmhMzKBkYYRCUE4qjhIhh9qZoz9mOsnkrhgz2coEgpxGnraGRI5FXUtJy/TRqn0txwVREkqIaJlIz9lWMY4nwoeBxyoZKcaEMoDvVdMp4QTKvXs5ipZw31r8HJgWXuPIWXAJxxg5ihBorJ70z6Dzab9AvQMOLzR0bsEOJExV7aQMZ0y+JQpW/KARBMGDHypiUsT1pWdBAkIbf+a6ZoRfKFxGJJorGzgoaanRCo/c3U5OJGCqpzNsnkni0VeARirCSeikEamU5pc1TYz/ARXgf9xvV6qzCAyG3XP56y1u4/m83LmQi4PxKzsZuERrooVPZ2a19L7jash5L+Jsovv6ivrwul2s1KkhKnduvh6p1J5qDSuqXv7/1SNa2qx27/6II/qDiBMVBbPU4O6HhGZ8jnL2yzT1+rs7uD/g8Nux3zW2Xi/0d7eri7YMrqHHqA1ZKJNtI1eoQM0RBR9Q9/RD/Rz6XdjobHcaJbWxYUqZxXNrcbqH+AjfCs=</latexit>

k0 < k1 < k2 < . . . < k7

Page 9: lecture15 16 hashing

Balanced binary search tree

Another strategy is to use a balanced binary search tree (e.g., red-black tree, AVL tree)

SEARCH( ) - O(log n)

INSERT( ) - O(log n)

DELETE( ) - O(log n)

S, k

S, x

S, x

13.1 Properties of red-black trees 275

NIL NIL

NIL NIL NIL NILNIL

NIL NIL

NIL NIL

NIL NIL NIL NIL

NIL NIL NIL NIL

NIL NIL

26

41

4730

28 38

35 39

17

21

2319

20

14

16

15

10

127

31

1 1

2

1

1

2

1

1 1

2

3

1 1

11

2 1

2

3

(a)

26

41

4730

28 38

35 39

17

21

2319

20

14

16

15

10

127

3

(b)

26

41

4730

28 38

35 39

17

21

2319

20

14

16

15

10

127

3(c)

nil[T]

Figure 13.1 A red-black tree with black nodes darkened and red nodes shaded. Every node in ared-black tree is either red or black, the children of a red node are both black, and every simple pathfrom a node to a descendant leaf contains the same number of black nodes. (a) Every leaf, shownas a NIL, is black. Each non-NIL node is marked with its black-height; NIL’s have black-height 0.(b) The same red-black tree but with each NIL replaced by the single sentinel nil[T ], which is alwaysblack, and with black-heights omitted. The root’s parent is also the sentinel. (c) The same red-blacktree but with leaves and the root’s parent omitted entirely. We shall use this drawing style in theremainder of this chapter.

Page 10: lecture15 16 hashing

Direct-address table

Suppose the keys are in a universe

In a direct-address table, we create an array T of size m (initialize all entries to NULL)

Element with key k is stored in

SEARCH( ): return

INSERT( ):

DELETE( ): NULL

Space complexity?

S, k

S, x

S, x

Worst-case running time?

<latexit sha1_base64="blx1molF2hRbTfyD6B6oxDoTaSg=">AAAEVnicbVNbb9MwFPbWjo1y6+BxLxYV0pi6qZkQ8II0aWSANmBUdJvUhMpxT9qojh1sBzaZPPBreIV/A38G4VyANZ2lSJ+/yznOSRwkLFK61/u1tNxorlxbXbveunHz1u077fW7J0qkksKACibkWUAUsIjDQEeawVkigcQBg9Ngtp/rp59Aqkjw9/oiAT8mEx6FESXaUqP2xgA/w57BvS52uthjY6FVF8fbDvayUbvT2+kVCy8CpwIdVK3j0Xqj440FTWPgmjKi1NDpJdo3ROqIMshaXqogIXRGJjC0kJMYlG+Kt8jwA8uMcSikfbjGBXs5YUis1EUcWGdM9FTVtZy8ShumOnzqm4gnqQZOy0ZhyrAWOB8JHkcSqGYXFhAqI3tWTKdEEqrt4OYquYMjt/+i77qHXUgZyIkEmPlGEV52b3l/YavlPQc7Awmv7e5tApJoIY2ntKBTBh8z42kZET5hwCDUlrgysGW8JEpAWfuXzNbk8JmKOCZ8bDyQsaWnRJswG9lycK4VNTmbZfNOJlReARirCeeqkIaOX5pGpuNkeBtXm/DDVr1UmSA6G+5ezmx2dh/O53JmISsjNSu7uXiIq2JFT7/mde15RTWE/DcxXvFdQ+MuvN1BVoqUMHNQF1/tV6qMjcU19fDov2pxTS1O+0/v57u6AwhTlSUITL+uc6JTOWd5k+XXyqlfokVwsrvjPN5x3j3q7O1VF2wNbaD7aBM56AnaQy/RMRogir6ib+g7+tH42fjdXGmultblpSpzD82tZvsPOFp7qw==</latexit>

U = {0, 1, . . . ,m � 1}

<latexit sha1_base64="EmxZqOlKaZP2/pKWD3sXwqBrao8=">AAAEPXicbVPbbtMwGPYWDqOcNrjkJiJCGhNMTYWAy0ojA7QBo1q3SUmoHPdPa9Vxgu3AKpNX4BbehufgAbhD3HKLcwDWdJYiff4O///HiaOMUam63e8rq9aFi5cur13pXL12/cbN9Y1bRzLNBYEhSVkqTiIsgVEOQ0UVg5NMAE4iBsfRbKfUjz+AkDTlh2qeQZjgCacxJViV1KE/C0frTne7Wy17GbgNcFCzDkYblhOMU5InwBVhWErf7WYq1FgoShgUnSCXkGEywxPwDeQ4ARnqatjCvmeYsR2nwjxc2RV7NqFxIuU8iYwzwWoq21pJnqf5uYqfhpryLFfASd0ozpmtUrt8c3tMBRDF5gZgIqiZ1SZTLDBR5nwWKnnDfW/wfOB5ew8gZyAmAmAWaol53b0T/IWdTvAMzBkIeGV2bzIQWKVCB1KlZMrgfaEDJSjmEwYMYmWIcwNbOshoBtLYPxWmJoePJE0SzMc6AJEYeoqVjouRKQenShJdskWx6GSpLCsAYy3hVFaS74a1aaQdt7Af2s0mfrfVLlUnsCr83tnMptO7v5grmaWsoHJWd/Ns326KVT3Dltcz86bNIZS/iQ6q7xprb+ntdotaJJjp3bb4cqdRRaINbql7+/9Vg1tqNe0/fVDu2g7ATDaWKNKDts6xysWC5XVRmGvlti/RMjjqbbuPt923j5x+v7lga+gOuos2kYueoD56gQ7QEBE0RZ/RF/TV+mb9sH5av2rr6kqTuY0WlvX7D11gd7Q=</latexit>

T [k]

<latexit sha1_base64="EmxZqOlKaZP2/pKWD3sXwqBrao8=">AAAEPXicbVPbbtMwGPYWDqOcNrjkJiJCGhNMTYWAy0ojA7QBo1q3SUmoHPdPa9Vxgu3AKpNX4BbehufgAbhD3HKLcwDWdJYiff4O///HiaOMUam63e8rq9aFi5cur13pXL12/cbN9Y1bRzLNBYEhSVkqTiIsgVEOQ0UVg5NMAE4iBsfRbKfUjz+AkDTlh2qeQZjgCacxJViV1KE/C0frTne7Wy17GbgNcFCzDkYblhOMU5InwBVhWErf7WYq1FgoShgUnSCXkGEywxPwDeQ4ARnqatjCvmeYsR2nwjxc2RV7NqFxIuU8iYwzwWoq21pJnqf5uYqfhpryLFfASd0ozpmtUrt8c3tMBRDF5gZgIqiZ1SZTLDBR5nwWKnnDfW/wfOB5ew8gZyAmAmAWaol53b0T/IWdTvAMzBkIeGV2bzIQWKVCB1KlZMrgfaEDJSjmEwYMYmWIcwNbOshoBtLYPxWmJoePJE0SzMc6AJEYeoqVjouRKQenShJdskWx6GSpLCsAYy3hVFaS74a1aaQdt7Af2s0mfrfVLlUnsCr83tnMptO7v5grmaWsoHJWd/Ns326KVT3Dltcz86bNIZS/iQ6q7xprb+ntdotaJJjp3bb4cqdRRaINbql7+/9Vg1tqNe0/fVDu2g7ATDaWKNKDts6xysWC5XVRmGvlti/RMjjqbbuPt923j5x+v7lga+gOuos2kYueoD56gQ7QEBE0RZ/RF/TV+mb9sH5av2rr6kqTuY0WlvX7D11gd7Q=</latexit>

T [k]

<latexit sha1_base64="DUuyMKWwISTfOZdCW5F1fRa2q2M=">AAAEUHicbVNbb9MwGPXWAaPcNhBPvFhUSGOCqpkQ8II0aWSANmBU6zYpCZXjfmmtOk6wHWhl8mN4hX/DG/+EN3AuwJpiycrxOee75JMdppwp3ev9WFltrV24eGn9cvvK1WvXb2xs3jxRSSYpDGjCE3kWEgWcCRhopjmcpRJIHHI4Dad7hX76EaRiiTjW8xSCmIwFixgl2lLDjdvH3qzrx0RPZGymMM8D/AzPhhudXrdXLrwMnBp0UL2Ohputjj9KaBaD0JQTpTynl+rAEKkZ5ZC3/UxBSuiUjMGzUJAYVGDK/nN8zzIjHCXSbqFxyZ6PMCRWah6H1ll0qppaQf5P8zIdPQ0ME2mmQdCqUJRxrBNcDAOPmASq+dwCQiWzvWI6IZJQbUe2kMkdHLr9F33XPXgAGQc5lgDTwCgiqupt/w9st/3nYGcg4bU9vU1BEp1I4yud0AmHD7nxtWREjDlwiLQl/huwbfyUpaCs/XNucwr4RJM4JmJkfJCxpSdEmygf2nQw04qags3zRSdPVJEBOG8IM1VKnhNUpqHpODl+iOtD9H67maqKIDr3ds7HbHV27i/GFcxSrGRqWlVzsYfrZGXNoOF1bb9JPYTimpjydqrIuEt/t59XIiXc7DfFV3u1ai+2xQ314PCfanFDLbv9q/eLU9MBhKvaEoam39QF0ZlcsLzJc/usnOYjWgYnO13ncdd596izu1s/sHV0B91FW8hBT9AueomO0ABRZNAX9BV9a31v/Wz9WluprKv1F91CC2ut/Rs1p3zn</latexit>

T [x .key] = x

<latexit sha1_base64="/lv+jZ/czp8wt9MQa2b7CVUucnI=">AAAETnicbVNdb9MwFPXWAaN8beyRF4sKaUxQNRMCXpAmjQzQBoxq3SYloXLcm9aq4wTbgVUmv4VX+De88kd4Q+B8AGs6S5HOPefcj1zZYcqZ0r3ej6Xl1sqly1dWr7avXb9x89ba+u1jlWSSwoAmPJGnIVHAmYCBZprDaSqBxCGHk3C6W+gnH0EqlogjPUshiMlYsIhRoi01XNs48s66fkz0RMZmCrM8wM+Ga51et1cevAicGnRQfQ6H662OP0poFoPQlBOlPKeX6sAQqRnlkLf9TEFK6JSMwbNQkBhUYMrpc3zPMiMcJdJ+QuOSPZ9hSKzULA6ts5hTNbWCvEjzMh09DQwTaaZB0KpRlHGsE1ysAo+YBKr5zAJCJbOzYjohklBtFzZXyR0cuP0XfdfdfwAZBzmWANPAKCKq7m3/L2y3/edgdyDhtY3epiCJTqTxlU7ohMOH3PhaMiLGHDhE2hIXJmwZP2UpKGv/nNuaAj7RJI6JGBkfZGzpCdEmyoe2HJxpRU3B5vm8kyeqqACcN4QzVUqeE1Smoek4OX6I6yB6v9UsVWUQnXvb53M2O9v35/MKZiFXMjWturnYw3WxsmfQ8Lp23qReQnFNTHk3VWTchb/byyuREm72muKr3Vq119rihrp/8F+1uKGW0/7T+0XUdADhqraEoek3dUF0Jucsb/LcPiun+YgWwfF213ncdd496uzs1A9sFd1Bd9EmctATtINeokM0QBTN0Bf0FX1rfW/9bP1q/a6sy0t1zgaaOyurfwCxyn06</latexit>

T [x .key] =

Page 11: lecture15 16 hashing

Direct-address table

Suppose the keys are in a universe

In a direct-address table, we create an array T of size m (initialize all entries to NULL)

Element with key k is stored in

SEARCH( ): return

INSERT( ):

DELETE( ): NULL

Space complexity?

S, k

S, x

S, x

Worst-case running time?

<latexit sha1_base64="blx1molF2hRbTfyD6B6oxDoTaSg=">AAAEVnicbVNbb9MwFPbWjo1y6+BxLxYV0pi6qZkQ8II0aWSANmBUdJvUhMpxT9qojh1sBzaZPPBreIV/A38G4VyANZ2lSJ+/yznOSRwkLFK61/u1tNxorlxbXbveunHz1u077fW7J0qkksKACibkWUAUsIjDQEeawVkigcQBg9Ngtp/rp59Aqkjw9/oiAT8mEx6FESXaUqP2xgA/w57BvS52uthjY6FVF8fbDvayUbvT2+kVCy8CpwIdVK3j0Xqj440FTWPgmjKi1NDpJdo3ROqIMshaXqogIXRGJjC0kJMYlG+Kt8jwA8uMcSikfbjGBXs5YUis1EUcWGdM9FTVtZy8ShumOnzqm4gnqQZOy0ZhyrAWOB8JHkcSqGYXFhAqI3tWTKdEEqrt4OYquYMjt/+i77qHXUgZyIkEmPlGEV52b3l/YavlPQc7Awmv7e5tApJoIY2ntKBTBh8z42kZET5hwCDUlrgysGW8JEpAWfuXzNbk8JmKOCZ8bDyQsaWnRJswG9lycK4VNTmbZfNOJlReARirCeeqkIaOX5pGpuNkeBtXm/DDVr1UmSA6G+5ezmx2dh/O53JmISsjNSu7uXiIq2JFT7/mde15RTWE/DcxXvFdQ+MuvN1BVoqUMHNQF1/tV6qMjcU19fDov2pxTS1O+0/v57u6AwhTlSUITL+uc6JTOWd5k+XXyqlfokVwsrvjPN5x3j3q7O1VF2wNbaD7aBM56AnaQy/RMRogir6ib+g7+tH42fjdXGmultblpSpzD82tZvsPOFp7qw==</latexit>

U = {0, 1, . . . ,m � 1}

<latexit sha1_base64="EmxZqOlKaZP2/pKWD3sXwqBrao8=">AAAEPXicbVPbbtMwGPYWDqOcNrjkJiJCGhNMTYWAy0ojA7QBo1q3SUmoHPdPa9Vxgu3AKpNX4BbehufgAbhD3HKLcwDWdJYiff4O///HiaOMUam63e8rq9aFi5cur13pXL12/cbN9Y1bRzLNBYEhSVkqTiIsgVEOQ0UVg5NMAE4iBsfRbKfUjz+AkDTlh2qeQZjgCacxJViV1KE/C0frTne7Wy17GbgNcFCzDkYblhOMU5InwBVhWErf7WYq1FgoShgUnSCXkGEywxPwDeQ4ARnqatjCvmeYsR2nwjxc2RV7NqFxIuU8iYwzwWoq21pJnqf5uYqfhpryLFfASd0ozpmtUrt8c3tMBRDF5gZgIqiZ1SZTLDBR5nwWKnnDfW/wfOB5ew8gZyAmAmAWaol53b0T/IWdTvAMzBkIeGV2bzIQWKVCB1KlZMrgfaEDJSjmEwYMYmWIcwNbOshoBtLYPxWmJoePJE0SzMc6AJEYeoqVjouRKQenShJdskWx6GSpLCsAYy3hVFaS74a1aaQdt7Af2s0mfrfVLlUnsCr83tnMptO7v5grmaWsoHJWd/Ns326KVT3Dltcz86bNIZS/iQ6q7xprb+ntdotaJJjp3bb4cqdRRaINbql7+/9Vg1tqNe0/fVDu2g7ATDaWKNKDts6xysWC5XVRmGvlti/RMjjqbbuPt923j5x+v7lga+gOuos2kYueoD56gQ7QEBE0RZ/RF/TV+mb9sH5av2rr6kqTuY0WlvX7D11gd7Q=</latexit>

T [k]

<latexit sha1_base64="EmxZqOlKaZP2/pKWD3sXwqBrao8=">AAAEPXicbVPbbtMwGPYWDqOcNrjkJiJCGhNMTYWAy0ojA7QBo1q3SUmoHPdPa9Vxgu3AKpNX4BbehufgAbhD3HKLcwDWdJYiff4O///HiaOMUam63e8rq9aFi5cur13pXL12/cbN9Y1bRzLNBYEhSVkqTiIsgVEOQ0UVg5NMAE4iBsfRbKfUjz+AkDTlh2qeQZjgCacxJViV1KE/C0frTne7Wy17GbgNcFCzDkYblhOMU5InwBVhWErf7WYq1FgoShgUnSCXkGEywxPwDeQ4ARnqatjCvmeYsR2nwjxc2RV7NqFxIuU8iYwzwWoq21pJnqf5uYqfhpryLFfASd0ozpmtUrt8c3tMBRDF5gZgIqiZ1SZTLDBR5nwWKnnDfW/wfOB5ew8gZyAmAmAWaol53b0T/IWdTvAMzBkIeGV2bzIQWKVCB1KlZMrgfaEDJSjmEwYMYmWIcwNbOshoBtLYPxWmJoePJE0SzMc6AJEYeoqVjouRKQenShJdskWx6GSpLCsAYy3hVFaS74a1aaQdt7Af2s0mfrfVLlUnsCr83tnMptO7v5grmaWsoHJWd/Ns326KVT3Dltcz86bNIZS/iQ6q7xprb+ntdotaJJjp3bb4cqdRRaINbql7+/9Vg1tqNe0/fVDu2g7ATDaWKNKDts6xysWC5XVRmGvlti/RMjjqbbuPt923j5x+v7lga+gOuos2kYueoD56gQ7QEBE0RZ/RF/TV+mb9sH5av2rr6kqTuY0WlvX7D11gd7Q=</latexit>

T [k]

<latexit sha1_base64="DUuyMKWwISTfOZdCW5F1fRa2q2M=">AAAEUHicbVNbb9MwGPXWAaPcNhBPvFhUSGOCqpkQ8II0aWSANmBU6zYpCZXjfmmtOk6wHWhl8mN4hX/DG/+EN3AuwJpiycrxOee75JMdppwp3ev9WFltrV24eGn9cvvK1WvXb2xs3jxRSSYpDGjCE3kWEgWcCRhopjmcpRJIHHI4Dad7hX76EaRiiTjW8xSCmIwFixgl2lLDjdvH3qzrx0RPZGymMM8D/AzPhhudXrdXLrwMnBp0UL2Ohputjj9KaBaD0JQTpTynl+rAEKkZ5ZC3/UxBSuiUjMGzUJAYVGDK/nN8zzIjHCXSbqFxyZ6PMCRWah6H1ll0qppaQf5P8zIdPQ0ME2mmQdCqUJRxrBNcDAOPmASq+dwCQiWzvWI6IZJQbUe2kMkdHLr9F33XPXgAGQc5lgDTwCgiqupt/w9st/3nYGcg4bU9vU1BEp1I4yud0AmHD7nxtWREjDlwiLQl/huwbfyUpaCs/XNucwr4RJM4JmJkfJCxpSdEmygf2nQw04qags3zRSdPVJEBOG8IM1VKnhNUpqHpODl+iOtD9H67maqKIDr3ds7HbHV27i/GFcxSrGRqWlVzsYfrZGXNoOF1bb9JPYTimpjydqrIuEt/t59XIiXc7DfFV3u1ai+2xQ314PCfanFDLbv9q/eLU9MBhKvaEoam39QF0ZlcsLzJc/usnOYjWgYnO13ncdd596izu1s/sHV0B91FW8hBT9AueomO0ABRZNAX9BV9a31v/Wz9WluprKv1F91CC2ut/Rs1p3zn</latexit>

T [x .key] = x

<latexit sha1_base64="/lv+jZ/czp8wt9MQa2b7CVUucnI=">AAAETnicbVNdb9MwFPXWAaN8beyRF4sKaUxQNRMCXpAmjQzQBoxq3SYloXLcm9aq4wTbgVUmv4VX+De88kd4Q+B8AGs6S5HOPefcj1zZYcqZ0r3ej6Xl1sqly1dWr7avXb9x89ba+u1jlWSSwoAmPJGnIVHAmYCBZprDaSqBxCGHk3C6W+gnH0EqlogjPUshiMlYsIhRoi01XNs48s66fkz0RMZmCrM8wM+Ga51et1cevAicGnRQfQ6H662OP0poFoPQlBOlPKeX6sAQqRnlkLf9TEFK6JSMwbNQkBhUYMrpc3zPMiMcJdJ+QuOSPZ9hSKzULA6ts5hTNbWCvEjzMh09DQwTaaZB0KpRlHGsE1ysAo+YBKr5zAJCJbOzYjohklBtFzZXyR0cuP0XfdfdfwAZBzmWANPAKCKq7m3/L2y3/edgdyDhtY3epiCJTqTxlU7ohMOH3PhaMiLGHDhE2hIXJmwZP2UpKGv/nNuaAj7RJI6JGBkfZGzpCdEmyoe2HJxpRU3B5vm8kyeqqACcN4QzVUqeE1Smoek4OX6I6yB6v9UsVWUQnXvb53M2O9v35/MKZiFXMjWturnYw3WxsmfQ8Lp23qReQnFNTHk3VWTchb/byyuREm72muKr3Vq119rihrp/8F+1uKGW0/7T+0XUdADhqraEoek3dUF0Jucsb/LcPiun+YgWwfF213ncdd496uzs1A9sFd1Bd9EmctATtINeokM0QBTN0Bf0FX1rfW/9bP1q/a6sy0t1zgaaOyurfwCxyn06</latexit>

T [x .key] =

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="F7Y7UzdV0Jldhl42cCgJN6Us54M=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1vxquDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AOyBd5s=</latexit>

O(m)

Page 12: lecture15 16 hashing

Direct-address table - Example 1

Universe

n = 4, with the 4 keys being: 2, 5, 8, 9

<latexit sha1_base64="fP5q0jgl+1dh5KupmXVf422IU8E=">AAAETnicbVNbb9MwGPXWAaXcNvbIi0WFNKYyNRPi8lZpZIA2YFR0m9SEynG/tFYdJ9gOrDL5LbzCv+GVP8IbAucCrOksRTo+53yXfMkXJJwp3e3+WFltrF26fKV5tXXt+o2bt9Y3bh+rOJUUBjTmsTwNiALOBAw00xxOEwkkCjicBLO9XD/5CFKxWLzT8wT8iEwECxkl2lKj9U3PdDvY6WCPj2OtOvipl43W292dbnHwMnAq0EbVORptNNreOKZpBEJTTpQaOt1E+4ZIzSiHrOWlChJCZ2QCQwsFiUD5pug+w/csM8ZhLO0jNC7Y8xGGRErNo8A6I6Knqq7l5EXaMNXhE98wkaQaBC0LhSnHOsb5KPCYSaCazy0gVDLbK6ZTIgnVdmALmdzBodt/3nfdgw6kHOREAsx8o4goq7e8v7DV8p6BnYGEV/b2JgFJdCyNp3RMpxw+ZMbTkhEx4cAh1Ja4MGDbeAlLQFn758zmFPCJxlFExNh4ICNLT4k2YTay6eBMK2pyNssWnTxWeQbgvCacqUIaOn5pGpm2k+EHuLqE77frqcoIorPh7vmYrfbu/cW4nFmKlUzNymouHuIqWVHTr3ld229cDSH/TYxXfNfQuEtvt5+VIiXc7NfFl3uVKiNjcU09OPyvWlxTi27/6f38VncA4aqyBIHp13VBdCoXLK+zfK2c+hItg+PdHefRjvP2YbvXqxasie6gu2gLOegx6qEX6AgNEEVz9AV9Rd8a3xs/G78av0vr6koVs4kWzlrzD8vDe7U=</latexit>

{0, 1, . . . , 9}

\\

\\

\\

0 1 2 3 4 5 6 7 8 9

value stored in slot 2

value stored in slot 5

value stored in slot 8

value stored in slot 9

Page 13: lecture15 16 hashing

Direct-address table - Example 2

Universe where we have only n keys<latexit sha1_base64="gdWW17rsX4HyGHXppaWlAI0HqIM=">AAAEVnicbVNdb9MwFPXWjo3ysQ4e92JRIY2pm5pqAh4rjQzQBoyKbpOarHLcmzaq4wTbgVUmD/waXuHfwJ9BOB/Ams5SpONzzr3Xvs71YhZI1en8Wlmt1ddurW/cbty5e+/+ZnPrwZmMEkFhQCMWiQuPSGABh4EKFIOLWAAJPQbn3uww088/gZBBxD+oeQxuSCY88ANKlKFGzW1H404bW23ssHGkZBt3LzXfs1LspKNmq7PfyRdeBlYJWqhcp6OtWssZRzQJgSvKiJRDqxMrVxOhAsogbTiJhJjQGZnA0EBOQpCuzm+R4seGGWM/EubjCufs9QhNQinnoWecIVFTWdUy8iZtmCj/uasDHicKOC0K+QnDKsJZS/A4EEAVmxtAqAjMWTGdEkGoMo1byGQPTuz+y75tH7chYSAmAmDmakl4Ub3h/IWNhvMCTA8EvDG7dzEIoiKhHakiOmXwMdWOEgHhEwYMfGWIGwN2tRMHMUhj/5KanBw+0ygMCR9rB0Ro6ClR2k9HJh1cKUl1xqbpopNFMssAjFWEK5lLQ8stTCPdMi+/h8uNf7lbTVVEEJUOu9djdlrdJ4txGbMUKwI5K6rZeIjLZHlNt+K1zXmjsgnZb6Kd/F19bS/d7igtREqYPqqKrw9LVYTa4Ip6fPJfNbii5qf9p/ezXdUBhMnS4nm6X9U5UYlYsLxNs7GyqkO0DM66+9bT/YP3B61erxywDbSNHqEdZKFnqIdeoVM0QBR9Rd/Qd/Sj9rP2u75WXy+sqytlzEO0sOrNPwBsfGU=</latexit>

{0, 1, . . . , 2n�1}

\

\

\

\

. . . .

\

<latexit sha1_base64="gXfSveA6IYmV0cKVTvcCmoid5S4=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNUTTUBj5VGBmgDRqHbpCZUjnvSWnWcYDtjlclP4BX+Df+Dd94QrzzjXIA1naVIn7/LOSdOHKaMStXpfF9ZtS5cvHR57Urr6rXrN26ub9w6lEkmCAxIwhJxHGIJjHIYKKoYHKcCcBwyOApnO4V+dAJC0oS/U/MUghhPOI0owcpQb09G7mjd6bQ75bKXgVsDB9XrYLRhOf44IVkMXBGGpRy6nVQFGgtFCYO85WcSUkxmeAJDAzmOQQa6nDW37xlmbEeJMA9XdsmeTWgcSzmPQ+OMsZrKplaQ52nDTEVPAk15mingpGoUZcxWiV28uD2mAohicwMwEdTMapMpFpgoczwLlbzBvtd/1ve8vQeQMRATATALtMS86t7y/8JWy38K5gwEvDS71ykIrBKhfakSMmXwIde+EhTzCQMGkTLEuYEt7ac0BWnsn3JTk8NHksQx5mPtg4gNPcVKR/nIlINTJYku2DxfdLJEFhWAsYZwKktp6AaVaaQdN7cf2vUmer/VLFUlsMqH3bOZTad7fzFXMEtZQeWs6ubZQ7suVvYMGl7PzJvUh1D8Jtovv2ukvaW3280rkWCmd5vii51aFbE2uKHu7f9XDW6o5bT/9H6xazoAM1lbwlD3mzrHKhMLlld5bq6V27xEy+Cw23YftbffbDu9Xn3B1tAddBdtIhc9Rj30HB2gASJogj6jL+ir9c36Yf20flXW1ZU6cxstLOv3H4S2dzw=</latexit>v1

<latexit sha1_base64="vvMUx9ok2ml0dA6uXrWW3F8B7DY=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNUTTUBj5VGBmgDRqHbpCZUjnvSWnWcYDtjlclP4BX+Df+Dd94QrzzjXIA1naVIn7/LOSdOHKaMStXpfF9ZtS5cvHR57Urr6rXrN26ub9w6lEkmCAxIwhJxHGIJjHIYKKoYHKcCcBwyOApnO4V+dAJC0oS/U/MUghhPOI0owcpQb09G3dG602l3ymUvA7cGDqrXwWjDcvxxQrIYuCIMSzl0O6kKNBaKEgZ5y88kpJjM8ASGBnIcgwx0OWtu3zPM2I4SYR6u7JI9m9A4lnIeh8YZYzWVTa0gz9OGmYqeBJryNFPASdUoypitErt4cXtMBRDF5gZgIqiZ1SZTLDBR5ngWKnmDfa//rO95ew8gYyAmAmAWaIl51b3l/4Wtlv8UzBkIeGl2r1MQWCVC+1IlZMrgQ659JSjmEwYMImWIcwNb2k9pCtLYP+WmJoePJIljzMfaBxEbeoqVjvKRKQenShJdsHm+6GSJLCoAYw3hVJbS0A0q00g7bm4/tOtN9H6rWapKYJUPu2czm073/mKuYJaygspZ1c2zh3ZdrOwZNLyemTepD6H4TbRfftdIe0tvt5tXIsFM7zbFFzu1KmJtcEPd2/+vGtxQy2n/6f1i13QAZrK2hKHuN3WOVSYWLK/y3Fwrt3mJlsFht+0+am+/2XZ6vfqCraE76C7aRC56jHroOTpAA0TQBH1GX9BX65v1w/pp/aqsqyt15jZaWNbvP4iMdz0=</latexit>v2

. . . .

. . . .

What fraction of space is being utilized?

Page 14: lecture15 16 hashing

Direct-address table - Example 2

Universe where we have only n keys<latexit sha1_base64="gdWW17rsX4HyGHXppaWlAI0HqIM=">AAAEVnicbVNdb9MwFPXWjo3ysQ4e92JRIY2pm5pqAh4rjQzQBoyKbpOarHLcmzaq4wTbgVUmD/waXuHfwJ9BOB/Ams5SpONzzr3Xvs71YhZI1en8Wlmt1ddurW/cbty5e+/+ZnPrwZmMEkFhQCMWiQuPSGABh4EKFIOLWAAJPQbn3uww088/gZBBxD+oeQxuSCY88ANKlKFGzW1H404bW23ssHGkZBt3LzXfs1LspKNmq7PfyRdeBlYJWqhcp6OtWssZRzQJgSvKiJRDqxMrVxOhAsogbTiJhJjQGZnA0EBOQpCuzm+R4seGGWM/EubjCufs9QhNQinnoWecIVFTWdUy8iZtmCj/uasDHicKOC0K+QnDKsJZS/A4EEAVmxtAqAjMWTGdEkGoMo1byGQPTuz+y75tH7chYSAmAmDmakl4Ub3h/IWNhvMCTA8EvDG7dzEIoiKhHakiOmXwMdWOEgHhEwYMfGWIGwN2tRMHMUhj/5KanBw+0ygMCR9rB0Ro6ClR2k9HJh1cKUl1xqbpopNFMssAjFWEK5lLQ8stTCPdMi+/h8uNf7lbTVVEEJUOu9djdlrdJ4txGbMUKwI5K6rZeIjLZHlNt+K1zXmjsgnZb6Kd/F19bS/d7igtREqYPqqKrw9LVYTa4Ip6fPJfNbii5qf9p/ezXdUBhMnS4nm6X9U5UYlYsLxNs7GyqkO0DM66+9bT/YP3B61erxywDbSNHqEdZKFnqIdeoVM0QBR9Rd/Qd/Sj9rP2u75WXy+sqytlzEO0sOrNPwBsfGU=</latexit>

{0, 1, . . . , 2n�1}

\

\

\

\

. . . .

\

<latexit sha1_base64="gXfSveA6IYmV0cKVTvcCmoid5S4=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNUTTUBj5VGBmgDRqHbpCZUjnvSWnWcYDtjlclP4BX+Df+Dd94QrzzjXIA1naVIn7/LOSdOHKaMStXpfF9ZtS5cvHR57Urr6rXrN26ub9w6lEkmCAxIwhJxHGIJjHIYKKoYHKcCcBwyOApnO4V+dAJC0oS/U/MUghhPOI0owcpQb09G7mjd6bQ75bKXgVsDB9XrYLRhOf44IVkMXBGGpRy6nVQFGgtFCYO85WcSUkxmeAJDAzmOQQa6nDW37xlmbEeJMA9XdsmeTWgcSzmPQ+OMsZrKplaQ52nDTEVPAk15mingpGoUZcxWiV28uD2mAohicwMwEdTMapMpFpgoczwLlbzBvtd/1ve8vQeQMRATATALtMS86t7y/8JWy38K5gwEvDS71ykIrBKhfakSMmXwIde+EhTzCQMGkTLEuYEt7ac0BWnsn3JTk8NHksQx5mPtg4gNPcVKR/nIlINTJYku2DxfdLJEFhWAsYZwKktp6AaVaaQdN7cf2vUmer/VLFUlsMqH3bOZTad7fzFXMEtZQeWs6ubZQ7suVvYMGl7PzJvUh1D8Jtovv2ukvaW3280rkWCmd5vii51aFbE2uKHu7f9XDW6o5bT/9H6xazoAM1lbwlD3mzrHKhMLlld5bq6V27xEy+Cw23YftbffbDu9Xn3B1tAddBdtIhc9Rj30HB2gASJogj6jL+ir9c36Yf20flXW1ZU6cxstLOv3H4S2dzw=</latexit>v1

<latexit sha1_base64="vvMUx9ok2ml0dA6uXrWW3F8B7DY=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNUTTUBj5VGBmgDRqHbpCZUjnvSWnWcYDtjlclP4BX+Df+Dd94QrzzjXIA1naVIn7/LOSdOHKaMStXpfF9ZtS5cvHR57Urr6rXrN26ub9w6lEkmCAxIwhJxHGIJjHIYKKoYHKcCcBwyOApnO4V+dAJC0oS/U/MUghhPOI0owcpQb09G3dG602l3ymUvA7cGDqrXwWjDcvxxQrIYuCIMSzl0O6kKNBaKEgZ5y88kpJjM8ASGBnIcgwx0OWtu3zPM2I4SYR6u7JI9m9A4lnIeh8YZYzWVTa0gz9OGmYqeBJryNFPASdUoypitErt4cXtMBRDF5gZgIqiZ1SZTLDBR5ngWKnmDfa//rO95ew8gYyAmAmAWaIl51b3l/4Wtlv8UzBkIeGl2r1MQWCVC+1IlZMrgQ659JSjmEwYMImWIcwNb2k9pCtLYP+WmJoePJIljzMfaBxEbeoqVjvKRKQenShJdsHm+6GSJLCoAYw3hVJbS0A0q00g7bm4/tOtN9H6rWapKYJUPu2czm073/mKuYJaygspZ1c2zh3ZdrOwZNLyemTepD6H4TbRfftdIe0tvt5tXIsFM7zbFFzu1KmJtcEPd2/+vGtxQy2n/6f1i13QAZrK2hKHuN3WOVSYWLK/y3Fwrt3mJlsFht+0+am+/2XZ6vfqCraE76C7aRC56jHroOTpAA0TQBH1GX9BX65v1w/pp/aqsqyt15jZaWNbvP4iMdz0=</latexit>v2

. . . .

. . . .

What fraction of space is being utilized?

Storing n keys in space

Utilization:

<latexit sha1_base64="SPyPa7q/F/J0ngHK8tf7gh4H6+U=">AAAEPHicdVNbb9MwFPYWLqPcNnjkJaJCGhNUSWlhfZs0MkAbMArdJjVZ5bgnbVTHCbYDm0x+Aq/wb/gfvPOGeOUZ5zJYs2Ep0ufvcs6JE/sJDYW0rO8Li8aFi5cuL11pXL12/cbN5ZVbeyJOOYEBiWnMD3wsgIYMBjKUFA4SDjjyKez7s81c3/8AXIQxeyePE/AiPGFhEBIsNfW2fchGy02rZXV7XdsyrVbXsnuPctDrrXe6XdNuWcVqomrtjlaMpjuOSRoBk4RiIYa2lUhPYS5DQiFruKmABJMZnsBQQ4YjEJ4qZs3Me5oZm0HM9cOkWbCnEwpHQhxHvnZGWE5FXcvJ87RhKoN1T4UsSSUwUjYKUmrK2Mxf3ByHHIikxxpgwkM9q0mmmGMi9fHMVXIGO07/Wd9xth9ASoFPOMDMUwKzsnvDPYGNhvsU9BlweKl3rxPgWMZcuULGZErhfaZcyUPMJhQoBFIT5wbWlJuECQht/5Tpmgw+kjiKMBsrF3ik6SmWKshGuhwcSUFUzmbZvJPGIq8AlNaEI1FIQ9srTSPVtDPzoVltgsO1eqkygWU2bJ/OrDbb9+dzOXMmy0MxK7s55tCsihU9vZrX0fPG1SHkv4lyi+8aKOfM221lpUgwVVt18cVmpfJIaVxTt3f+qRrX1GLav3o/39UdgKmoLL6v+nWdYZnyOcurLNPX6uTumP8He+2W/bjVedNpbmxUF2wJ3UF30Sqy0RO0gZ6jXTRABE3QZ/QFfTW+GT+Mn8av0rq4UGVuo7ll/P4DitV3gg==</latexit>

2n

<latexit sha1_base64="mpWtJEZrhb00wFzbV6Uz6yJ9dbY=">AAAEUnicdVNPb9MwFPfWAqMMtsGBAxeLCmlMUCVlhfU2aWSANmBUdJvUdJXrvrRRHSfYDmwy/jRc4dtw4atwwkkzWLNhKdLPvz/vOS/xMGGhVI7za2GxUr12/cbSzdqt5dt3VlbX7h7KOBUUujRmsTgeEgks5NBVoWJwnAgg0ZDB0XC6k+lHn0HIMOYf1VkC/YiMeRiElChLDVbv+4EgVHOjmyfcYJ8kiYhPsTNYrTsNp9VuuQ52Gi3HbT/LQLu9tdlqYbfh5KuOinUwWKvU/VFM0wi4ooxI2XOdRPU1ESqkDEzNTyUkhE7JGHoWchKB7Ov8DQx+ZJkRDmJhH65wzl5MaBJJeRYNrTMiaiLLWkZepfVSFWz1dciTVAGns0ZByrCKcTYOPAoFUMXOLCBUhPasmE6IHYmyQ5ur5HX3vc6rjuftPYGUgRgLgGlfS8Jn3Wv+OazV/JdgZyDgrd29T0AQFQvtSxXTCYNPRvtKhISPGTAIlCWuDGxoPwkTkNb+1diaHL7QOIoIH2kfRGTpCVE6MANbDk6VpDpjjZl3slhmFYCxknAqc6nn9memga67Bj/FxSY42SiXmiWIMr3mxcx6vfl4Ppcxl7IilNNZNw/3cFEs79kveT173rgYQvabaD//roH2Lr3drpmJlDC9Wxbf7BSqiLTFJXVv/59qcUnNT/tX72S7sgMIk4VlONSdss6JSsWc5Z0x9lqd3x38f3DYbLjPG5sfNuvb28UFW0IP0EO0jlz0Am2j1+gAdRFFBn1D39GPys/K7+pCtTKzLi4UmXtoblWX/wApuX06</latexit> n

2n⇡ 0

Page 15: lecture15 16 hashing

Hash tablesWhat if the universe is massive, but the set of keys that will actually be used is much smaller? ( )

Then a direct-address table is really wasteful. Most entries of T will never be used!

Idea: Although is massive, we’ll use a table of size m. How? We use a hash function

<latexit sha1_base64="cPgXYfImooD/GPym9f/hNK4b8Ao=">AAAEOnicbVPLbtQwFHUbHmV4tbBkExEhlQpGkxECFiwqlRRQC7Qjpq2UpCPHczNjjeME24FWJl/AFv6GH2HLDrHlA3AeQCdTS5GOz+PeGyeOMkal6vW+Ly1bFy5eurxypXP12vUbN1fXbh3INBcEhiRlqTiKsARGOQwVVQyOMgE4iRgcRrOtUj/8AELSlL9TpxmECZ5wGlOClaH2h6NVp9ftVcteBG4DHNSsvdGa5QTjlOQJcEUYltJ3e5kKNRaKEgZFJ8glZJjM8AR8AzlOQIa6mrSw7xlmbMepMA9XdsWeTWicSHmaRMaZYDWVba0kz9P8XMVPQ015livgpG4U58xWqV2+tj2mAohipwZgIqiZ1SZTLDBR5nDmKnnDXW/wYuB5Ow8gZyAmAmAWaol53b0T/IWdTvAczBkIeG12bzMQWKVCB1KlZMrgfaEDJSjmEwYMYmWIcwMbOshoBtLYPxWmJoePJE0SzMc6AJEYeoqVjouRKQcnShJdskUx72SpLCsAYy3hRFaS74a1aaQdt7Af2s0mPt5ol6oTWBV+/2xm3enfn8+VzEJWUDmru3m2bzfFqp5hy+uZedPmEMrfRAfVd421t/B220UtEsz0dlt8tdWoItEGt9Sd3f+qwS21mvafPih3bQdgJhtLFOlBW+dY5WLO8qYozLVy25doERz0u+7jrrv/yNl81lywFXQH3UXryEVP0CZ6ifbQEBEE6DP6gr5a36wf1k/rV21dXmoyt9Hcsn7/AYuwdnA=</latexit>

U

<latexit sha1_base64="hU4zpyJneuyb/ig53MS+yeG0a3A=">AAAEOnicbVPLbtQwFHUbHmV4tbBkExEhlQpGkxECFiwqlRRQC7Qjpq2UpCPHczNjjeME24FWJl/AFv6GH2HLDrHlA3AeQCdTS5GOz+PeGyeOMkal6vW+Ly1bFy5eurxypXP12vUbN1fXbh3INBcEhiRlqTiKsARGOQwVVQyOMgE4iRgcRrOtUj/8AELSlL9TpxmECZ5wGlOClaH2p6NVp9ftVcteBG4DHNSsvdGa5QTjlOQJcEUYltJ3e5kKNRaKEgZFJ8glZJjM8AR8AzlOQIa6mrSw7xlmbMepMA9XdsWeTWicSHmaRMaZYDWVba0kz9P8XMVPQ015livgpG4U58xWqV2+tj2mAohipwZgIqiZ1SZTLDBR5nDmKnnDXW/wYuB5Ow8gZyAmAmAWaol53b0T/IWdTvAczBkIeG12bzMQWKVCB1KlZMrgfaEDJSjmEwYMYmWIcwMbOshoBtLYPxWmJoePJE0SzMc6AJEYeoqVjouRKQcnShJdskUx72SpLCsAYy3hRFaS74a1aaQdt7Af2s0mPt5ol6oTWBV+/2xm3enfn8+VzEJWUDmru3m2bzfFqp5hy+uZedPmEMrfRAfVd421t/B220UtEsz0dlt8tdWoItEGt9Sd3f+qwS21mvafPih3bQdgJhtLFOlBW+dY5WLO8qYozLVy25doERz0u+7jrrv/yNl81lywFXQH3UXryEVP0CZ6ifbQEBEE6DP6gr5a36wf1k/rV21dXmoyt9Hcsn7/AdSSdoM=</latexit>

h <latexit sha1_base64="eLyDKXfLiq//UeSvmmHqHKK2CRc=">AAAEUnicbVNNb9MwGPbWAqMM6ODAgYtFhTSmbmomBBw4TBoZoA0YFd0mNaFy3DetVccJtgOrTH4NV/g3XPgrnHA+gDWdpUiPn4/3dd7EQcKZ0r3er5XVRvPK1Wtr11s31m/eut3euHOi4lRSGNCYx/IsIAo4EzDQTHM4SySQKOBwGsz2c/30M0jFYvFBzxPwIzIRLGSUaEuN2vc8g3td7HSxx8exVl0cbTvYy0btTm+nVyy8DJwKdFC1jkcbjY43jmkagdCUE6WGTi/RviFSM8oha3mpgoTQGZnA0EJBIlC+Kd4gww8tM8ZhLO0jNC7YiwlDIqXmUWCdEdFTVddy8jJtmOrwmW+YSFINgpaNwpRjHeN8HHjMJFDN5xYQKpk9K6ZTIgnVdmgLldzBkdt/2Xfdwy6kHOREAsx8o4gou7e8v7DV8l6AnYGEN3b3LgFJdCyNp3RMpxw+ZcbTkhEx4cAh1Ja4NLBlvIQloKz9a2ZrCvhC4ygiYmw8kJGlp0SbMBvZcnCuFTU5m2WLTh6rvAJwXhPOVSENHb80jUzHyfA2rjbhx616qTJBdDbcvZjZ7Ow+WszlzFJWMjUru7l4iKtiRU+/5nXteeNqCPlvYrziu4bGXXq7g6wUKeHmoC6+3q9UGRmLa+rh0X/V4ppanPaf3s93dQcQripLEJh+XRdEp3LB8jbLr5VTv0TL4GR3x3my47x/3Nl7Xl2wNXQfPUCbyEFP0R56hY7RAFGUoW/oO/rR+Nn43VxpNkrr6kqVuYsWVnP9D170eq0=</latexit>

{0, 1, . . . ,m � 1}

<latexit sha1_base64="zih5XZc/motLMeMpKxqQkVo7Byk=">AAAEY3icbVPrbtMwFPa2AqPjsg3+ISSLCmlMXdVMCBC/Jo0M0AaMim6Tmqxy3JPWqhMH22GbTF6Bp+EvvAcPwHvgXIA1naVIn7/LOc5JHCScKd3t/lpYXGpcu35j+WZz5dbtO3dX19aPlEglhT4VXMiTgCjgLIa+ZprDSSKBRAGH42C6m+vHX0AqJuJP+iIBPyLjmIWMEm2p4erGBL/EfexJNp5oIqU4w57ptrHTxh4fCa3aONpysJcNV1vdTrdYeB44FWihah0O15Za3kjQNIJYU06UGjjdRPuGSM0oh6zppQoSQqdkDAMLYxKB8k3xShl+bJkRDoW0T6xxwV5OGBIpdREF1hkRPVF1LSev0gapDl/4hsVJqiGmZaMw5VgLnM8Hj5gEqvmFBYRKZs+K6YRIQrWd4kwlt3/g9l73XHe/DSkHOZYAU98oEpfdm95f2Gx6r8DOQMI7u/uQgCRaSOMpLeiEw+fMeFoyEo85cAi1Ja4MbBovYQkoa/+a2ZoxnFERRSQeGQ9kZOkJ0SbMhrYcnGtFTc5m2ayTC5VXAM5rwrkqpIHjl6ahaTkZ3sLVJjzdrJcqE0Rng+3LmY3W9pPZXM7MZSVT07Kbiwe4Klb09Gte155XVEPIfxPjFd81NO7c2+1lpUgJN3t18e1upcrIWFxT9w/+qxbX1OK0//Revqs7gHBVWYLA9Op6THQqZyzvs/xaOfVLNA+OtjvOs47z8WlrZ6e6YMvoAXqENpCDnqMd9AYdoj6i6Bv6jn6gn0u/GyuN9cb90rq4UGXuoZnVePgHhEaAWA==</latexit>

h : U ! {0, 1, . . . ,m � 1}

<latexit sha1_base64="j0Ii+7K4lnfcLyTwmmCbVLikulo=">AAAEQnicbVPbbtMwGPYWDqOcNrjkxqJCGhNUzYSAy0kjA7QBo6LbUJNVjvunteo4wXZgk5un4BbehpfgFbhD3HKBcwDWdJYiff4O///HicOUM6W73e9Ly86Fi5cur1xpXb12/cbN1bVbByrJJIU+TXgij0KigDMBfc00h6NUAolDDofhdLvQDz+CVCwR7/RpCkFMxoJFjBJtqfcC+5zjWX82XG13O91y4UXg1qCN6rU/XHPa/iihWQxCU06UGrjdVAeGSM0oh7zlZwpSQqdkDAMLBYlBBaacOMf3LDPCUSLtIzQu2bMJQ2KlTuPQOmOiJ6qpFeR52iDT0dPAMJFmGgStGkUZxzrBxevjEZNANT+1gFDJ7KyYTogkVNtDmqvk9fe83vOe5+0+gIyDHEuAaWAUEVX3lv8Xtlr+M7BnIOGV3b1JQRKdSOMrndAJhw+58bVkRIw5cIi0Jc4NbBg/ZSkoa5/ltqaATzSJYyJGxgcZW3pCtInyoS0HJ1pRU7B5Pu/kiSoqAOcN4USV0sANKtPQtN0cP8T1JjreaJaqEkTng82zmfX25v35XMEsZCVT06qbhwe4Llb2DBpez86b1IdQ/CbGL79rZLyFt9vJK5ESbnaa4svtWpWxsbih7u79Vy1uqOW0//ResWs6gHBVW8LQ9Jq6IDqTc5bXeW6vldu8RIvgYLPjPu64bx+1t7bqC7aC7qC7aB256AnaQi/QPuojimL0GX1BX51vzg/np/Orsi4v1ZnbaG45v/8Aw615ng==</latexit>

n ⌧ |U|

<latexit sha1_base64="l7CjNVWCxBTK0Lq3RQo3/jkzj2w=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNUTYWAx0ojA7QBo9BtUpNVjnvSWnWcYDuwyc1P4BX+Df+Dd94QrzzjXIA1naVIn7/LOSdOHKaMStXpfF9ZtS5cvHR57Urr6rXrN26ub9w6kEkmCAxIwhJxFGIJjHIYKKoYHKUCcBwyOAxn24V++BGEpAl/r05TCGI84TSiBCtDvZsP5qN1p9PulMteBm4NHFSv/dGG5fjjhGQxcEUYlnLodlIVaCwUJQzylp9JSDGZ4QkMDeQ4BhnoctbcvmeYsR0lwjxc2SV7NqFxLOVpHBpnjNVUNrWCPE8bZip6GmjK00wBJ1WjKGO2Suzixe0xFUAUOzUAE0HNrDaZYoGJMsezUMkb7Hn9533P230AGQMxEQCzQEvMq+4t/y9stfxnYM5AwCuze5OCwCoR2pcqIVMGH3LtK0ExnzBgEClDnBvY0n5KU5DGPs9NTQ6fSBLHmI+1DyI29BQrHeUjUw5OlCS6YPN80ckSWVQAxhrCiSyloRtUppF23Nx+aNeb6HirWapKYJUPu2czm073/mKuYJaygspZ1c2zh3ZdrOwZNLyemTepD6H4TbRfftdIe0tvt5NXIsFM7zTFl9u1KmJtcEPd3fuvGtxQy2n/6f1i13QAZrK2hKHuN3WOVSYWLK/z3Fwrt3mJlsFBt+0+brtvHzm9Xn3B1tAddBdtIhc9QT30Au2jASJogj6jL+ir9c36Yf20flXW1ZU6cxstLOv3H5Qrd4A=</latexit>

|U|

<latexit sha1_base64="wTr6Ym7ZxIxqm/aGaxma7m8lTho=">AAAEOnicdVPbbtMwGPYWDqOcNrjkxqJCGhNUSam2IXExaWSANmCr6DapySrH/dNadQ7YDmwyeQJu4W14EW65Q9zyADhNBms2LEX6/B3+/48TBylnUtn297l569LlK1cXrjWu37h56/bi0p19mWSCQo8mPBGHAZHAWQw9xRSHw1QAiQIOB8Fks9APPoCQLInfqZMU/IiMYhYySpSh9iaDxabderq+2u6sYrtl22tO2ylAe63zpIMdwxSriaq1O1iymt4woVkEsaKcSNl37FT5mgjFKIe84WUSUkInZAR9A2MSgfT1dNIcPzDMEIeJME+s8JQ9m9AkkvIkCowzImos61pBXqT1MxWu+5rFaaYgpmWjMONYJbh4bTxkAqjiJwYQKpiZFdMxEYQqczgzldzejtt90XXd7UeQcRAjATDxtSRx2b3hncJGw3sO5gwEvDa7tykIohKhPakSOubwPteeEozEIw4cQmWICwMr2ktZCtLYP+WmZgwfaRJFJB5qD0Rk6DFROswHphwcK0l1web5rJMnsqgAnNeEYzmV+o5fmga66eT4Ma424dFKvVSZICrvt89mlpvth7O5gjmXFUxOym4u7uOq2LSnX/O6Zt6kOoTiN9He9LuG2j33dlt5KVLC9VZdfLVZqSLSBtfU7Z1/qsE1dTrtX71b7OoOIFxWliDQ3boeE5WJGcubPDfX6vTu4P+D/XbLWW119jrNjWfVBVtA99B9tIwctIY20Eu0i3qIIkCf0Rf01fpm/bB+Wr9K6/xclbmLZpb1+w/aTHbL</latexit>

k

<latexit sha1_base64="VIrHJS15MZoYhCNjpwQ6T8LJVWs=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC6iaokmragatJIwO0AaOi26Qmqxz3T2vVOWA7sMnkFbiFt+E5eADuELfc4jQZrNmwFOnzd/j/P04cpJxJZdvf5+atK1evXV+40bh56/adu4tL9w5kkgkKPZrwRBwFRAJnMfQUUxyOUgEkCjgcBpPtQj/8AEKyJH6nTlPwIzKKWcgoUQU1bk2WB4tNu23btuM4uADO+pptwObmRsfZwE4hmdVE1dofLFlNb5jQLIJYUU6k7Dt2qnxNhGKUQ97wMgkpoRMygr6BMYlA+no6bI4fGWaIw0SYJ1Z4yp5PaBJJeRoFxhkRNZZ1rSAv0/qZCjd8zeI0UxDTslGYcawSXLw5HjIBVPFTAwgVzMyK6ZgIQpU5n5lKbm/P7T7vuu7uY8g4iJEAmPhakrjs3vDOYKPhPQNzBgJemd2bFARRidCeVAkdc3ifa08JRuIRBw6hMsSlgRXtpSwFaeyfclMzho80iSISD7UHIjL0mCgd5gNTDk6UpLpg83zWyRNZVADOa8KJnEp9xy9NA910cvwEV5vweKVeqkwQlfc75zOtZmd5NlcwF7KCyUnZzcV9XBWb9vRrXtfMm1SHUPwm2pt+11C7F95uJy9FSrjeqYsvtytVRNrgmrq79081uKZOp/2rd4td3QGEy8oSBLpb12OiMjFjeZ3n5lqd3R38f3DQaTtr7dW3q82tp9UFW0AP0EPUQg5aR1voBdpHPUTRGH1GX9BX65v1w/pp/Sqt83NV5j6aWdbvP+gvd5Q=</latexit>

h(k)

Page 16: lecture15 16 hashing

Hash function and collisions

Let be a hash function.

Given key k, we call h(k) the hash value of key k

(not-so-smart) Example:

If two keys hash to the same slot, then we have a collision

<latexit sha1_base64="zih5XZc/motLMeMpKxqQkVo7Byk=">AAAEY3icbVPrbtMwFPa2AqPjsg3+ISSLCmlMXdVMCBC/Jo0M0AaMim6Tmqxy3JPWqhMH22GbTF6Bp+EvvAcPwHvgXIA1naVIn7/LOc5JHCScKd3t/lpYXGpcu35j+WZz5dbtO3dX19aPlEglhT4VXMiTgCjgLIa+ZprDSSKBRAGH42C6m+vHX0AqJuJP+iIBPyLjmIWMEm2p4erGBL/EfexJNp5oIqU4w57ptrHTxh4fCa3aONpysJcNV1vdTrdYeB44FWihah0O15Za3kjQNIJYU06UGjjdRPuGSM0oh6zppQoSQqdkDAMLYxKB8k3xShl+bJkRDoW0T6xxwV5OGBIpdREF1hkRPVF1LSev0gapDl/4hsVJqiGmZaMw5VgLnM8Hj5gEqvmFBYRKZs+K6YRIQrWd4kwlt3/g9l73XHe/DSkHOZYAU98oEpfdm95f2Gx6r8DOQMI7u/uQgCRaSOMpLeiEw+fMeFoyEo85cAi1Ja4MbBovYQkoa/+a2ZoxnFERRSQeGQ9kZOkJ0SbMhrYcnGtFTc5m2ayTC5VXAM5rwrkqpIHjl6ahaTkZ3sLVJjzdrJcqE0Rng+3LmY3W9pPZXM7MZSVT07Kbiwe4Klb09Gte155XVEPIfxPjFd81NO7c2+1lpUgJN3t18e1upcrIWFxT9w/+qxbX1OK0//Revqs7gHBVWYLA9Op6THQqZyzvs/xaOfVLNA+OtjvOs47z8WlrZ6e6YMvoAXqENpCDnqMd9AYdoj6i6Bv6jn6gn0u/GyuN9cb90rq4UGXuoZnVePgHhEaAWA==</latexit>

h : U ! {0, 1, . . . ,m � 1}

<latexit sha1_base64="BeHDyhIzzDbxzhDwME2/JjAZcLA=">AAAETHicdVNdb9MwFPXWMUb56uCRF4sKaZugSjr29YA0aWSANmBUdJvUhMpxb9qojhNsh20y+Sm8wr/hnf/BG0LCaTJYs2Ep0vE5537kJtdPWCiVZf2Yma3NXZu/vnCjfvPW7Tt3G4v3DmWcCgpdGrNYHPtEAgs5dFWoGBwnAkjkMzjyxzu5fvQJhAxj/l6dJeBFZMjDIKREGarfWBwtjZfxMzzGrh/FA2xb/UbTalnra1urFrZaa5a9sbVlgGWtb662sW1AfpqoPAf9xVrTHcQ0jYAryoiUPdtKlKeJUCFlkNXdVEJC6JgMoWcgJxFIT096z/AjwwxwEAvzcIUn7MUITSIpzyLfOCOiRrKq5eRVWi9VwaanQ56kCjgtCgUpwyrG+SDwIBRAFTszgFARml4xHRFBqDLjmsrkdPedzouO4+w9hpSBGAqAsacl4UX1unsO63X3OZgZCHhtbm8TEETFQrtSxXTE4GOmXSVCwocMGATKEFcGrGg3CROQxv45Mzk5nNA4iggfaBdEZOgRUTrI+iYdnCpJdc5m2bSTxTLPAIxVhFM5kXq2V5j6umln+AkuL8GHlWqqIoKorNe+GLPUbC9Px+XMpVgRynFRzcE9XCab1PQqXsf0G5dDyH8T7U6+a6CdS2+3mxUiJUzvVsVXO6UqIm1wRd3b/6caXFEn3f7VO/mt6gDCZGnxfd2p6pyoVExZ3mSZWavz3cH/B4ftlr3est89bW5vlwu2gB6gh2gJ2WgDbaOX6AB1EUUn6Av6ir7Vvtd+1n7VfhfW2Zky5j6aOnPzfwCbc3rl</latexit>

h(k) = k mod 10

Page 17: lecture15 16 hashing

What if the key is not a natural number?

Suppose the key is a floating point number

• Easy to fix by rescaling

How to handle strings?

• Basic idea: interpret as number in given base and convert to decimal (more on this in a later lecture; stay tuned!)

Page 18: lecture15 16 hashing

Handling collisions

How can we handle collisions?

(1) Design a hash function which makes collisions as unlikely as possible (more on this soon)

Page 19: lecture15 16 hashing

Handling collisions

How can we handle collisions?

(1) Design a hash function which makes collisions as unlikely as possible (more on this soon)

OK… but what if a collision still happens? How can we handle collisions?

(2) Chaining - let each hash table slot store a linked list

(3) Open addressing - if the desired entry is already full, then try some other slots (using some fixed order; more on this next class)

Page 20: lecture15 16 hashing

ChainingIn chaining, we store all elements that hash to the same slot j within a linked list

Example:

(again, not good hash function!)

Insert these keys in this order: 17, 4, 7, 34, 1, 41, 21, 31

0 1 2 3 4 5 6 7 8 9

<latexit sha1_base64="3tMqsiZSF69+UbplZtkvXq0Oc6w=">AAAETHicbVNdb9MwFPXWMUb52AaPvFhUSGOCqakQ8DhpZIA2YFTrNikJlePetKaOE2yHbTL5KbzCv+Gd/8EbQsL5ANZ0liIdn3PuR25yw5QzpbvdHwuLraUry1dXrrWv37h5a3Vt/faRSjJJYUATnsiTkCjgTMBAM83hJJVA4pDDcTjdKfTjTyAVS8ShPk8hiMlYsIhRoi01XFs/xH7IxtzDH0ogg+Fap7vVLQ+eB04NOqg+B8P1VscfJTSLQWjKiVKe0011YIjUjHLI236mICV0SsbgWShIDCowZe85vm+ZEY4SaR+hcclejDAkVuo8Dq0zJnqimlpBXqZ5mY6eBYaJNNMgaFUoyjjWCS4GgUdMAtX83AJCJbO9YjohklBtxzWTyR3su/0XfdfdewgZBzmWANPAKCKq6m3/L2y3/edgZyDhtb29TUESnUjjK53QCYePufG1ZESMOXCItCUuDdg0fspSUNb+Obc5BZzSJI6JGBkfZGzpCdEmyoc2HZxpRU3B5vmskyeqyACcN4QzVUqeE1Smoek4OX6E60v0frOZqoogOvd6F2M2Or0Hs3EFMxcrmZpW1Vzs4TpZWTNoeF3bb1IPofhNjF9+18i4c2+3m1ciJdzsNsVXO7UqY2NxQ93b/69a3FDLbv/p/eLWdADhqraEoek3dUF0Jmcsb/LcrpXTXKJ5cNTbcp5sOe8ed7a36wVbQXfRPbSBHPQUbaOX6AANEEWn6Av6ir61vrd+tn61flfWxYU65g6aOUvLfwDzrHvB</latexit>

T⇥j⇤

<latexit sha1_base64="BeHDyhIzzDbxzhDwME2/JjAZcLA=">AAAETHicdVNdb9MwFPXWMUb56uCRF4sKaZugSjr29YA0aWSANmBUdJvUhMpxb9qojhNsh20y+Sm8wr/hnf/BG0LCaTJYs2Ep0vE5537kJtdPWCiVZf2Yma3NXZu/vnCjfvPW7Tt3G4v3DmWcCgpdGrNYHPtEAgs5dFWoGBwnAkjkMzjyxzu5fvQJhAxj/l6dJeBFZMjDIKREGarfWBwtjZfxMzzGrh/FA2xb/UbTalnra1urFrZaa5a9sbVlgGWtb662sW1AfpqoPAf9xVrTHcQ0jYAryoiUPdtKlKeJUCFlkNXdVEJC6JgMoWcgJxFIT096z/AjwwxwEAvzcIUn7MUITSIpzyLfOCOiRrKq5eRVWi9VwaanQ56kCjgtCgUpwyrG+SDwIBRAFTszgFARml4xHRFBqDLjmsrkdPedzouO4+w9hpSBGAqAsacl4UX1unsO63X3OZgZCHhtbm8TEETFQrtSxXTE4GOmXSVCwocMGATKEFcGrGg3CROQxv45Mzk5nNA4iggfaBdEZOgRUTrI+iYdnCpJdc5m2bSTxTLPAIxVhFM5kXq2V5j6umln+AkuL8GHlWqqIoKorNe+GLPUbC9Px+XMpVgRynFRzcE9XCab1PQqXsf0G5dDyH8T7U6+a6CdS2+3mxUiJUzvVsVXO6UqIm1wRd3b/6caXFEn3f7VO/mt6gDCZGnxfd2p6pyoVExZ3mSZWavz3cH/B4ftlr3est89bW5vlwu2gB6gh2gJ2WgDbaOX6AB1EUUn6Av6ir7Vvtd+1n7VfhfW2Zky5j6aOnPzfwCbc3rl</latexit>

h(k) = k mod 10

Page 21: lecture15 16 hashing

Operations

SEARCH( ): Search list at

INSERT( ): Insert x at the head of list

DELETE( ): Delete x from list

S, k

S, x

S, x

<latexit sha1_base64="SEIKMgDb+7PCwFBa5CeqB6tT7Ao=">AAAEQHicbVPbbtMwGPYWDqMctsElNxEVUjdB1UwIuJw0MkAbMKp1nZSEynH/tFYdJ9gOrDJ5CG7hbXgL3oA7xC1XOAdgTWcp0ufv8P9/nDhMGZWq1/u+smpdunzl6tq11vUbN2+tb2zePpFJJggMSMIScRpiCYxyGCiqGJymAnAcMhiGs71CH34AIWnCj9U8hSDGE04jSrAy1PDYm3ZmW8Foo93r9splLwOnBm1Ur6PRptX2xwnJYuCKMCyl5/RSFWgsFCUM8pafSUgxmeEJeAZyHIMMdDlvbt83zNiOEmEeruySPZ/QOJZyHofGGWM1lU2tIC/SvExFTwNNeZop4KRqFGXMVoldvLw9pgKIYnMDMBHUzGqTKRaYKHNEC5XcwaHbf9533YMHkDEQEwEwC7TEvOre8v/CVst/BuYMBLwyuzcpCKwSoX2pEjJl8D7XvhIU8wkDBpEyxIWBbe2nNAVp7J9yU5PDR5LEMeZj7YOIDT3FSkf5yJSDMyWJLtg8X3SyRBYVgLGGcCZLyXOCyjTSbSe3H9r1Jnq33SxVJbDKvZ3zmU57Z2sxVzBLWUHlrOrm2p5dFyt7Bg2va+ZN6kMofhPtl9810u7S2+3nlUgw0/tN8eVerYpYG9xQDw7/qwY31HLaf3q/2DUdgJmsLWGo+02dY5WJBcvrPDfXymleomVwstN1Hnedt4/au7v1BVtDd9E91EEOeoJ20Qt0hAaIoBn6jL6gr9Y364f10/pVWVdX6swdtLCs338AnaZ4iw==</latexit>

T [h(k)]

<latexit sha1_base64="GsLzojVP49Ul4ekYDANN2e4RUBs=">AAAET3icbVNdb9MwFPXWAVv52oA3XiIqpG2CqqkQ8DhpZIA2YFTrNinJKse9aa06TrAdWDH+L7zCv+GRX8IbwkkDrOksRTr3nHM/cmVHGaNSdTo/l5YbK1euXltda16/cfPW7fWNO8cyzQWBPklZKk4jLIFRDn1FFYPTTABOIgYn0WS30E8+gpA05UdqmkGY4BGnMSVYWWqwfu/IH2+et4MEq7FI9ASmZiscrLc67U55nEXgVqCFqnM42Gi0gmFK8gS4IgxL6budTIUaC0UJA9MMcgkZJhM8At9CjhOQoS7HN85DywydOBX248op2YsZGidSTpPIOosxZV0ryMs0P1fx81BTnuUKOJk1inPmqNQpduEMqQCi2NQCTAS1szpkjAUmym5srpLXP/B6L3uet/8IcgZiJAAmoZaYz7o3g7+w2QxegN2BgDc2epeBwCoVOpAqJWMGH4wOlKCYjxgwiJUlLk3Y1kFGM5DW/sXYmhw+kTRJMB/qAERi6TFWOjYDWw7OlSS6YI2Zd7JUFhWAsZpwLkvJd8OZaaBbrnEeO1UQn23XS80ysDJ+92LOZqu7NZ9XMAu5gsrJrJvn+E5VrOwZ1ryenTetllBcE11eTRlrb+Hv9sxMJJjpvbr4erdS7a22uKbuH/xXLa6p5bT/9F4R1R2AmawsUaR7dZ1jlYs5y1tj7LNy649oERx32+7Ttvv+SWtnp3pgq+g+eoA2kYueoR30Ch2iPiLoM/qKvqHvjR+NX43fK5V1eakCd9HcWVn7Ax0FfKE=</latexit>

T [h(x .key)]

<latexit sha1_base64="GsLzojVP49Ul4ekYDANN2e4RUBs=">AAAET3icbVNdb9MwFPXWAVv52oA3XiIqpG2CqqkQ8DhpZIA2YFTrNinJKse9aa06TrAdWDH+L7zCv+GRX8IbwkkDrOksRTr3nHM/cmVHGaNSdTo/l5YbK1euXltda16/cfPW7fWNO8cyzQWBPklZKk4jLIFRDn1FFYPTTABOIgYn0WS30E8+gpA05UdqmkGY4BGnMSVYWWqwfu/IH2+et4MEq7FI9ASmZiscrLc67U55nEXgVqCFqnM42Gi0gmFK8gS4IgxL6budTIUaC0UJA9MMcgkZJhM8At9CjhOQoS7HN85DywydOBX248op2YsZGidSTpPIOosxZV0ryMs0P1fx81BTnuUKOJk1inPmqNQpduEMqQCi2NQCTAS1szpkjAUmym5srpLXP/B6L3uet/8IcgZiJAAmoZaYz7o3g7+w2QxegN2BgDc2epeBwCoVOpAqJWMGH4wOlKCYjxgwiJUlLk3Y1kFGM5DW/sXYmhw+kTRJMB/qAERi6TFWOjYDWw7OlSS6YI2Zd7JUFhWAsZpwLkvJd8OZaaBbrnEeO1UQn23XS80ysDJ+92LOZqu7NZ9XMAu5gsrJrJvn+E5VrOwZ1ryenTetllBcE11eTRlrb+Hv9sxMJJjpvbr4erdS7a22uKbuH/xXLa6p5bT/9F4R1R2AmawsUaR7dZ1jlYs5y1tj7LNy649oERx32+7Ttvv+SWtnp3pgq+g+eoA2kYueoR30Ch2iPiLoM/qKvqHvjR+NX43fK5V1eakCd9HcWVn7Ax0FfKE=</latexit>

T [h(x .key)]

Worst-case running time?

<latexit sha1_base64="4M/MqGWV/y0g4LThMp1FbT4vOPQ=">AAAEPHicdVNbb9MwFPYWLqPcNnjkxaJCGhNUyVhhfas0MkAbMArdJjVZ5bgnbVTngu3AKpOfwCv8G/4H77whXnnGuQzWbFiK9Pm7nHPixF7CAiFN8/vConHh4qXLS1caV69dv3FzeeXWvohTTqFPYxbzQ48IYEEEfRlIBocJBxJ6DA686VauH3wALoI4eidnCbghGUeBH1AiNfV2OrSGy02zZbY7bcvEZqttWp1HOeh0NjfabWy1zGI1UbX2hitG0xnFNA0hkpQRIQaWmUhXES4DyiBrOKmAhNApGcNAw4iEIFxVzJrhe5oZYT/m+okkLtjTCUVCIWahp50hkRNR13LyPG2QSn/TVUGUpBIiWjbyU4ZljPMXx6OAA5VspgGhPNCzYjohnFCpj2eukt3ftXvPera98wBSBnzMAaauEiQquzecE9hoOE9BnwGHl3r3OgFOZMyVI2RMJwzeZ8qRPCDRmAEDX2ri3MCacpIgAaHtnzJdM4KPNA5DEo2UAzzU9IRI5WdDXQ6OpaAqZ7Ns3slikVcAxmrCsSikgeWWpqFqWhl+iKuNf7RWL1UmiMwG66czq831+/O5nDmT5YGYlt1sPMBVsaKnW/Paet64OoT8N1FO8V19ZZ95u+2sFClharsuvtiqVB4qjWvqzu4/VeOaWkz7V+/lu7oDCBOVxfNUr65HRKZ8zvIqy/S1Ork7+P9gf71lPW5tvNlodrvVBVtCd9BdtIos9AR10XO0h/qIojH6jL6gr8Y344fx0/hVWhcXqsxtNLeM338Af8Z3fw==</latexit>

k1<latexit sha1_base64="lDT/eQUw3jWxgZ1Bsik1qarngdk=">AAAEPHicdVNbb9MwFPYWLqPcNnjkxaJCGhNUybbC+lZpZIA2YBS6TWpC5bgnbVTngu3AKpOfwCv8G/4H77whXnnGuQzWbFiK9Pm7nHPixF7CAiFN8/vConHh4qXLS1caV69dv3FzeeXWgYhTTqFPYxbzI48IYEEEfRlIBkcJBxJ6DA696XauH34ALoI4eitnCbghGUeBH1AiNfVmOtwYLjfNltnutC0Tm622aXU2ctDpbG2229hqmcVqomrtD1eMpjOKaRpCJCkjQgwsM5GuIlwGlEHWcFIBCaFTMoaBhhEJQbiqmDXD9zQzwn7M9RNJXLCnE4qEQsxCTztDIieiruXkedoglf6Wq4IoSSVEtGzkpwzLGOcvjkcBByrZTANCeaBnxXRCOKFSH89cJbu/Z/ee9mx79wGkDPiYA0xdJUhUdm84J7DRcJ6APgMOL/TuVQKcyJgrR8iYThi8z5QjeUCiMQMGvtTEuYE15SRBAkLbP2W6ZgQfaRyGJBopB3io6QmRys+GuhwcS0FVzmbZvJPFIq8AjNWEY1FIA8stTUPVtDL8EFcb/91avVSZIDIbrJ/OrDbX78/ncuZMlgdiWnaz8QBXxYqebs1r63nj6hDy30Q5xXf1lX3m7XayUqSEqZ26+Hy7UnmoNK6pu3v/VI1rajHtX72X7+oOIExUFs9TvboeEZnyOcvLLNPX6uTu4P+Dg/WW9ai1+Xqz2e1WF2wJ3UF30Sqy0GPURc/QPuojisboM/qCvhrfjB/GT+NXaV1cqDK30dwyfv8Bh3J3gQ==</latexit>

k3<latexit sha1_base64="cSPA5Mfv22roG4qS/S87xg0uh2I=">AAAEPHicdVNbb9MwFPYWLqPcNnjkxaJCGhNUSWlhfZs0MkAbMArdJjVZ5bgnbVTngu3AJpOfwCv8G/4H77whXnnGuQzWbFiK9Pm7nHPixF7CAiFN8/vConHh4qXLS1caV69dv3FzeeXWnohTTmFAYxbzA48IYEEEAxlIBgcJBxJ6DPa92Wau738ALoI4eiePE3BDMokCP6BEaurtbNQZLTfNltntdS0Tm62uafUe5aDXW+90u9hqmcVqomrtjlaMpjOOaRpCJCkjQgwtM5GuIlwGlEHWcFIBCaEzMoGhhhEJQbiqmDXD9zQzxn7M9RNJXLCnE4qEQhyHnnaGRE5FXcvJ87RhKv11VwVRkkqIaNnITxmWMc5fHI8DDlSyYw0I5YGeFdMp4YRKfTxzlezBjt1/1rft7QeQMuATDjBzlSBR2b3hnMBGw3kK+gw4vNS71wlwImOuHCFjOmXwPlOO5AGJJgwY+FIT5wbWlJMECQht/5TpmhF8pHEYkmisHOChpqdEKj8b6XJwJAVVOZtl804Wi7wCMFYTjkQhDS23NI1U08rwQ1xt/MO1eqkyQWQ2bJ/OrDbb9+dzOXMmywMxK7vZeIirYkVPt+a19bxxdQj5b6Kc4rv6yj7zdltZKVLC1FZdfLFZqTxUGtfU7Z1/qsY1tZj2r97Pd3UHECYqi+epfl2PiEz5nOVVlulrdXJ38P/BXrtlPW513nSaGxvVBVtCd9BdtIos9ARtoOdoFw0QRRP0GX1BX41vxg/jp/GrtC4uVJnbaG4Zv/8Ai0h3gg==</latexit>

k4\ \

delete

Page 22: lecture15 16 hashing

Operations

SEARCH( ): Search list at

INSERT( ): Insert x at the head of list

DELETE( ): Delete x from list

S, k

S, x

S, x

Worst-case running time?

<latexit sha1_base64="SEIKMgDb+7PCwFBa5CeqB6tT7Ao=">AAAEQHicbVPbbtMwGPYWDqMctsElNxEVUjdB1UwIuJw0MkAbMKp1nZSEynH/tFYdJ9gOrDJ5CG7hbXgL3oA7xC1XOAdgTWcp0ufv8P9/nDhMGZWq1/u+smpdunzl6tq11vUbN2+tb2zePpFJJggMSMIScRpiCYxyGCiqGJymAnAcMhiGs71CH34AIWnCj9U8hSDGE04jSrAy1PDYm3ZmW8Foo93r9splLwOnBm1Ur6PRptX2xwnJYuCKMCyl5/RSFWgsFCUM8pafSUgxmeEJeAZyHIMMdDlvbt83zNiOEmEeruySPZ/QOJZyHofGGWM1lU2tIC/SvExFTwNNeZop4KRqFGXMVoldvLw9pgKIYnMDMBHUzGqTKRaYKHNEC5XcwaHbf9533YMHkDEQEwEwC7TEvOre8v/CVst/BuYMBLwyuzcpCKwSoX2pEjJl8D7XvhIU8wkDBpEyxIWBbe2nNAVp7J9yU5PDR5LEMeZj7YOIDT3FSkf5yJSDMyWJLtg8X3SyRBYVgLGGcCZLyXOCyjTSbSe3H9r1Jnq33SxVJbDKvZ3zmU57Z2sxVzBLWUHlrOrm2p5dFyt7Bg2va+ZN6kMofhPtl9810u7S2+3nlUgw0/tN8eVerYpYG9xQDw7/qwY31HLaf3q/2DUdgJmsLWGo+02dY5WJBcvrPDfXymleomVwstN1Hnedt4/au7v1BVtDd9E91EEOeoJ20Qt0hAaIoBn6jL6gr9Y364f10/pVWVdX6swdtLCs338AnaZ4iw==</latexit>

T [h(k)]

<latexit sha1_base64="GsLzojVP49Ul4ekYDANN2e4RUBs=">AAAET3icbVNdb9MwFPXWAVv52oA3XiIqpG2CqqkQ8DhpZIA2YFTrNinJKse9aa06TrAdWDH+L7zCv+GRX8IbwkkDrOksRTr3nHM/cmVHGaNSdTo/l5YbK1euXltda16/cfPW7fWNO8cyzQWBPklZKk4jLIFRDn1FFYPTTABOIgYn0WS30E8+gpA05UdqmkGY4BGnMSVYWWqwfu/IH2+et4MEq7FI9ASmZiscrLc67U55nEXgVqCFqnM42Gi0gmFK8gS4IgxL6budTIUaC0UJA9MMcgkZJhM8At9CjhOQoS7HN85DywydOBX248op2YsZGidSTpPIOosxZV0ryMs0P1fx81BTnuUKOJk1inPmqNQpduEMqQCi2NQCTAS1szpkjAUmym5srpLXP/B6L3uet/8IcgZiJAAmoZaYz7o3g7+w2QxegN2BgDc2epeBwCoVOpAqJWMGH4wOlKCYjxgwiJUlLk3Y1kFGM5DW/sXYmhw+kTRJMB/qAERi6TFWOjYDWw7OlSS6YI2Zd7JUFhWAsZpwLkvJd8OZaaBbrnEeO1UQn23XS80ysDJ+92LOZqu7NZ9XMAu5gsrJrJvn+E5VrOwZ1ryenTetllBcE11eTRlrb+Hv9sxMJJjpvbr4erdS7a22uKbuH/xXLa6p5bT/9F4R1R2AmawsUaR7dZ1jlYs5y1tj7LNy649oERx32+7Ttvv+SWtnp3pgq+g+eoA2kYueoR30Ch2iPiLoM/qKvqHvjR+NX43fK5V1eakCd9HcWVn7Ax0FfKE=</latexit>

T [h(x .key)]

<latexit sha1_base64="GsLzojVP49Ul4ekYDANN2e4RUBs=">AAAET3icbVNdb9MwFPXWAVv52oA3XiIqpG2CqqkQ8DhpZIA2YFTrNinJKse9aa06TrAdWDH+L7zCv+GRX8IbwkkDrOksRTr3nHM/cmVHGaNSdTo/l5YbK1euXltda16/cfPW7fWNO8cyzQWBPklZKk4jLIFRDn1FFYPTTABOIgYn0WS30E8+gpA05UdqmkGY4BGnMSVYWWqwfu/IH2+et4MEq7FI9ASmZiscrLc67U55nEXgVqCFqnM42Gi0gmFK8gS4IgxL6budTIUaC0UJA9MMcgkZJhM8At9CjhOQoS7HN85DywydOBX248op2YsZGidSTpPIOosxZV0ryMs0P1fx81BTnuUKOJk1inPmqNQpduEMqQCi2NQCTAS1szpkjAUmym5srpLXP/B6L3uet/8IcgZiJAAmoZaYz7o3g7+w2QxegN2BgDc2epeBwCoVOpAqJWMGH4wOlKCYjxgwiJUlLk3Y1kFGM5DW/sXYmhw+kTRJMB/qAERi6TFWOjYDWw7OlSS6YI2Zd7JUFhWAsZpwLkvJd8OZaaBbrnEeO1UQn23XS80ysDJ+92LOZqu7NZ9XMAu5gsrJrJvn+E5VrOwZ1ryenTetllBcE11eTRlrb+Hv9sxMJJjpvbr4erdS7a22uKbuH/xXLa6p5bT/9F4R1R2AmawsUaR7dZ1jlYs5y1tj7LNy649oERx32+7Ttvv+SWtnp3pgq+g+eoA2kYueoR30Ch2iPiLoM/qKvqHvjR+NX43fK5V1eakCd9HcWVn7Ax0FfKE=</latexit>

T [h(x .key)]

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="39Hy/T8Sh0N4/ufo6Z7/vrfygLc=">AAAEPXicdVPbbtMwGPYWDqOcNrjkxqJC2iaokrHCeldpZIA22KjoNqkJleP+aaM6B2wHVpm8ArfwNjwHD8Ad4pZbnMNgzYalSJ+/w///cWIvYYGQpvl9YdG4dPnK1aVrjes3bt66vbxy51DEKafQpzGL+bFHBLAggr4MJIPjhAMJPQZH3nQ7148+ABdBHL2VswTckIyjwA8okTm1v2qtDZebZstsd9qWic1W27Q6j3PQ6WxtttvYapnFaqJqHQxXjKYzimkaQiQpI0IMLDORriJcBpRB1nBSAQmhUzKGgYYRCUG4qhg2ww80M8J+zPUTSVywZxOKhELMQk87QyInoq7l5EXaIJX+lquCKEklRLRs5KcMyxjnb45HAQcq2UwDQnmgZ8V0QjihUp/PXCW7v2f3nvdse/chpAz4mANMXSVIVHZvOKew0XCegT4DDq/0bj8BTmTMlSNkTCcM3mfKkTwg0ZgBA19q4sLAunKSIAGh7Z8yXTOCjzQOQxKNlAM81PSESOVnQ10OTqSgKmezbN7JYpFXAMZqwokopIHllqahaloZfoSrjf9uvV6qTBCZDTbOZlabG2vzuZw5l+WBmJbdbDzAVbGip1vz2nreuDqE/DdRTvFdfWWfe7udrBQpYWqnLr7crlQeKo1r6u7eP1XjmlpM+1fv5bu6AwgTlcXzVK+uR0SmfM7yOsv0tTq9O/j/4HCjZT1pbb7ZbHa71QVbQvfQfbSKLPQUddELdID6iKIJ+oy+oK/GN+OH8dP4VVoXF6rMXTS3jN9/AAYdd18=</latexit>

O(1)

<latexit sha1_base64="yvH9wrSAU1sDDLevibKn/IGDd20=">AAAEbHicdVPdbtMwFPa2AqP8bcDdhGRRgdoJqmSssF4gTRodoA02qnWb1ITKcU/aqI4TbAc2mTwHT8MtPAMvwTPgpBms2bAU6fj7Occ+zvFiFkhlWb/m5hcqV65eW7xevXHz1u07S8t3D2WUCAo9GrFIHHtEAgs49FSgGBzHAkjoMTjyJlsZf/QZhAwifqBOY3BDMuKBH1CiDDRYsvew4wUjVseOghOlGfCRGuPIxyk+6I/rk4abC0QDV1/ivTpvDJZqVtNqtVu2ha1my7Lbz7Kg3d5Yb7Ww3bTyVUPF2h8sL9ScYUSTELiijEjZt61YuZoIFVAGadVJJMSETsgI+ibkJATp6vxuKX5kkCH2I2E+rnCOnndoEkp5GnpGGRI1lmUuAy/j+onyN1wd8DhRwOm0kJ8wrCKcNQoPAwFUsVMTECoCc1ZMx0QQqkw7ZzJ1erud7utup7PzBBIGYiQAJq6WhE+rV52zsFp1XoHpgYB3ZrcXgyAqEtqRKqJjBp9S7SgRED5iwMBXBrjUsKqdOIhBGvnX1OTk8IVGYUj4UDsgQgOPidJ+OtD5o0qqMzRNZ5UsklkGYKxEnMic6tvuVDTQNTvFT3Gx8T+ullNNHUSl/bXznnptrTHry5ALXhHIybRaB/dxkSyv6Za0HXPeqGhC9ptoJ39XX3cu3G47nZKUML1dJt9uFawItYlL7M7uP9bEJTY/7V++m+3KCiBMFhLP090yz4lKxIzkfZqasTqbHfz/4HCtaT9vrn9Yr21uFgO2iFbQQ1RHNnqBNtEbtI96iKJv6Dv6gX4u/K7cr6xUHkyl83OF5x6aWZXHfwBtm4QU</latexit>

O�length of T [h(k)]

�= O(n)

<latexit sha1_base64="4M/MqGWV/y0g4LThMp1FbT4vOPQ=">AAAEPHicdVNbb9MwFPYWLqPcNnjkxaJCGhNUyVhhfas0MkAbMArdJjVZ5bgnbVTngu3AKpOfwCv8G/4H77whXnnGuQzWbFiK9Pm7nHPixF7CAiFN8/vConHh4qXLS1caV69dv3FzeeXWvohTTqFPYxbzQ48IYEEEfRlIBocJBxJ6DA686VauH3wALoI4eidnCbghGUeBH1AiNfV2OrSGy02zZbY7bcvEZqttWp1HOeh0NjfabWy1zGI1UbX2hitG0xnFNA0hkpQRIQaWmUhXES4DyiBrOKmAhNApGcNAw4iEIFxVzJrhe5oZYT/m+okkLtjTCUVCIWahp50hkRNR13LyPG2QSn/TVUGUpBIiWjbyU4ZljPMXx6OAA5VspgGhPNCzYjohnFCpj2eukt3ftXvPera98wBSBnzMAaauEiQquzecE9hoOE9BnwGHl3r3OgFOZMyVI2RMJwzeZ8qRPCDRmAEDX2ri3MCacpIgAaHtnzJdM4KPNA5DEo2UAzzU9IRI5WdDXQ6OpaAqZ7Ns3slikVcAxmrCsSikgeWWpqFqWhl+iKuNf7RWL1UmiMwG66czq831+/O5nDmT5YGYlt1sPMBVsaKnW/Paet64OoT8N1FO8V19ZZ95u+2sFClharsuvtiqVB4qjWvqzu4/VeOaWkz7V+/lu7oDCBOVxfNUr65HRKZ8zvIqy/S1Ork7+P9gf71lPW5tvNlodrvVBVtCd9BdtIos9AR10XO0h/qIojH6jL6gr8Y344fx0/hVWhcXqsxtNLeM338Af8Z3fw==</latexit>

k1<latexit sha1_base64="lDT/eQUw3jWxgZ1Bsik1qarngdk=">AAAEPHicdVNbb9MwFPYWLqPcNnjkxaJCGhNUybbC+lZpZIA2YBS6TWpC5bgnbVTngu3AKpOfwCv8G/4H77whXnnGuQzWbFiK9Pm7nHPixF7CAiFN8/vConHh4qXLS1caV69dv3FzeeXWgYhTTqFPYxbzI48IYEEEfRlIBkcJBxJ6DA696XauH34ALoI4eitnCbghGUeBH1AiNfVmOtwYLjfNltnutC0Tm622aXU2ctDpbG2229hqmcVqomrtD1eMpjOKaRpCJCkjQgwsM5GuIlwGlEHWcFIBCaFTMoaBhhEJQbiqmDXD9zQzwn7M9RNJXLCnE4qEQsxCTztDIieiruXkedoglf6Wq4IoSSVEtGzkpwzLGOcvjkcBByrZTANCeaBnxXRCOKFSH89cJbu/Z/ee9mx79wGkDPiYA0xdJUhUdm84J7DRcJ6APgMOL/TuVQKcyJgrR8iYThi8z5QjeUCiMQMGvtTEuYE15SRBAkLbP2W6ZgQfaRyGJBopB3io6QmRys+GuhwcS0FVzmbZvJPFIq8AjNWEY1FIA8stTUPVtDL8EFcb/91avVSZIDIbrJ/OrDbX78/ncuZMlgdiWnaz8QBXxYqebs1r63nj6hDy30Q5xXf1lX3m7XayUqSEqZ26+Hy7UnmoNK6pu3v/VI1rajHtX72X7+oOIExUFs9TvboeEZnyOcvLLNPX6uTu4P+Dg/WW9ai1+Xqz2e1WF2wJ3UF30Sqy0GPURc/QPuojisboM/qCvhrfjB/GT+NXaV1cqDK30dwyfv8Bh3J3gQ==</latexit>

k3<latexit sha1_base64="cSPA5Mfv22roG4qS/S87xg0uh2I=">AAAEPHicdVNbb9MwFPYWLqPcNnjkxaJCGhNUSWlhfZs0MkAbMArdJjVZ5bgnbVTngu3AJpOfwCv8G/4H77whXnnGuQzWbFiK9Pm7nHPixF7CAiFN8/vConHh4qXLS1caV69dv3FzeeXWnohTTmFAYxbzA48IYEEEAxlIBgcJBxJ6DPa92Wau738ALoI4eiePE3BDMokCP6BEaurtbNQZLTfNltntdS0Tm62uafUe5aDXW+90u9hqmcVqomrtjlaMpjOOaRpCJCkjQgwtM5GuIlwGlEHWcFIBCaEzMoGhhhEJQbiqmDXD9zQzxn7M9RNJXLCnE4qEQhyHnnaGRE5FXcvJ87RhKv11VwVRkkqIaNnITxmWMc5fHI8DDlSyYw0I5YGeFdMp4YRKfTxzlezBjt1/1rft7QeQMuATDjBzlSBR2b3hnMBGw3kK+gw4vNS71wlwImOuHCFjOmXwPlOO5AGJJgwY+FIT5wbWlJMECQht/5TpmhF8pHEYkmisHOChpqdEKj8b6XJwJAVVOZtl804Wi7wCMFYTjkQhDS23NI1U08rwQ1xt/MO1eqkyQWQ2bJ/OrDbb9+dzOXMmywMxK7vZeIirYkVPt+a19bxxdQj5b6Kc4rv6yj7zdltZKVLC1FZdfLFZqTxUGtfU7Z1/qsY1tZj2r97Pd3UHECYqi+epfl2PiEz5nOVVlulrdXJ38P/BXrtlPW513nSaGxvVBVtCd9BdtIos9ARtoOdoFw0QRRP0GX1BX41vxg/jp/GrtC4uVJnbaG4Zv/8Ai0h3gg==</latexit>

k4\ \

delete

Page 23: lecture15 16 hashing

Load factor

Let T be a hash table of size m that stores n elements

The load factor of T is the average length of a chain. This is simply the ratio of number of elements stored to number of slots. Therefore,

If we have a good hash function, the load is balanced (most chains have length ). In this case, the cost of each Search operation is close to .

It can be challenging to find a good hash function which deterministically keeps most chains at length . Instead, we will consider situations where a hash function is randomly selected such that, on average, any chain has length .

α

αα

α

α

<latexit sha1_base64="kTovtL4hYemTTJG+jhgYphzjQhQ=">AAAERXicbVPLbtNAFJ3WPEp4tbBkMyJCKhWEuELABilScQG1QIlIWyl2o/HkOhllPDYzY2g1+DfYwt/wDXwEO8QWxg+gcTqSpTPnnPvwtW+YcqZ0t/t9adk5d/7CxZVLrctXrl67vrp2Y18lmaQwoAlP5GFIFHAmYKCZ5nCYSiBxyOEgnG0V+sEHkIol4p0+SSGIyUSwiFGiLeX7hKdTgp9i8SAerba7nW558CJwa9BG9dkbrTltf5zQLAahKSdKDd1uqgNDpGaUQ97yMwUpoTMygaGFgsSgAlM2neM7lhnjKJH2ERqX7OkIQ2KlTuLQOmOip6qpFeRZ2jDT0ZPAMJFmGgStCkUZxzrBxQTwmEmgmp9YQKhktldMp0QSqu2c5jJ5g12v/7zveTv3IOMgJxJgFhhFRFW95f+FrZb/DOwMJLyytzcpSKITaXylEzrl8D43vpaMiAkHDpG2xJkBG8ZPWQrK2j/lNqeAjzSJYyLGxgcZW3pKtInykU0Hx1pRU7B5Pu/kiSoyAOcN4ViV0tANKtPItN0c38f1JTraaKaqIojOh5unY9bbm3fn4wpmIVYyNauqeXiI62RlzaDh9Wy/ST2E4jcxfvldI+MtvN12XomUcLPdFF9u1aqMjcUNdWf3v2pxQy27/af3i1vTAYSr2hKGpt/UBdGZnLO8znO7Vm5ziRbB/mbHfdRx3z5s93r1gq2gW+g2Wkcueox66AXaQwNEUYo+oy/oq/PN+eH8dH5V1uWlOuYmmjvO7z8Oc3p2</latexit>

↵ = n/m

<latexit sha1_base64="3tMqsiZSF69+UbplZtkvXq0Oc6w=">AAAETHicbVNdb9MwFPXWMUb52AaPvFhUSGOCqakQ8DhpZIA2YFTrNikJlePetKaOE2yHbTL5KbzCv+Gd/8EbQsL5ANZ0liIdn3PuR25yw5QzpbvdHwuLraUry1dXrrWv37h5a3Vt/faRSjJJYUATnsiTkCjgTMBAM83hJJVA4pDDcTjdKfTjTyAVS8ShPk8hiMlYsIhRoi01XFs/xH7IxtzDH0ogg+Fap7vVLQ+eB04NOqg+B8P1VscfJTSLQWjKiVKe0011YIjUjHLI236mICV0SsbgWShIDCowZe85vm+ZEY4SaR+hcclejDAkVuo8Dq0zJnqimlpBXqZ5mY6eBYaJNNMgaFUoyjjWCS4GgUdMAtX83AJCJbO9YjohklBtxzWTyR3su/0XfdfdewgZBzmWANPAKCKq6m3/L2y3/edgZyDhtb29TUESnUjjK53QCYePufG1ZESMOXCItCUuDdg0fspSUNb+Obc5BZzSJI6JGBkfZGzpCdEmyoc2HZxpRU3B5vmskyeqyACcN4QzVUqeE1Smoek4OX6E60v0frOZqoogOvd6F2M2Or0Hs3EFMxcrmZpW1Vzs4TpZWTNoeF3bb1IPofhNjF9+18i4c2+3m1ciJdzsNsVXO7UqY2NxQ93b/69a3FDLbv/p/eLWdADhqraEoek3dUF0Jmcsb/LcrpXTXKJ5cNTbcp5sOe8ed7a36wVbQXfRPbSBHPQUbaOX6AANEEWn6Av6ir61vrd+tn61flfWxYU65g6aOUvLfwDzrHvB</latexit>

T⇥j⇤

Page 24: lecture15 16 hashing

An ideal but useful assumption

Assumption: Simple uniform hashing

For any key k, its hash value is drawn uniformly at random from

Let be the length of the chain

Suppose we insert n elements and the simple uniform hashing assumption holds. For any j in , what is ?

<latexit sha1_base64="fF/hLU788KAXOsd8hzdwuoYWv+w=">AAAEUXicbVNbb9MwFPbWAqPj0oHECy8WFdKYuqmZEPA4aWSANmBUdJvUhMpxT9qojh1sB1Z5+TO8wr/hiZ/CG84FWNNZivT5u5zjnMRBwiKle71fK6uN5rXrN9ZuttZv3b5zt71x70SJVFIYUMGEPAuIAhZxGOhIMzhLJJA4YHAazPZz/fQLSBUJ/lHPE/BjMuFRGFGiLTVqP/BMr4udLvbYWGjVxfG2g71s1O70dnrFwsvAqUAHVet4tNHoeGNB0xi4powoNXR6ifYNkTqiDLKWlypICJ2RCQwt5CQG5ZviBTL82DJjHAppH65xwV5OGBIrNY8D64yJnqq6lpNXacNUhy98E/Ek1cBp2ShMGdYC59PA40gC1WxuAaEysmfFdEokodrObKGSOzhy+6/6rnvYhZSBnEiAmW8U4WX3lvcXtlreS7AzkPDW7t4nIIkW0nhKCzpl8DkznpYR4RMGDEJtiSsDW8ZLogSUtV9ktiaHr1TEMeFj44GMLT0l2oTZyJaDc62oydksW3QyofIKwFhNOFeFNHT80jQyHSfD27jahJ+26qXKBNHZcPdyZrOz+2QxlzNLWRmpWdnNxUNcFSt6+jWva88rqiHkv4nxiu8aGnfp7Q6yUqSEmYO6+Ga/UmVsLK6ph0f/VYtranHaf3o/39UdQJiqLEFg+nWdE53KBcu7LL9WTv0SLYOT3R3n2Y7z4Wlnb6+6YGvoIXqENpGDnqM99BodowGi6AJ9Q9/Rj8bPxu8maq6W1tWVKnMfLazm+h+6g3qH</latexit>

{0, 1, . . . ,m � 1}

<latexit sha1_base64="fF/hLU788KAXOsd8hzdwuoYWv+w=">AAAEUXicbVNbb9MwFPbWAqPj0oHECy8WFdKYuqmZEPA4aWSANmBUdJvUhMpxT9qojh1sB1Z5+TO8wr/hiZ/CG84FWNNZivT5u5zjnMRBwiKle71fK6uN5rXrN9ZuttZv3b5zt71x70SJVFIYUMGEPAuIAhZxGOhIMzhLJJA4YHAazPZz/fQLSBUJ/lHPE/BjMuFRGFGiLTVqP/BMr4udLvbYWGjVxfG2g71s1O70dnrFwsvAqUAHVet4tNHoeGNB0xi4powoNXR6ifYNkTqiDLKWlypICJ2RCQwt5CQG5ZviBTL82DJjHAppH65xwV5OGBIrNY8D64yJnqq6lpNXacNUhy98E/Ek1cBp2ShMGdYC59PA40gC1WxuAaEysmfFdEokodrObKGSOzhy+6/6rnvYhZSBnEiAmW8U4WX3lvcXtlreS7AzkPDW7t4nIIkW0nhKCzpl8DkznpYR4RMGDEJtiSsDW8ZLogSUtV9ktiaHr1TEMeFj44GMLT0l2oTZyJaDc62oydksW3QyofIKwFhNOFeFNHT80jQyHSfD27jahJ+26qXKBNHZcPdyZrOz+2QxlzNLWRmpWdnNxUNcFSt6+jWva88rqiHkv4nxiu8aGnfp7Q6yUqSEmYO6+Ga/UmVsLK6ph0f/VYtranHaf3o/39UdQJiqLEFg+nWdE53KBcu7LL9WTv0SLYOT3R3n2Y7z4Wlnb6+6YGvoIXqENpGDnqM99BodowGi6AJ9Q9/Rj8bPxu8maq6W1tWVKnMfLazm+h+6g3qH</latexit>

{0, 1, . . . ,m � 1}<latexit sha1_base64="gcRolWCd1Lwtt5s8pvmmy35BfzI=">AAAESnicbVPdbtMwGPXWAaP8bINLbiIqpDHB1FQTcFlpZIA2YFR0m5SEynG/tKaOE2wHNhk/CbfwNrwAr8Ed4gbnB1jTWbJ0fM75fvTJX5QxKlW3+2NpubVy6fKV1avta9dv3Fxb37h1JNNcEBiSlKXiJMISGOUwVFQxOMkE4CRicBzNdgv9+CMISVP+Vp1lECZ4wmlMCVaWGq2vBQlW0yjSnvH56H04Wu90t7vlcRaBW4MOqs/haKPVCcYpyRPgijAspe92MxVqLBQlDEw7yCVkmMzwBHwLOU5Ahrrs3Dj3LDN24lTYy5VTsucjNE6kPEsi6yz6lE2tIC/S/FzFT0JNeZYr4KQqFOfMUalTjMEZUwFEsTMLMBHU9uqQKRaYKDusuUze8MAbPBt43v4DyBmIiQCYhVpiXlVvB39hux08BTsDAS/t63UGAqtU6ECqlEwZfDA6UIJiPmHAIFaWuDBgSwcZzUBa+2djc3L4RNIkwXysAxCJpadY6diMbDo4VZLogjVm3slSWWQAxhrCqSwl3w0r00h3XOM8dOpH/G6rmaqKwMr4vfMxm53e/fm4glmIFVTOqmqe4zt1srJm2PB6tt+0HkLxTXT5N2Vs/2azpT1TiQQzvdcUX+zWqki0xQ11/+C/anFDLbv9pw+KV9MBmMnaYvdm0NQ5VrmYs7wyxq6V21yiRXDU23Yfbbtvdjr9fr1gq+gOuos2kYseoz56jg7REBGUoy/oK/rW+t762frV+l1Zl5fqmNto7qys/AE0NXvT</latexit>

E[nj ]

<latexit sha1_base64="rCqfm9gvs+RUR8XeUyqDiIeqo8w=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNUTYWAx0ojA7QBo9BtUpNVjnvSmjpOsB1YZfITeIV/w//gnTfEK884F2BNZynS5+9yzokThymjUnU631dWrXPnL1xcu9S6fOXqtevrGzcOZJIJAgOSsEQchVgCoxwGiioGR6kAHIcMDsPZdqEffgAhacLfqnkKQYwnnEaUYGWoN3z0brTudNqdctnLwK2Bg+q1P9qwHH+ckCwGrgjDUg7dTqoCjYWihEHe8jMJKSYzPIGhgRzHIANdzprbdwwztqNEmIcru2RPJzSOpZzHoXHGWE1lUyvIs7RhpqLHgaY8zRRwUjWKMmarxC5e3B5TAUSxuQGYCGpmtckUC0yUOZ6FSt5gz+s/7Xve7j3IGIiJAJgFWmJedW/5f2Gr5T8BcwYCXpjdqxQEVonQvlQJmTJ4n2tfCYr5hAGDSBnizMCW9lOagjT2T7mpyeEjSeIY87H2QcSGnmKlo3xkysGJkkQXbJ4vOlkiiwrAWEM4kaU0dIPKNNKOm9v37XoTHW81S1UJrPJh93Rm0+neXcwVzFJWUDmrunn20K6LlT2Dhtcz8yb1IRS/ifbL7xppb+ntdvJKJJjpnab4fLtWRawNbqi7e/9VgxtqOe0/vV/smg7ATNaWMNT9ps6xysSC5WWem2vlNi/RMjjott2Hbff1A6fXqy/YGrqFbqNN5KJHqIeeoX00QARN0Gf0BX21vlk/rJ/Wr8q6ulJnbqKFZf3+Az+1d2o=</latexit>nj<latexit sha1_base64="3tMqsiZSF69+UbplZtkvXq0Oc6w=">AAAETHicbVNdb9MwFPXWMUb52AaPvFhUSGOCqakQ8DhpZIA2YFTrNikJlePetKaOE2yHbTL5KbzCv+Gd/8EbQsL5ANZ0liIdn3PuR25yw5QzpbvdHwuLraUry1dXrrWv37h5a3Vt/faRSjJJYUATnsiTkCjgTMBAM83hJJVA4pDDcTjdKfTjTyAVS8ShPk8hiMlYsIhRoi01XFs/xH7IxtzDH0ogg+Fap7vVLQ+eB04NOqg+B8P1VscfJTSLQWjKiVKe0011YIjUjHLI236mICV0SsbgWShIDCowZe85vm+ZEY4SaR+hcclejDAkVuo8Dq0zJnqimlpBXqZ5mY6eBYaJNNMgaFUoyjjWCS4GgUdMAtX83AJCJbO9YjohklBtxzWTyR3su/0XfdfdewgZBzmWANPAKCKq6m3/L2y3/edgZyDhtb29TUESnUjjK53QCYePufG1ZESMOXCItCUuDdg0fspSUNb+Obc5BZzSJI6JGBkfZGzpCdEmyoc2HZxpRU3B5vmskyeqyACcN4QzVUqeE1Smoek4OX6E60v0frOZqoogOvd6F2M2Or0Hs3EFMxcrmZpW1Vzs4TpZWTNoeF3bb1IPofhNjF9+18i4c2+3m1ciJdzsNsVXO7UqY2NxQ93b/69a3FDLbv/p/eLWdADhqraEoek3dUF0Jmcsb/LcrpXTXKJ5cNTbcp5sOe8ed7a36wVbQXfRPbSBHPQUbaOX6AANEEWn6Av6ir61vrd+tn61flfWxYU65g6aOUvLfwDzrHvB</latexit>

T⇥j⇤

<latexit sha1_base64="yEATv0vhw5vqi0llpR/zGEcMaNI=">AAAEPXicbVPbbtMwGPYWDqOcNrjkJqJC6iaomgoBl5VGBmgDRkW3SU2oHPdPY9Vxgu3AKpNX4BbehufgAbhD3HKLcwDWdJYiff4O///HiYOUUal6ve9r69aFi5cub1xpXb12/cbNza1bRzLJBIERSVgiTgIsgVEOI0UVg5NUAI4DBsfBfLfQjz+AkDThb9UiBT/GM05DSrAqqKgz355stnvdXrnsVeDUoI3qdTjZstreNCFZDFwRhqUcO71U+RoLRQmDvOVlElJM5ngGYwM5jkH6uhw2t+8ZZmqHiTAPV3bJnk1oHEu5iAPjjLGKZFMryPO0cabCJ76mPM0UcFI1CjNmq8Qu3tyeUgFEsYUBmAhqZrVJhAUmypzPUiV3dOAOnw1dd/8+ZAzETADMfS0xr7q3vL+w1fKegjkDAS/N7nUKAqtEaE+qhEQM3ufaU4JiPmPAIFSGODewo72UpiCN/VNuanL4SJI4xnyqPRCxoSOsdJhPTDk4VZLogs3zZSdLZFEBGGsIp7KUxo5fmSa67eT2A7vehO92mqWqBFb5uH8202n3t5dzBbOSFVTOq26uPbbrYmVPv+F1zbxJfQjFb6K98ruG2l15u728Eglmeq8pvtitVRFrgxvq/sF/1eCGWk77Tx8Wu6YDMJO1JQj0sKlzrDKxZHmV5+ZaOc1LtAqO+l3nUdd587A9GNQXbAPdQXdRBznoMRqg5+gQjRBBEfqMvqCv1jfrh/XT+lVZ19fqzG20tKzffwAexXdh</latexit>

h(k)

Page 25: lecture15 16 hashing

Expected time for unsuccessful search

Proposition: The average-case cost of an unsuccessful search is .

(Cost model: hash costs one, examining an element costs 1)

<latexit sha1_base64="Yo1iqkboAzp7bOXtSVbd6M9NE6A=">AAAEQ3icbVPbbtMwGPYWDqOcNrjkxqJCGgOmZkLAZaWRAdqAUdFtoskqx/3TWnWcYDuwyuQtuIW34SF4Bu4Qt0g4B2BNZynS5+/w/3+cOEw5U7rT+b607Jw7f+HiyqXW5StXr11fXbtxoJJMUujThCfyKCQKOBPQ10xzOEolkDjkcBhOtwv98ANIxRLxVs9SCGIyFixilGhLvXPxPewTnk7IcLXd2eyUCy8CtwZtVK/94ZrT9kcJzWIQmnKi1MDtpDowRGpGOeQtP1OQEjolYxhYKEgMKjDlyDm+Y5kRjhJpH6FxyZ5OGBIrNYtD64yJnqimVpBnaYNMR08Cw0SaaRC0ahRlHOsEF++PR0wC1XxmAaGS2VkxnRBJqLanNFfJ6+95vWc9z9u9DxkHOZYA08AoIqruLf8vbLX8p2DPQMJLu3udgiQ6kcZXOqETDu9z42vJiBhz4BBpS5wZ2DB+ylJQ1v4ptzUFfKRJHBMxMj7I2NITok2UD205ONGKmoLN83knT1RRAThvCCeqlAZuUJmGpu3m+AGuN9HxRrNUlSA6H2ydzqy3t+7O5wpmISuZmlbdPDzAdbGyZ9DwenbepD6E4jcxfvldI+MtvN1OXomUcLPTFF9s16qMjcUNdXfvv2pxQy2n/af3il3TAYSr2hKGptfUBdGZnLO8ynN7rdzmJVoEB1ub7qNN983DdrdbX7AVdAvdRuvIRY9RFz1H+6iPKBLoM/qCvjrfnB/OT+dXZV1eqjM30dxyfv8BLY55dw==</latexit>

1 + ↵

Page 26: lecture15 16 hashing

Expected time for successful search

Proposition: The average-case cost when searching for the . inserted key (after all keys have been inserted) is:

<latexit sha1_base64="l2aQDAvH9efP3drJo/qrrL47yEE=">AAAESnicbVPdbtMwGPWWAaP8rINLbiIqpDHB1FQIuJw0MkAbMCq6TWqyynG/tFYdJ9gObDJ+Em7hbXgBXoM7xA3OD2NNZynS+c45308+2VHGqFTd7s+lZWflytVrq9dbN27eur3WXr9zKNNcEBiQlKXiOMISGOUwUFQxOM4E4CRicBTNdgr96BMISVP+QZ1lECZ4wmlMCVaWGrXX6IkOEqymItFqasyo3eludcvjLgKvBh1Un4PRutMJxinJE+CKMCzl0OtmKtRYKEoYmFaQS8gwmeEJDC3kOAEZ6nJy4z6wzNiNU2E/rtySvZihcSLlWRJZZzGkbGoFeZk2zFX8PNSUZ7kCTqpGcc5clbrFGtwxFUAUO7MAE0HtrC6ZYoGJssuaq+QP9v3+y77v7z2CnIGYCIBZqCXmVfdW8A+2WsELsDsQ8MZG7zIQWKVCB1KlZMrgo9GBEhTzCQMGsbLEpQmbOshoBtLavxhbk8NnkiYJ5mMdgEgsPcVKx2Zky8GpkkQXrDHzTpbKogIw1hBOZSkNvbAyjXTHM+5jtw7ik81mqSoDKzPsXczZ6PQezucVzEKuoHJWdfPdoVsXK3uGDa9v503rJRTXpLqYMtb+wt/tmkokmOndpvh6x5zfaYsb6t7+f9XihlpOe673i6jpAMxkbYki3W/qHKtczFnels/Kaz6iRXDY2/Kebnnvn3S2t+sHtoruoftoA3noGdpGr9ABGiCCcvQVfUPfnR/OL+e386eyLi/VOXfR3FlZ+Qsoy3xV</latexit>

i th <latexit sha1_base64="2mPEEydMFOXAqfKqD3TD1g6oTOM=">AAAEOnicbVPbbtMwGPYWDqOcNrjkJiJCGhNMTYWAy0ojA7QBW0W3SUmoHPdPa9Vxgu3AKpMn4BbehhfhljvELQ+AcwDWdJYiff4O///HiaOMUam63e8rq9aFi5cur13pXL12/cbN9Y1bRzLNBYEhSVkqTiIsgVEOQ0UVg5NMAE4iBsfRbKfUjz+AkDTlb9U8gzDBE05jSrAy1CEfrTvd7W617GXgNsBBzToYbVhOME5JngBXhGEpfbebqVBjoShhUHSCXEKGyQxPwDeQ4wRkqKtJC/ueYcZ2nArzcGVX7NmExomU8yQyzgSrqWxrJXme5ucqfhpqyrNcASd1ozhntkrt8rXtMRVAFJsbgImgZlabTLHARJnDWajkDfe9wfOB5+09gJyBmAiAWagl5nX3TvAXdjrBMzBnIOCV2b3JQGCVCh1IlZIpg/eFDpSgmE8YMIiVIc4NbOkgoxlIY/9UmJocPpI0STAf6wBEYugpVjouRqYcnCpJdMkWxaKTpbKsAIy1hFNZSb4b1qaRdtzCfmg3m/jdVrtUncCq8HtnM5tO7/5irmSWsoLKWd3Ns327KVb1DFtez8ybNodQ/iY6qL5rrL2lt9stapFgpnfb4sudRhWJNril7u3/Vw1uqdW0//RBuWs7ADPZWKJID9o6xyoXC5bXRWGuldu+RMvgqLftPt52Dx85/X5zwdbQHXQXbSIXPUF99AIdoCEiCNBn9AV9tb5ZP6yf1q/aurrSZG6jhWX9/gPsynaN</latexit>n<latexit sha1_base64="+xFBzuzxkzJxrHCyZJaob1lNzrU=">AAAEXnicbVNdb9MwFPW2MkZhbIMXJF4sKqQxoGoqBDxOGhmgDRgV3SY1oXLdm9aq4wTbgU3GP4Bfwyv8FN74KTgfwJrOUqTjc869177xHaWcKd3p/FpaXmlcWb26dq15/cb6zY3NrVvHKskkhT5NeCJPR0QBZwL6mmkOp6kEEo84nIxme7l+8hmkYon4oM9TCGMyESxilGhHDTdbXfwQB5Ek1Aj8GDNrYosDDp9wIRCeTolzddqdYuFF4FWghap1NNxaaQXjhGYxCE05UWrgdVIdGiI1oxxsM8gUpITOyAQGDgoSgwpNcRuL7ztmjKNEuk9oXLAXIwyJlTqPR84ZEz1VdS0nL9MGmY6eh4aJNNMgaFkoyjjWCc5bg8dMAtX83AFCJXNnxXRKXGu0a+BcJr9/6Pde9nz/4BFkHOREAsxCo4goqzeDv7DZDF6A64GEN273LgVJdCJNoHRCp67N1gRaMiImHDhE2hGXBuyYIGUpKGf/al1OAV9oEsdEjE0AMnb0lGgT2aFLB2daUZOz1s47eaLyDMB5TThThTTwwtI0NC3PuudQbaKPO/VUZQTRdtC9GLPd6j6Yj8uZhVjJ1Kys5uMBrpIVNcOa13fnTaom5M/EBMV/jYy/cLt9W4qUcLNfF1/vVaqMjcM19eDwv+pwTS1O+0/v5bu6AwhXlWU0Mr26LojO5JzlrbVurLz6EC2C427be9r23j9p7e5WA7aG7qJ7aBt56BnaRa/QEeojir6h7+gH+rnyu7HaWG9slNblpSrmNppbjTt/AAxTfrs=</latexit>

2 +n � i

m 2 + ↵

Page 27: lecture15 16 hashing

Expected time for successful search

Proposition: The average-case cost when searching for the . inserted key (after all keys have been inserted) is:

Corollary: The average-case cost when searching for an inserted key (also chosen uniformly at random from the set of n inserted keys) is:

<latexit sha1_base64="l2aQDAvH9efP3drJo/qrrL47yEE=">AAAESnicbVPdbtMwGPWWAaP8rINLbiIqpDHB1FQIuJw0MkAbMCq6TWqyynG/tFYdJ9gObDJ+Em7hbXgBXoM7xA3OD2NNZynS+c45308+2VHGqFTd7s+lZWflytVrq9dbN27eur3WXr9zKNNcEBiQlKXiOMISGOUwUFQxOM4E4CRicBTNdgr96BMISVP+QZ1lECZ4wmlMCVaWGrXX6IkOEqymItFqasyo3eludcvjLgKvBh1Un4PRutMJxinJE+CKMCzl0OtmKtRYKEoYmFaQS8gwmeEJDC3kOAEZ6nJy4z6wzNiNU2E/rtySvZihcSLlWRJZZzGkbGoFeZk2zFX8PNSUZ7kCTqpGcc5clbrFGtwxFUAUO7MAE0HtrC6ZYoGJssuaq+QP9v3+y77v7z2CnIGYCIBZqCXmVfdW8A+2WsELsDsQ8MZG7zIQWKVCB1KlZMrgo9GBEhTzCQMGsbLEpQmbOshoBtLavxhbk8NnkiYJ5mMdgEgsPcVKx2Zky8GpkkQXrDHzTpbKogIw1hBOZSkNvbAyjXTHM+5jtw7ik81mqSoDKzPsXczZ6PQezucVzEKuoHJWdfPdoVsXK3uGDa9v503rJRTXpLqYMtb+wt/tmkokmOndpvh6x5zfaYsb6t7+f9XihlpOe673i6jpAMxkbYki3W/qHKtczFnels/Kaz6iRXDY2/Kebnnvn3S2t+sHtoruoftoA3noGdpGr9ABGiCCcvQVfUPfnR/OL+e386eyLi/VOXfR3FlZ+Qsoy3xV</latexit>

i th <latexit sha1_base64="2mPEEydMFOXAqfKqD3TD1g6oTOM=">AAAEOnicbVPbbtMwGPYWDqOcNrjkJiJCGhNMTYWAy0ojA7QBW0W3SUmoHPdPa9Vxgu3AKpMn4BbehhfhljvELQ+AcwDWdJYiff4O///HiaOMUam63e8rq9aFi5cur13pXL12/cbN9Y1bRzLNBYEhSVkqTiIsgVEOQ0UVg5NMAE4iBsfRbKfUjz+AkDTlb9U8gzDBE05jSrAy1CEfrTvd7W617GXgNsBBzToYbVhOME5JngBXhGEpfbebqVBjoShhUHSCXEKGyQxPwDeQ4wRkqKtJC/ueYcZ2nArzcGVX7NmExomU8yQyzgSrqWxrJXme5ucqfhpqyrNcASd1ozhntkrt8rXtMRVAFJsbgImgZlabTLHARJnDWajkDfe9wfOB5+09gJyBmAiAWagl5nX3TvAXdjrBMzBnIOCV2b3JQGCVCh1IlZIpg/eFDpSgmE8YMIiVIc4NbOkgoxlIY/9UmJocPpI0STAf6wBEYugpVjouRqYcnCpJdMkWxaKTpbKsAIy1hFNZSb4b1qaRdtzCfmg3m/jdVrtUncCq8HtnM5tO7/5irmSWsoLKWd3Ns327KVb1DFtez8ybNodQ/iY6qL5rrL2lt9stapFgpnfb4sudRhWJNril7u3/Vw1uqdW0//RBuWs7ADPZWKJID9o6xyoXC5bXRWGuldu+RMvgqLftPt52Dx85/X5zwdbQHXQXbSIXPUF99AIdoCEiCNBn9AV9tb5ZP6yf1q/aurrSZG6jhWX9/gPsynaN</latexit>n<latexit sha1_base64="+xFBzuzxkzJxrHCyZJaob1lNzrU=">AAAEXnicbVNdb9MwFPW2MkZhbIMXJF4sKqQxoGoqBDxOGhmgDRgV3SY1oXLdm9aq4wTbgU3GP4Bfwyv8FN74KTgfwJrOUqTjc869177xHaWcKd3p/FpaXmlcWb26dq15/cb6zY3NrVvHKskkhT5NeCJPR0QBZwL6mmkOp6kEEo84nIxme7l+8hmkYon4oM9TCGMyESxilGhHDTdbXfwQB5Ek1Aj8GDNrYosDDp9wIRCeTolzddqdYuFF4FWghap1NNxaaQXjhGYxCE05UWrgdVIdGiI1oxxsM8gUpITOyAQGDgoSgwpNcRuL7ztmjKNEuk9oXLAXIwyJlTqPR84ZEz1VdS0nL9MGmY6eh4aJNNMgaFkoyjjWCc5bg8dMAtX83AFCJXNnxXRKXGu0a+BcJr9/6Pde9nz/4BFkHOREAsxCo4goqzeDv7DZDF6A64GEN273LgVJdCJNoHRCp67N1gRaMiImHDhE2hGXBuyYIGUpKGf/al1OAV9oEsdEjE0AMnb0lGgT2aFLB2daUZOz1s47eaLyDMB5TThThTTwwtI0NC3PuudQbaKPO/VUZQTRdtC9GLPd6j6Yj8uZhVjJ1Kys5uMBrpIVNcOa13fnTaom5M/EBMV/jYy/cLt9W4qUcLNfF1/vVaqMjcM19eDwv+pwTS1O+0/v5bu6AwhXlWU0Mr26LojO5JzlrbVurLz6EC2C427be9r23j9p7e5WA7aG7qJ7aBt56BnaRa/QEeojir6h7+gH+rnyu7HaWG9slNblpSrmNppbjTt/AAxTfrs=</latexit>

2 +n � i

m 2 + ↵

<latexit sha1_base64="ZUtz9Q0Ru3Jjts4Au6WBRPnjkw4=">AAAEanicbVPdbtMwFPa2AqP8beMK7caiIG2DlaZCwOWkkQHagFHRbVITKsc9aaM6TrAd2GT8GDwNt/AQvAMPgfMDW9NZivT5+znHOYmDlEVSdTq/FxaXGleuXlu+3rxx89btOyura0cyyQSFPk1YIk4CIoFFHPoqUgxOUgEkDhgcB9PdXD/+AkJGCf+ozlLwYzLmURhRoiw1XHnSxY+wFwpC9QbfdjaN7uLYYI/BZ3wueYSlE2I1M1xpddqdYuF54FSghap1OFxdanmjhGYxcEUZkXLgdFLlayJURBmYppdJSAmdkjEMLOQkBunr4s0MfmiZEQ4TYR+ucMFeTGgSS3kWB9YZEzWRdS0nL9MGmQpf+DriaaaA07JRmDGsEpyPCY8iAVSxMwsIFZE9K6YTYmeh7DBnKrn9A7f3que6+48hYyDGAmDqa0l42b3p/YPNpvcS7AwEvLW79ykIohKhPakSOrEDN9pTIiJ8zIBBqCxxaWBLe2mUgrT2b8bW5PCVJnFM+Eh7IGJLT4jSoRnacnCqJNU5a8yskyUyrwCM1YRTWUgDxy9NQ91yDN7G1Sb8tFUvVSaIMoPuxcxGq7s5m8uZuayI5LTs5uIBrooVPf2a17XnTaoh5L+J9orvGmp37u32TClSwvReXXyzW6ki1hbX1P2Dc9Ximlqc9r/ey3d1BxAmK0sQ6F5d50RlYsbyzuTXyqlfonlw1G07z9rOh6etnZ3qgi2jdXQfbSAHPUc76DU6RH1E0Xf0A/1Ev5b+NNYa9xrrpXVxocrcRTOr8eAv2fKDeA==</latexit>

2 +(n � 1)

2m 2 +

2

Page 28: lecture15 16 hashing

How can we design a good hash function?

In some situations, simple uniform hashing assumption might be plausible

Otherwise, if we want to commit a single function, there are some heuristics which tend to work well in practice

• Division method (“modular hashing”)

• Multiplication method

Page 29: lecture15 16 hashing

Division method

In the division method, we simply divide by m and take the remainder:

<latexit sha1_base64="w+S4VgOQkW1cXrL9eoe7JFt3q4w=">AAAES3icbVPdbtMwGPXWDUb56+CSG4sKaZtgaiYE3CBVGhmgDRgV3SY1WeW4X1qrdhJsZ6wyeRNu4W14AJ6DO8QFzg+wprMU6fic8/3kS74g4UzpTufH0nJjZfXK1bVrzes3bt663Vq/c6TiVFLo05jH8iQgCjiLoK+Z5nCSSCAi4HAcTHdz/fgMpGJx9EHPEvAFGUcsZJRoSw1brcnGdBM/x1PsBSIeYTFstTvbneLgReBUoI2qczhcb7S9UUxTAZGmnCg1cDqJ9g2RmlEOWdNLFSSETskYBhZGRIDyTdF6hh9YZoTDWNon0rhgL0YYIpSaicA6BdETVddy8jJtkOrwmW9YlKQaIloWClOOdYzzOeARk0A1n1lAqGS2V0wnRBKq7bTmMrn9A7f3sue6+w8h5SDHEmDqG0WisnrT+wubTe8F2BlIeGNv7xKQRMfSeErHdMLhY2Y8LRmJxhw4hNoSlwZsGS9hCShr/5zZnBF8orEQJBoZD6Sw9IRoE2ZDmw7OtaImZ7Ns3sljlWcAzmvCuSqkgeOXpqFpOxl+hKtLeLpVT1VGEJ0Ndi7GbLR3NufjcmYhVjI1Lau5eICrZEVNv+Z1bb9xNYT8NzFe8V1D4y683V5WipRws1cXX+9WqhTG4pq6f/BftbimFt3+03v5re4AwlVlCQLTq+sR0amcs7zNMrtWTn2JFsHRzrbzZNt5/7jd7VYLtobuoftoAznoKeqiV+gQ9RFFZ+gL+oq+Nb43fjZ+NX6X1uWlKuYumjsrq38AinR6ng==</latexit>

h(k) = k mod m

Page 30: lecture15 16 hashing

Multiplication method

Multiplication Method:

(1) Select a constant A such that 0 < A < 1

(2) Take fractional part of k A

(3) Multiply by m and truncate<latexit sha1_base64="uQlBcSgooBLNJySq4JIrfzlP69E=">AAAEYXicbVPdbtMwGPW2Alv568blbiwqUDdB1UwIuEEaGhmgDRgV3SY1oXLcL21UOw62A5tM3oCn4RZehGteBOcHWNN9V8fnnO/HX+IgYZHSvd6vpeWVxpWr11bXmtdv3Lx1u7W+caxEKikMqGBCngZEAYtiGOhIMzhNJBAeMDgJZnu5fvIZpIpE/EGfJ+BzMomjMKJEW2rUuj/tzLbwM+yxkAkhMcedGX6OvYCLMXa2sCcLftRq97q9IvAicCrQRlUcjdZX2t5Y0JRDrCkjSg2dXqJ9Q6SOKIOs6aUKEkJnZAJDC2PCQfmmuFCG71lmjEM7TyhijQv2YoYhXKlzHlgnJ3qq6lpOXqYNUx0+9U0UJ6mGmJaNwpRhLXC+HTyOJFDNzi0gVEZ2VkynRBKq7Q7nKrmDQ7f/su+6Bw8gZSAnEmDmG0XisnvT+wubTe8F2B1IeGNP7xKQRAtpPKUFnTL4lBlPy4jEEwYMQm2JSxO2jZdECShr/5rZmjF8oYJzEo+NB5Jbekq0CbORLQdnWlGTs1k272RC5RWAsZpwpgpp6PilaWTaToYf4uoQftyulyoziM6GOxdzOu2drfm8nFnIlZGald1cPMRVsaKnX/O6dl5RLSH/TYxXfNfQuAu3289KkRJm9uvi671KldxYXFMPDv+rFtfUYtp/ej8/1R1AmKosQWD6dT0mOpVzlrdZZp+VU39Ei+B4p+s87jrvH7V3d6sHtoo20V3UQQ56gnbRK3SEBoiib+g7+oF+rvxurDVajY3SurxU5dxBc9HY/AOClH+a</latexit>

h(k) = bm(kA mod 1)c

Page 31: lecture15 16 hashing

Multiplication method

Multiplication Method:

(1) Select a constant A such that 0 < A < 1

(2) Take fractional part of k A

(3) Multiply by m and truncate

How to choose A?

tends to work well

(distributes nearby integers roughly uniformly in [0, 1])

<latexit sha1_base64="uQlBcSgooBLNJySq4JIrfzlP69E=">AAAEYXicbVPdbtMwGPW2Alv568blbiwqUDdB1UwIuEEaGhmgDRgV3SY1oXLcL21UOw62A5tM3oCn4RZehGteBOcHWNN9V8fnnO/HX+IgYZHSvd6vpeWVxpWr11bXmtdv3Lx1u7W+caxEKikMqGBCngZEAYtiGOhIMzhNJBAeMDgJZnu5fvIZpIpE/EGfJ+BzMomjMKJEW2rUuj/tzLbwM+yxkAkhMcedGX6OvYCLMXa2sCcLftRq97q9IvAicCrQRlUcjdZX2t5Y0JRDrCkjSg2dXqJ9Q6SOKIOs6aUKEkJnZAJDC2PCQfmmuFCG71lmjEM7TyhijQv2YoYhXKlzHlgnJ3qq6lpOXqYNUx0+9U0UJ6mGmJaNwpRhLXC+HTyOJFDNzi0gVEZ2VkynRBKq7Q7nKrmDQ7f/su+6Bw8gZSAnEmDmG0XisnvT+wubTe8F2B1IeGNP7xKQRAtpPKUFnTL4lBlPy4jEEwYMQm2JSxO2jZdECShr/5rZmjF8oYJzEo+NB5Jbekq0CbORLQdnWlGTs1k272RC5RWAsZpwpgpp6PilaWTaToYf4uoQftyulyoziM6GOxdzOu2drfm8nFnIlZGald1cPMRVsaKnX/O6dl5RLSH/TYxXfNfQuAu3289KkRJm9uvi671KldxYXFMPDv+rFtfUYtp/ej8/1R1AmKosQWD6dT0mOpVzlrdZZp+VU39Ei+B4p+s87jrvH7V3d6sHtoo20V3UQQ56gnbRK3SEBoiib+g7+oF+rvxurDVajY3SurxU5dxBc9HY/AOClH+a</latexit>

h(k) = bm(kA mod 1)c

<latexit sha1_base64="5GyS+SEvB5mJ8WQ/zDAuvk3dC+Y=">AAAEXnicbVPdbtMwFPa2MkZhbIMbJG4sKqQxQUk62MoF0tDIAG3AqOg2qSmV4560Vp0fbGdsMnkAnoZbeBTueBScH2BNZynS5+/nHOck9mLOpLKsX3PzC7Uri1eXrtWv31i+ubK6dutIRomg0KURj8SJRyRwFkJXMcXhJBZAAo/DsTfZzfTjUxCSReFHdR5DPyCjkPmMEmWowWrjBX6O7cfuKRHxmBlsNbfstrW5+azd3n7q8mGkpHFZTStfeBbYJWigch0O1hYa7jCiSQChopxI2bOtWPU1EYpRDmndTSTEhE7ICHoGhiQA2df526T4vmGG2I+EeUKFc/ZiQpNAyvPAM86AqLGsahl5mdZLlN/uaxbGiYKQFo38hGMV4Ww0eMgEUMXPDSBUMHNWTMdEEKrMAKcqOd0Dp/Oq4zj7DyHhIEYCYNLXkoRF97r7F9br7kswMxDw1uzexyCIioR2pYromMPnVLtKMBKOOHDwlSEuDWxoN2YxSGP/mpqaIXyhURCQcKhdEIGhx0RpPx2YcnCmJNUZm6bTTh7JrAJwXhHOZC717H5hGuiGneJHuNz4nzaqpYoEUWmvdTGz3mg9mM5lzExWMDkpujm4h8tiec9+xeuY80blELLfRLv5d/W1M/N2e2khUsL1XlV8s1uqItAGV9T9g/+qwRU1P+0/vZPtqg4gXJYWz9Odqh4SlYgpy7s0NdfKrl6iWXDUatpbTfvDk8bOTnnBltBddA+tIxttox30Gh2iLqLoG/qOfqCfC79ri7Xl2kphnZ8rM7fR1Krd+QOMKX1T</latexit>

A = 1/' = 0.61803398875 . . .

Page 32: lecture15 16 hashing

Universal hashing

The previous methods might work well in practice, but we do not have rigorous guarantees for them

Instead, we consider an idea called universal hashing

A universal hash family is a collection of hash functions . such that, for any pair of keys j, k, at most hash functions satisfy

How can we use this?

If we select h uniformly at random from , then for each pair of keys j, k, we have:

<latexit sha1_base64="zih5XZc/motLMeMpKxqQkVo7Byk=">AAAEY3icbVPrbtMwFPa2AqPjsg3+ISSLCmlMXdVMCBC/Jo0M0AaMim6Tmqxy3JPWqhMH22GbTF6Bp+EvvAcPwHvgXIA1naVIn7/LOc5JHCScKd3t/lpYXGpcu35j+WZz5dbtO3dX19aPlEglhT4VXMiTgCjgLIa+ZprDSSKBRAGH42C6m+vHX0AqJuJP+iIBPyLjmIWMEm2p4erGBL/EfexJNp5oIqU4w57ptrHTxh4fCa3aONpysJcNV1vdTrdYeB44FWihah0O15Za3kjQNIJYU06UGjjdRPuGSM0oh6zppQoSQqdkDAMLYxKB8k3xShl+bJkRDoW0T6xxwV5OGBIpdREF1hkRPVF1LSev0gapDl/4hsVJqiGmZaMw5VgLnM8Hj5gEqvmFBYRKZs+K6YRIQrWd4kwlt3/g9l73XHe/DSkHOZYAU98oEpfdm95f2Gx6r8DOQMI7u/uQgCRaSOMpLeiEw+fMeFoyEo85cAi1Ja4MbBovYQkoa/+a2ZoxnFERRSQeGQ9kZOkJ0SbMhrYcnGtFTc5m2ayTC5VXAM5rwrkqpIHjl6ahaTkZ3sLVJjzdrJcqE0Rng+3LmY3W9pPZXM7MZSVT07Kbiwe4Klb09Gte155XVEPIfxPjFd81NO7c2+1lpUgJN3t18e1upcrIWFxT9w/+qxbX1OK0//Revqs7gHBVWYLA9Op6THQqZyzvs/xaOfVLNA+OtjvOs47z8WlrZ6e6YMvoAXqENpCDnqMd9AYdoj6i6Bv6jn6gn0u/GyuN9cb90rq4UGXuoZnVePgHhEaAWA==</latexit>

h : U ! {0, 1, . . . ,m � 1}<latexit sha1_base64="zY13h4nWO5apk70r/SfHPh31jSk=">AAAETHicbVNdb9MwFPXWMUb52uCRF4sKaUwwmgkBj5NGxtAGjIpuk5qsctyb1qrjBNthmzz/FF7h3/DO/+ANIeGkYazpLEU695xzP3JlRxlnSrfbP+fmGwvXFq8v3WjevHX7zt3llXsHKs0lhS5NeSqPIqKAMwFdzTSHo0wCSSIOh9F4q9APv4BULBWf9FkGYUKGgsWMEu2o/vLKeZAQPaKEmx17jp/hpL/caq+3y4NngVeBFqrOfn+l0QoGKc0TEJpyolTPa2c6NERqRjnYZpAryAgdkyH0HBQkARWacnaLHzlmgONUuk9oXLKXMwxJlDpLIucsBlV1rSCv0nq5jl+Fhoks1yDopFGcc6xTXCwCD5gEqvmZA4RK5mbFdEQkodqta6qS393zO286vr/7BHIOcigBxqFRREy6N4N/sNkMXoPbgYR3LvqQgSQ6lSZQOqUjDp+tCbRkRAw5cIi1I65MWDNBxjJQzn5uXU0BJzRNEiIGJgCZOHpEtIlt35WDU62oKVhrp508VUUF4LwmnKpS6nnhxNQ3Lc/ip7gK4uO1eqlJBtG2t3E5Z7W18Xg6r2BmciVT40k3H/dwVazsGda8vps3rZZQXBNTXk4VG3/m77atubi523Xx7ValysQ4XFN39/6rDtfUctoLvVNEdQcQripLFJlOXRdE53LK8t5a96y8+iOaBQcb696Lde/j89bmZvXAltAD9BCtIg+9RJtoB+2jLqLoBH1F39D3xo/Gr8bvxp+JdX6uyrmPps7C4l/STXw7</latexit>

|H|/m<latexit sha1_base64="5p9M6BJwbbjAG4EX4Kwn4Y9ZLhA=">AAAETHicbVNdb9MwFPXWMUb5WAuPvFhUSGOCqakQ8FhpZAxtwKjoNqkJlePetFYdJ9gOW2XyU3iFf8M7/4M3hISThrGmsxTp3HPO/ciVHSScKd1u/1xZra1dW7++caN+89btO5uN5t1jFaeSQp/GPJanAVHAmYC+ZprDaSKBRAGHk2C6m+snn0EqFosPepaAH5GxYCGjRFtq2GhOsMcE9iKiJ5Rws58NG632Trs4eBk4JWih8hwNm7WWN4ppGoHQlBOlBk470b4hUjPKIat7qYKE0CkZw8BCQSJQvilmz/BDy4xwGEv7CY0L9nKGIZFSsyiwznxGVdVy8iptkOrwhW+YSFINgs4bhSnHOsb5IvCISaCazywgVDI7K6YTIgnVdl0Lldz+odt71XPdg8eQcpBjCTD1jSJi3r3u/YP1uvcS7A4kvLHRuwQk0bE0ntIxnXD4lBlPS0bEmAOHUFviyoRt4yUsAWXtXzJbU8AZjaOIiJHxQEaWnhBtwmxoy8G5VtTkbJYtOnms8grAeUU4V4U0cPy5aWhaToaf4DIIP25XS80ziM4Gncs5W63Oo8W8nFnKlUxN591cPMBlsaKnX/G6dt64XEJ+TUxxL1Vo3KW/28vMxaXdq4qvd0tVRsbiinpw+F+1uKIW017ovTyqOoBwVVqCwPSquiA6lQuWt1n+rJzqI1oGx50d59mO8/5pq9stH9gGuo8eoC3koOeoi/bREeojis7QV/QNfa/9qP2q/a79mVtXV8qce2jhrK3/BeWQfEI=</latexit>

h 2 H<latexit sha1_base64="QCj9gFJEEIgSLVk8AI3PbEXQWds=">AAAERHicbVPLbtNAFJ3WPEp4tbBkMyJCSiqI4ggBG6RKxQXUAiUibSXbROPJdWIy9piZMbQa/Bls4W/4B/6BHWKLGD+AxulIls6cc+7D175ByiKp+v3vK6vWufMXLq5dal2+cvXa9fWNGweSZ4LCiHLGxVFAJLAogZGKFIOjVACJAwaHwXy70A8/gJART96okxT8mEyTKIwoUYZyZ513XfwYzzrz7ni93e/1y4OXgV2DNqrP/njDansTTrMYEkUZkdK1+6nyNREqogzylpdJSAmdkym4BiYkBunrsucc3zHMBIdcmCdRuGRPR2gSS3kSB8YZEzWTTa0gz9LcTIWPfB0laaYgoVWhMGNYcVwMAE8iAVSxEwMIFZHpFdMZEYQqM6aFTM5ozxk+HTrO7l3IGIipAJj7WpKkqt7y/sJWy3sCZgYCXpjbqxQEUVxoTypOZwze59pTIiLJlAGDUBnizIBN7aVRCtLYP+UmZwIfKY9jkky0ByI29IwoHeZjkw6OlaS6YPN80cm4LDIAYw3hWJaSa/uVaazbdo7v4foSvt1spqoiiMrdwemYTnvQXYwrmKVYEcl5Vc3BLq6TlTX9htcx/fJ6CMVvor3yu4baWXq7nbwSKWF6pyk+365VEWuDG+ru3n/V4IZadvtPHxa3pgMIk7UlCPSwqSdEZWLB8jLPzVrZzSVaBgeDnv2gZ7++397aqhdsDd1Ct1EH2egh2kLP0D4aIYo4+oy+oK/WN+uH9dP6VVlXV+qYm2jhWL//AHoUeUc=</latexit>

h(j) = h(k)

<latexit sha1_base64="Eq1gCkqpdHUf0+iC6/F70ReRbhw=">AAAERHicbVPdbtMwGPUWfkb52QaX3ERUSGOCqpkQcDlpZAxtwKjoNikJleN+aa06drAdWGXyGNzC2/AOvAN3iFuEk4axprMU6XznnO8nn+w4Y1TpbvfH0rJz6fKVqyvXWtdv3Ly1urZ++0iJXBLoE8GEPImxAkY59DXVDE4yCTiNGRzHk51SP/4IUlHB3+lpBlGKR5wmlGBtqSBMsR4TzMxeMVhrdzvd6riLwKtBG9XncLDutMOhIHkKXBOGlQq8bqYjg6WmhEHRCnMFGSYTPILAQo5TUJGpZi7c+5YZuomQ9uPardjzGQanSk3T2DrLGVVTK8mLtCDXybPIUJ7lGjiZNUpy5mrhlgtwh1QC0WxqASaS2lldMsYSE23XNFfJ7x/4vRc9399/CDkDOZIAk8gozGfdW+E/2GqFz8HuQMIrG73JQGItpAmVFmTM4ENhQi0p5iMGDBJtiQsTNk2Y0QyUtX8ubE0On4hIU8yHJgSZWnqMtUmKgS0Hp1oRU7JFMe9kQpUVgLGGcKoqKfCimWlg2l7hPnLrIHm/2Sw1y8C6CLbO52y0tx7M55XMQq6kajLr5ruBWxerekYNr2/nFfUSymtiqnupEuMv/N1uYc4u7W5TfLlTqzI1FjfU/YP/qsUNtZr2TO+VUdMBmKnaEsem19Q51rmcs7wuymflNR/RIjja6nhPOt7bx+3t7fqBraC76B7aQB56irbRHjpEfUSQQF/QV/TN+e78dH45v2fW5aU65w6aO86fvwMEevk=</latexit>

H

<latexit sha1_base64="Eq1gCkqpdHUf0+iC6/F70ReRbhw=">AAAERHicbVPdbtMwGPUWfkb52QaX3ERUSGOCqpkQcDlpZAxtwKjoNikJleN+aa06drAdWGXyGNzC2/AOvAN3iFuEk4axprMU6XznnO8nn+w4Y1TpbvfH0rJz6fKVqyvXWtdv3Ly1urZ++0iJXBLoE8GEPImxAkY59DXVDE4yCTiNGRzHk51SP/4IUlHB3+lpBlGKR5wmlGBtqSBMsR4TzMxeMVhrdzvd6riLwKtBG9XncLDutMOhIHkKXBOGlQq8bqYjg6WmhEHRCnMFGSYTPILAQo5TUJGpZi7c+5YZuomQ9uPardjzGQanSk3T2DrLGVVTK8mLtCDXybPIUJ7lGjiZNUpy5mrhlgtwh1QC0WxqASaS2lldMsYSE23XNFfJ7x/4vRc9399/CDkDOZIAk8gozGfdW+E/2GqFz8HuQMIrG73JQGItpAmVFmTM4ENhQi0p5iMGDBJtiQsTNk2Y0QyUtX8ubE0On4hIU8yHJgSZWnqMtUmKgS0Hp1oRU7JFMe9kQpUVgLGGcKoqKfCimWlg2l7hPnLrIHm/2Sw1y8C6CLbO52y0tx7M55XMQq6kajLr5ruBWxerekYNr2/nFfUSymtiqnupEuMv/N1uYc4u7W5TfLlTqzI1FjfU/YP/qsUNtZr2TO+VUdMBmKnaEsem19Q51rmcs7wuymflNR/RIjja6nhPOt7bx+3t7fqBraC76B7aQB56irbRHjpEfUSQQF/QV/TN+e78dH45v2fW5aU65w6aO86fvwMEevk=</latexit>

H

<latexit sha1_base64="Fmr9SoBDsuQWfmFpkGvtwRMab+E=">AAAEYXicbVNdb9MwFPW2Alv56sbjXiwqUDfBaCYEvCBNGhmgDRgV3SY1WeW4N62p4wTbgU0m/4Bfwyv8EZ75IzgfwJrOUuTjc869176xg4QzpbvdXwuLS40rV68trzSv37h563Zrde1Ixamk0Kcxj+VJQBRwJqCvmeZwkkggUcDhOJju5vrxZ5CKxeKDPk/Aj8hYsJBRoi01bN33DiX2AjbmHTzpfNzAz+003SgoaScOn7DzKBq22t2tbjHwPHAq0EbVOByuLrW9UUzTCISmnCg1cLqJ9g2RmlEOWdNLFSSETskYBhYKEoHyTXGgDN+zzAiHsbSf0LhgL0YYEil1HgXWGRE9UXUtJy/TBqkOn/mGiSTVIGhZKEw51jHOu4NHTALV/NwCQiWze8V0QiSh2vZwJpPbP3B7L3uuu/8AUg5yLAGmvlFElNWb3l/YbHovwPZAwhu7epeAJDqWxlM6phPb38x4WjIixhw4hNoSlwZsGi9hCShr/5rZnAK+0DiKiBgZD2Rk6QnRJsyGNh2caUVNzmbZrJPHKs8AnNeEM1VIA8cvTUPTdjL8EFeL8HSznqqMIDobbF+M6bS3N2bjcmYuVjI1Lau5eICrZEVNv+Z17X7jqgn5NTFe8V9D486dbi8rRUq42auLr3crVUbG4pq6f/BftbimFrv9p/fyVd0BhKvKEgSmV9cF0amcsbzNMvusnPojmgdH21vOky3n/eP2zk71wJbROrqLOshBT9EOeoUOUR9R9A19Rz/Qz6XfjZVGq7FWWhcXqpg7aGY01v8ALQl+/g==</latexit>

Pr�h(j) = h(k)

� 1/m

Page 33: lecture15 16 hashing

Average-case analysis for universal hashing

Proposition: Let h be drawn uniformly at random from a universal family of hash functions. Consider an arbitrary key k. (i) If key k is not in the table, then the expected length of the list is at most .

(ii) Otherwise, the expected length of the list is at most .

<latexit sha1_base64="44gXwatJJymrWXYSRkMDemuZsfg=">AAAEP3icbVPbbtMwGPYWDqOcNrjkJiJCGhNUTYWAy0ojA7QBo6LdpCZUjvunNXWcYDuwyuQduIW34TF4Au4Qt9zhHIA1naVIn7/D//9x4jBlVKpO5/vaunXu/IWLG5dal69cvXZ9c+vGUCaZIDAgCUvEcYglMMphoKhicJwKwHHI4Cic7xb60QcQkib8jVqkEMR4ymlECVaGGvqYpTM83nQ67U657FXg1sBB9Tocb1mOP0lIFgNXhGEpR24nVYHGQlHCIG/5mYQUkzmewshAjmOQgS7Hze07hpnYUSLMw5VdsqcTGsdSLuLQOGOsZrKpFeRZ2ihT0eNAU55mCjipGkUZs1ViF+9uT6gAotjCAEwENbPaZIYFJsqc0FIlb3Dg9Z/2PW//HmQMxFQAzAMtMa+6t/y/sNXyn4A5AwEvzO5VCgKrRGhfqoTMGLzPta8ExXzKgEGkDHFmYEf7KU1BGvun3NTk8JEkcYz5RPsgYkPPsNJRPjbl4ERJogs2z5edLJFFBWCsIZzIUhq5QWUaa8fN7ft2vYne7jRLVQms8lH3dGbb6d5dzhXMSlZQOa+6efbIrouVPYOG1zPzJvUhFL+J9svvGmlv5e328kokmOm9pvh8t1ZFrA1uqPsH/1WDG2o57T+9X+yaDsBM1pYw1P2mzrHKxJLlZZ6ba+U2L9EqGHbb7sO2+/qB0+vVF2wD3UK30TZy0SPUQ8/QIRoggt6hz+gL+mp9s35YP61flXV9rc7cREvL+v0HNUd4sw==</latexit>↵<latexit sha1_base64="/G74V83XjY684SKAIPHPztfb8+s=">AAAEQHicbVPbbtMwGPYWDqOcNrjkJqJC6iaYmmoCLiuNDNAGjGrdJiWhctw/rVXHCbYDq0weglt4G96CN+AOccsVzgFY01mK9Pk7/P8fJw5TRqXqdr+vrFqXLl+5unatdf3GzVu31zfuHMskEwSGJGGJOA2xBEY5DBVVDE5TATgOGZyEs91CP/kAQtKEH6l5CkGMJ5xGlGBlqJMjb9qZbQaj9XZ3u1suexk4NWijeh2ONqy2P05IFgNXhGEpPaebqkBjoShhkLf8TEKKyQxPwDOQ4xhkoMt5c/uBYcZ2lAjzcGWX7PmExrGU8zg0zhirqWxqBXmR5mUqehpoytNMASdVoyhjtkrs4uXtMRVAFJsbgImgZlabTLHARJkjWqjkDg/cwfOB6+4/hIyBmAiAWaAl5lX3lv8Xtlr+MzBnIOCV2b1JQWCVCO1LlZApg/e59pWgmE8YMIiUIS4MbGk/pSlIY/+Um5ocPpIkjjEfax9EbOgpVjrKR6YcnClJdMHm+aKTJbKoAIw1hDNZSp4TVKaRbju5/ciuN9G7rWapKoFV7vXOZzrt3uZirmCWsoLKWdXNtT27Llb2DBpe18yb1IdQ/CbaL79rpN2lt9vLK5Fgpvea4svdWhWxNrih7h/8Vw1uqOW0//RBsWs6ADNZW8JQD5o6xyoTC5bXeW6uldO8RMvguLftPN7eebvT7vfrC7aG7qH7qIMc9AT10Qt0iIaIoBn6jL6gr9Y364f10/pVWVdX6sxdtLCs338Anpx4jg==</latexit>

T [h(k)]<latexit sha1_base64="Yo1iqkboAzp7bOXtSVbd6M9NE6A=">AAAEQ3icbVPbbtMwGPYWDqOcNrjkxqJCGgOmZkLAZaWRAdqAUdFtoskqx/3TWnWcYDuwyuQtuIW34SF4Bu4Qt0g4B2BNZynS5+/w/3+cOEw5U7rT+b607Jw7f+HiyqXW5StXr11fXbtxoJJMUujThCfyKCQKOBPQ10xzOEolkDjkcBhOtwv98ANIxRLxVs9SCGIyFixilGhLvXPxPewTnk7IcLXd2eyUCy8CtwZtVK/94ZrT9kcJzWIQmnKi1MDtpDowRGpGOeQtP1OQEjolYxhYKEgMKjDlyDm+Y5kRjhJpH6FxyZ5OGBIrNYtD64yJnqimVpBnaYNMR08Cw0SaaRC0ahRlHOsEF++PR0wC1XxmAaGS2VkxnRBJqLanNFfJ6+95vWc9z9u9DxkHOZYA08AoIqruLf8vbLX8p2DPQMJLu3udgiQ6kcZXOqETDu9z42vJiBhz4BBpS5wZ2DB+ylJQ1v4ptzUFfKRJHBMxMj7I2NITok2UD205ONGKmoLN83knT1RRAThvCCeqlAZuUJmGpu3m+AGuN9HxRrNUlSA6H2ydzqy3t+7O5wpmISuZmlbdPDzAdbGyZ9DwenbepD6E4jcxfvldI+MtvN1OXomUcLPTFF9s16qMjcUNdXfvv2pxQy2n/af3il3TAYSr2hKGptfUBdGZnLO8ynN7rdzmJVoEB1ub7qNN983DdrdbX7AVdAvdRuvIRY9RFz1H+6iPKBLoM/qCvjrfnB/OT+dXZV1eqjM30dxyfv8BLY55dw==</latexit>

1 + ↵

Page 34: lecture15 16 hashing

Constructing a universal family of hash functions

Let p be prime number such that all keys k are in . For each a in and b in , define a hash function:

Then is a universal family of hash functions.

<latexit sha1_base64="PG8X6KDn5RK1K0BLUOUmvdHEAps=">AAAEY3icbVPrbtMwFPa2AqPjsg3+ISSLCqkbo2omBPxBmjQyQBswKrpNakLluCetVeeC7cAm41fgafgL78ED8B44l8GazlKkz9/lHOckDlLOpOp2fy8sLjWuXL22fL25cuPmrdura+tHMskEhT5NeCJOAiKBsxj6iikOJ6kAEgUcjoPpbq4ffwEhWRJ/VGcp+BEZxyxklChLDVfbk6EmW4FpTzfwC9xuEzzFj3Cwgb0gSkY4PQfRcLXV7XSLheeBU4EWqtbhcG2p5Y0SmkUQK8qJlAOnmypfE6EY5WCaXiYhJXRKxjCwMCYRSF8Xr2TwQ8uMcJgI+8QKF+zFhCaRlGdRYJ0RURNZ13LyMm2QqfC5r1mcZgpiWjYKM45VgvP54BETQBU/s4BQwexZMZ0QQaiyU5yp5PYP3N6rnuvub0HGQYwFwNTXksRl96Z3DptN7yXYGQh4a3fvUxBEJUJ7UiV0wuGz0Z4SjMRjDhxCZYlLA5vaS1kK0tq/GVszhq80iSISj7QHIrL0hCgdmqEtB6dKUp2zxsw6eSLzCsB5TTiVhTRw/NI01C3H4Me42oSfNuulygRRZrB9MdNubW/M5nJmLiuYnJbdXDzAVbGip1/zuva8STWE/DfRXvFdQ+3Ovd2eKUVKuN6ri292K1VE2uKaun/wX7W4phan/af38l3dAYTLyhIEulfXY6IyMWN5Z4y9Vk79Es2Do+2O87TjfHjS2tmpLtgyuoceoDZy0DO0g16jQ9RHFH1HP9BP9GvpT2Olsd64W1oXF6rMHTSzGvf/AgWpf3U=</latexit>

ha,b(k) = ((ak + b) mod p) mod m

<latexit sha1_base64="HXA1b4d+PS25jG+bh0IEobmuhqg=">AAAEhnicbVNdb9MwFPW2AiN8bfDIi0U1aUxd1UzAeEGqNDKGNmBUdJtUh8pxb9qojhNsBzaZ/Ch+DeIN/glOE8aazlKUc8859177yg5SHind6fxaWl5p3Lh5a/W2c+fuvfsP1tYfnqgkkwz6LOGJPAuoAh4J6OtIczhLJdA44HAaTPcK/fQrSBUl4pO+SMGP6VhEYcSottRw7ZDEVE8Y5eYgx6+wQ8xkaGgryDEpigvsuJhw+IJp+Uu33RYmLdwpw+CSdUg+XGt22p3ZwovArUATVet4uL7SJKOEZTEIzThVauB2Uu0bKnXEOOQOyRSklE3pGAYWChqD8s3s1DnesMwIh4m0n9B4xl7NMDRW6iK2R9kozqjqWkFepw0yHb70TSTSTINgZaMw41gnuBghHkUSmOYXFlAmI7tXzCZUUqbtoOcqef0jr/em53mHLcg4yLEEmPpGUVF2d8g/6DjkNdgZSHhnow8pSKoTaYjSCZvYEeeGaBlRMebAIdSWuDZhy5A0SkFZ+/fc1hTwjSVxTMXIEJCxpSdUmzAf2nJwrhUzBZvn806eqKICcF4TztVMGrh+aRqappvjbVwF4eeteqkyg+p8sHM1Z7O583Q+r2AWcmWkpmU3Dw9wVWzW0695PbvfpBpCcU3M7F6r0HgLp9vPzeWl36+Lb/cqVcbG4pp6ePRftbimznZ7qfeKqO4AylVlCQLTq+uC6kzOWd7nxbNy649oEZzstN0Xbffjs2a3Wz2wVfQYPUGbyEW7qIsO0DHqI4Z+oJ/oN/rTWG20G88bu6V1eanKeYTmVqP7F+6Hi4s=</latexit>

H = {ha,b : 1 a p � 1, 0 b p � 1}

<latexit sha1_base64="t98YxGzh4VYivXnVU0SMbLnWxQQ=">AAAEUnicbVPdbtMwFPbWAqMM2OCCC24sKqQxdVVTIeBy0sgAbcCo6DapySrHPWmjOnawHdhk8jTcwttww6twhfMDrOksRfr8/ZzjnMRBwiKle71fK6uN5rXrN9Zutm6t375zd2Pz3rESqaQwpIIJeRoQBSziMNSRZnCaSCBxwOAkmO/l+slnkCoS/KO+SMCPyZRHYUSJttR444FnsNPB/Q722ERo1cHJjoO9bLzR7nV7xcLLwKlAG1XraLzZaHsTQdMYuKaMKDVyeon2DZE6ogyylpcqSAidkymMLOQkBuWb4g0y/NgyExwKaR+uccFeThgSK3URB9YZEz1TdS0nr9JGqQ5f+CbiSaqB07JRmDKsBc7HgSeRBKrZhQWEysieFdMZkYRqO7SFSu7w0B28GrjuQQdSBnIqAea+UYSX3VveX9hqeS/BzkDCW7t7n4AkWkjjKS3ojMGnzHhaRoRPGTAItSWuDGwbL4kSUNb+NbM1OXyhIo4JnxgPZGzpGdEmzMa2HJxrRU3OZtmikwmVVwDGasK5KqSR45emsWk7Gd7B1SY8266XKhNEZ6P+5cxWu/9kMZczS1kZqXnZzcUjXBUrevo1r2vPK6oh5L+J8YrvGhp36e32s1KkhJn9uvhmr1JlbCyuqQeH/1WLa2px2n/6IN/VHUCYqixBYAZ1nROdygXLuyy/Vk79Ei2D437XedZ1Pjxt7+5WF2wNPUSP0BZy0HO0i16jIzREFGXoG/qOfjR+Nn43V5qN0rq6UmXuo4XVXP8Dc4h6tg==</latexit>

{1, 2, . . . , p � 1}

<latexit sha1_base64="rdAR+Jafd61PyqKuD9KsMdskSTk=">AAAEUHicbVNbb9MwGPXogFFuG4gnXiwqpDF1UzMh4HHSyABtwKjoNqkJleN+aa06drAd2GTyY3iFf8Mb/4Q3cC7Ams5SlONzznfJFztKOdOm1/u5dKm1fPnK1ZVr7es3bt66vbp250jLTFEYUMmlOomIBs4EDAwzHE5SBSSJOBxHs91CP/4ESjMp3puzFMKETASLGSXGUaPVe4HtdbHXxQEfS6O7ON30gny02ult9cqFF4FXgw6q1+FordUJxpJmCQhDOdF66PVSE1qiDKMc8naQaUgJnZEJDB0UJAEd2rL/HD90zBjHUrlHGFyy5yMsSbQ+SyLnTIiZ6qZWkBdpw8zEz0LLRJoZELQqFGccG4mLYeAxU0ANP3OAUMVcr5hOiSLUuJHNZfIHB37/Rd/397uQcVATBTALrSaiqt4O/sJ2O3gObgYKXrvd2xQUMVLZQBtJpxw+5jYwihEx4cAhNo64MGDDBilLQTv7l9zlFPCZyiQhYmwDUImjp8TYOB+5dHBqNLUFm+fzTi51kQE4bwinupSGXliZRrbj5XgT15v4w0YzVRVBTD7cPh+z3tl+NB9XMAuxiulZVc3HQ1wnK2uGDa/v+pX1EIpjYoPyv8bWX/i6vbwSKeF2rym+2q1VlViHG+r+wX/V4YZadvtP7xe7pgMI17Ulimy/qQtiMjVneZMX18prXqJFcLS95T3Z8t497uzs1BdsBd1HD9A68tBTtINeokM0QBRZ9BV9Q99bP1q/Wr+XlyrrpfqN7qK5tdz+A0EHe18=</latexit>

{0, 1, . . . , p � 1}<latexit sha1_base64="rdAR+Jafd61PyqKuD9KsMdskSTk=">AAAEUHicbVNbb9MwGPXogFFuG4gnXiwqpDF1UzMh4HHSyABtwKjoNqkJleN+aa06drAd2GTyY3iFf8Mb/4Q3cC7Ams5SlONzznfJFztKOdOm1/u5dKm1fPnK1ZVr7es3bt66vbp250jLTFEYUMmlOomIBs4EDAwzHE5SBSSJOBxHs91CP/4ESjMp3puzFMKETASLGSXGUaPVe4HtdbHXxQEfS6O7ON30gny02ult9cqFF4FXgw6q1+FordUJxpJmCQhDOdF66PVSE1qiDKMc8naQaUgJnZEJDB0UJAEd2rL/HD90zBjHUrlHGFyy5yMsSbQ+SyLnTIiZ6qZWkBdpw8zEz0LLRJoZELQqFGccG4mLYeAxU0ANP3OAUMVcr5hOiSLUuJHNZfIHB37/Rd/397uQcVATBTALrSaiqt4O/sJ2O3gObgYKXrvd2xQUMVLZQBtJpxw+5jYwihEx4cAhNo64MGDDBilLQTv7l9zlFPCZyiQhYmwDUImjp8TYOB+5dHBqNLUFm+fzTi51kQE4bwinupSGXliZRrbj5XgT15v4w0YzVRVBTD7cPh+z3tl+NB9XMAuxiulZVc3HQ1wnK2uGDa/v+pX1EIpjYoPyv8bWX/i6vbwSKeF2rym+2q1VlViHG+r+wX/V4YZadvtP7xe7pgMI17Ulimy/qQtiMjVneZMX18prXqJFcLS95T3Z8t497uzs1BdsBd1HD9A68tBTtINeokM0QBRZ9BV9Q99bP1q/Wr+XlyrrpfqN7qK5tdz+A0EHe18=</latexit>

{0, 1, . . . , p � 1}

Page 35: lecture15 16 hashing

Proof sketch

Page 36: lecture15 16 hashing

Open addressing

Open addressing is another method for handling collisions. Unlike chaining, each slot stores at most one key. If we try to store a key in a slot but find that it is already occupied, we instead try some other slot, and if that slot is full, we try yet another slot, and so on.

This sequence of slots that we try when we are probing for an unoccupied slot is called a probe sequence.

A first probe sequence:

Linear probing uses this probe sequence

<latexit sha1_base64="W3z99jrBzgx6j+MYO/r8dpLDzfU=">AAAEa3icbVPtbtMwFPW2AqN8bewf8MOimtSNMTUVAn5OGhmgDRgV3SY1WeW4N61VJw62A5tMXoOn4S+8Aw/BO+B8MNZ0lhIdn3Puvfa1HSScKd3p/F5YXGpcu35j+Wbz1u07d++trN4/UiKVFPpUcCFPAqKAsxj6mmkOJ4kEEgUcjoPpbq4ffwGpmIg/6fME/IiMYxYySrSlhiudSXu6sYXzP36CnQvU3cIeHwmtLph2hJ9iZ2O40upsd4qB54FTgRaqxuFwdanljQRNI4g15USpgdNJtG+I1IxyyJpeqiAhdErGMLAwJhEo3xRby/C6ZUY4FNJ+scYFeznCkEip8yiwzojoiaprOXmVNkh1+NI3LE5SDTEtC4Upx1rgvE94xCRQzc8tIFQyu1ZMJ0QSqm03ZzK5/QO397rnuvtbkHKQYwkw9Y0icVm96f2Dzab3CmwPJLyzsw8JSKKFNJ7Sgk44fM6MpyUj8ZgDh1Bb4sqATeMlLAFl7d8ymzOGr1REEYlHxgMZWXpCtAmzoU0HZ1pRk7NZNuvkQuUZgPOacKYKaeD4pWloWk5mz76ahKeb9VRlBNHZoHs5pt3qbszG5cxcrGRqWlZz8QBXyYqafs3r2vWKqgn5NTFeca6hced2t5eVIiXc7NXFt7uVKiNjcU3dP/ivWlxTi9Ve6L18VncA4aqyBIHp1fWY6FTOWN5nmX1WTv0RzYOj7rbzfNv5+Ky1s1M9sGX0ED1GbeSgF2gHvUGHqI8o+o5+oJ/o19KfxlrjQeNRaV1cqGLW0MxorP8FG4Z/bA==</latexit>

h(k), h(k) + 1, h(k) + 2, . . . , h(k) + (m � 1)

all mod m

Page 37: lecture15 16 hashing

Linear probingUsing the hash function , insert: 35, 21, 16, 45, 31, 8

How to do SEARCH? Use probe sequence and stop when we have either found the key or arrived at an unoccupied slot.

DELETE can cause trouble for Search. Why? Solution: Upon deletion, mark slot with special value DELETED

0 1 2 3 4 5 6 7 8 9

<latexit sha1_base64="BeHDyhIzzDbxzhDwME2/JjAZcLA=">AAAETHicdVNdb9MwFPXWMUb56uCRF4sKaZugSjr29YA0aWSANmBUdJvUhMpxb9qojhNsh20y+Sm8wr/hnf/BG0LCaTJYs2Ep0vE5537kJtdPWCiVZf2Yma3NXZu/vnCjfvPW7Tt3G4v3DmWcCgpdGrNYHPtEAgs5dFWoGBwnAkjkMzjyxzu5fvQJhAxj/l6dJeBFZMjDIKREGarfWBwtjZfxMzzGrh/FA2xb/UbTalnra1urFrZaa5a9sbVlgGWtb662sW1AfpqoPAf9xVrTHcQ0jYAryoiUPdtKlKeJUCFlkNXdVEJC6JgMoWcgJxFIT096z/AjwwxwEAvzcIUn7MUITSIpzyLfOCOiRrKq5eRVWi9VwaanQ56kCjgtCgUpwyrG+SDwIBRAFTszgFARml4xHRFBqDLjmsrkdPedzouO4+w9hpSBGAqAsacl4UX1unsO63X3OZgZCHhtbm8TEETFQrtSxXTE4GOmXSVCwocMGATKEFcGrGg3CROQxv45Mzk5nNA4iggfaBdEZOgRUTrI+iYdnCpJdc5m2bSTxTLPAIxVhFM5kXq2V5j6umln+AkuL8GHlWqqIoKorNe+GLPUbC9Px+XMpVgRynFRzcE9XCab1PQqXsf0G5dDyH8T7U6+a6CdS2+3mxUiJUzvVsVXO6UqIm1wRd3b/6caXFEn3f7VO/mt6gDCZGnxfd2p6pyoVExZ3mSZWavz3cH/B4ftlr3est89bW5vlwu2gB6gh2gJ2WgDbaOX6AB1EUUn6Av6ir7Vvtd+1n7VfhfW2Zky5j6aOnPzfwCbc3rl</latexit>

h(k) = k mod 10

Page 38: lecture15 16 hashing

Linear probing

• Doesn’t work well in practice

• Suffers from primary clustering problem

• Limited number of probe sequences (only m of them)

Page 39: lecture15 16 hashing

Quadratic probing

In quadratic probing, we use a somewhat more sophisticated probe sequence. For carefully selected positive constants and , the probe sequence is

Advantages: Avoids primary clustering problem

Disadvantages: Experiences secondary clustering problem ,, Still only m probe sequences

for<latexit sha1_base64="Vjfefmj2XsHUGXl629+XZHQ7gn8=">AAAEUHicbVNbb9MwGPXWAqPcNhBPvFhUSGPqqmZCwAvSpJEB2oBR0W1SEyrH/dJadZxgO7DK5MfwCv+GN/4Jb+BcgDWdpSjH55zvki92kHCmdK/3c2W10bx0+cra1da16zdu3lrfuH2s4lRSGNCYx/I0IAo4EzDQTHM4TSSQKOBwEsz2cv3kE0jFYvFezxPwIzIRLGSUaEuN1u8y/Az3OtjpYI+PY606ONp2RuvtXrdXLLwMnAq0UbWORhuNtjeOaRqB0JQTpYZOL9G+IVIzyiFreamChNAZmcDQQkEiUL4p+s/wA8uMcRhL+wiNC/Z8hCGRUvMosM6I6Kmqazl5kTZMdfjUN0wkqQZBy0JhyrGOcT4MPGYSqOZzCwiVzPaK6ZRIQrUd2UImd3Do9l/0XfegAykHOZEAM98oIsrqLe8vbLW852BnIOG13b1NQBIdS+MpHdMph4+Z8bRkREw4cAi1JS4M2DJewhJQ1v4lszkFfKZxFBExNh7IyNJTok2YjWw6ONOKmpzNskUnj1WeATivCWeqkIaOX5pGpu1keBtXm/DDVj1VGUF0Ntw5H7PZ3nm4GJczS7GSqVlZzcVDXCUravo1r2v7jash5MfEeMV/DY279HX7WSlSws1+XXy1V6kyMhbX1IPD/6rFNbXo9p/ez3d1BxCuKksQmH5dF0SncsHyJsvstXLql2gZHO90ncdd592j9u5udcHW0D10H20iBz1Bu+glOkIDRJFBX9E39L3xo/Gr8bu5UlpXqze6gxZWs/UHJZ16kg==</latexit>

i = 0, 1, . . . ,m � 1<latexit sha1_base64="PhhOP063op6SGgWk9Sm8xupaMt4=">AAAEW3icbVNdb9MwFPXWAqMM2EA88WJRIXUDqqZCwOOkkQHagFHRbVKTVY5701q1k2A7sMnklV/DK/wXHvgvOB/Ams6SleNzzr3XvrGDhDOle71fK6uN5pWr19aut26s37x1e2PzzpGKU0lhSGMey5OAKOAsgqFmmsNJIoGIgMNxMN/N9ePPIBWLo4/6PAFfkGnEQkaJttR4A3dmnfkWfoTp2MGs+PYxO+1vYS8Q8QSL8Ua71+0VAy8DpwJtVI3D8Waj7U1imgqINOVEqZHTS7RviNSMcshaXqogIXROpjCyMCIClG+Ko2T4oWUmOIylnZHGBXsxwhCh1LkIrFMQPVN1LScv00apDl/4hkVJqiGiZaEw5VjHOO8LnjAJVPNzCwiVzO4V0xmRhGrbvYVM7vDAHbwauO7+Y0g5yKkEmPtGkais3vL+wlbLewm2BxLe2tX7BCTRsTSe0jGdcfiUGU9LRqIpBw6htsSlAdvGS1gCytq/ZjZnBF9oLASJJsYDKSw9I9qE2dimgzOtqMnZLFt08ljlGYDzmnCmCmnk+KVpbNpOhp/gahGebtdTlRFEZ6P+xZhO216bhbicWYqVTM3Lai4e4SpZUdOveV2737hqQn5NjFf819C4S6fby0qREm726uKb3UqVwlhcU/cP/qsW19Rit//0Qb6qO4BwVVmCwAzqekR0Khcs77LMPiun/oiWwVG/6zzrOh+etnd2qge2hu6jB6iDHPQc7aDX6BANEUXf0Hf0A/1s/G42mq3memldXali7qKF0bz3B3UYfAk=</latexit>

(h(k) + c1i + c2i2) mod m

<latexit sha1_base64="ssSPcmVsrVAMjCefU/Cl7ClDNX8=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNMTYWAx0ojA7QBo9BtUhIqxz1prTpOsB1YZfITeIV/w//gnTfEK884F2BNZynS5+9yzokTRxmjUnW731dWrXPnL1xcu9S5fOXqtevrGzcOZZoLAkOSslQcR1gCoxyGiioGx5kAnEQMjqLZTqkffQAhacrfqnkGYYInnMaUYGWoN2Tkjtad7na3WvYycBvgoGYdjDYsJxinJE+AK8KwlL7bzVSosVCUMCg6QS4hw2SGJ+AbyHECMtTVrIV9xzBjO06FebiyK/Z0QuNEynkSGWeC1VS2tZI8S/NzFT8ONeVZroCTulGcM1uldvni9pgKIIrNDcBEUDOrTaZYYKLM8SxU8ob73uDpwPP27kHOQEwEwCzUEvO6eyf4Czud4AmYMxDwwuxeZSCwSoUOpErJlMH7QgdKUMwnDBjEyhBnBrZ0kNEMpLF/KkxNDh9JmiSYj3UAIjH0FCsdFyNTDk6UJLpki2LRyVJZVgDGWsKJrCTfDWvTSDtuYd+3m038bqtdqk5gVfi905lNp3d3MVcyS1lB5azu5tm+3RSreoYtr2fmTZtDKH8THVTfNdbe0tvtFrVIMNO7bfH5TqOKRBvcUvf2/6sGt9Rq2n/6oNy1HYCZbCxRpAdtnWOViwXLy6Iw18ptX6JlcNjbdh9uu68fOP1+c8HW0C10G20iFz1CffQMHaAhImiCPqMv6Kv1zfph/bR+1dbVlSZzEy0s6/cfOrh3Jg==</latexit>c1<latexit sha1_base64="FLONHS3BrvwK1QUeZHdl4Kvf4hE=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNMTYWAx0ojA7QBo9BtUhIqxz1prTpOsB1YZfITeIV/w//gnTfEK884F2BNZynS5+9yzokTRxmjUnW731dWrXPnL1xcu9S5fOXqtevrGzcOZZoLAkOSslQcR1gCoxyGiioGx5kAnEQMjqLZTqkffQAhacrfqnkGYYInnMaUYGWoN2TUG6073e1utexl4DbAQc06GG1YTjBOSZ4AV4RhKX23m6lQY6EoYVB0glxChskMT8A3kOMEZKirWQv7jmHGdpwK83BlV+zphMaJlPMkMs4Eq6lsayV5lubnKn4casqzXAEndaM4Z7ZK7fLF7TEVQBSbG4CJoGZWm0yxwESZ41mo5A33vcHTgeft3YOcgZgIgFmoJeZ1907wF3Y6wRMwZyDghdm9ykBglQodSJWSKYP3hQ6UoJhPGDCIlSHODGzpIKMZSGP/VJiaHD6SNEkwH+sARGLoKVY6LkamHJwoSXTJFsWik6WyrACMtYQTWUm+G9amkXbcwr5vN5v43Va7VJ3AqvB7pzObTu/uYq5klrKCylndzbN9uylW9QxbXs/MmzaHUP4mOqi+a6y9pbfbLWqRYKZ32+LznUYViTa4pe7t/1cNbqnVtP/0QblrOwAz2ViiSA/aOscqFwuWl0VhrpXbvkTL4LC37T7cdl8/cPr95oKtoVvoNtpELnqE+ugZOkBDRNAEfUZf0Ffrm/XD+mn9qq2rK03mJlpY1u8/Po53Jw==</latexit>c2

Page 40: lecture15 16 hashing

Double hashing

Let and be auxiliary hash functions

Double hashing uses the probe sequence:

must be relatively prime to m in order for the whole table to be searched. How can this be achieved?

<latexit sha1_base64="Wxu3UHOqb2BofZZ1kuFaDv36sPM=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNMTYWAx0ojA7QBo9BtUhIqxz1prTpOsB1YZfITeIV/w//gnTfEK884F2BNZynS5+9yzokTRxmjUnW731dWrXPnL1xcu9S5fOXqtevrGzcOZZoLAkOSslQcR1gCoxyGiioGx5kAnEQMjqLZTqkffQAhacrfqnkGYYInnMaUYGWoN9ORO1p3utvdatnLwG2Ag5p1MNqwnGCckjwBrgjDUvpuN1OhxkJRwqDoBLmEDJMZnoBvIMcJyFBXsxb2HcOM7TgV5uHKrtjTCY0TKedJZJwJVlPZ1kryLM3PVfw41JRnuQJO6kZxzmyV2uWL22MqgCg2NwATQc2sNpligYkyx7NQyRvue4OnA8/buwc5AzERALNQS8zr7p3gL+x0gidgzkDAC7N7lYHAKhU6kColUwbvCx0oQTGfMGAQK0OcGdjSQUYzkMb+qTA1OXwkaZJgPtYBiMTQU6x0XIxMOThRkuiSLYpFJ0tlWQEYawknspJ8N6xNI+24hX3fbjbxu612qTqBVeH3Tmc2nd7dxVzJLGUFlbO6m2f7dlOs6hm2vJ6ZN20OofxNdFB911h7S2+3W9QiwUzvtsXnO40qEm1wS93b/68a3FKraf/pg3LXdgBmsrFEkR60dY5VLhYsL4vCXCu3fYmWwWFv23247b5+4PT7zQVbQ7fQbbSJXPQI9dEzdICGiKAJ+oy+oK/WN+uH9dP6VVtXV5rMTbSwrN9/AE3wdys=</latexit>

h1<latexit sha1_base64="LAKaScmCIBLlFSAKignpRf0L0VY=">AAAEPHicbVNbb9MwFPYWLqPcNnjkJSJCGhNMTYWAx0ojA7QBo9BtUhIqxz1prTpOsB1YZfITeIV/w//gnTfEK884F2BNZynS5+9yzokTRxmjUnW731dWrXPnL1xcu9S5fOXqtevrGzcOZZoLAkOSslQcR1gCoxyGiioGx5kAnEQMjqLZTqkffQAhacrfqnkGYYInnMaUYGWoN9NRb7TudLe71bKXgdsABzXrYLRhOcE4JXkCXBGGpfTdbqZCjYWihEHRCXIJGSYzPAHfQI4TkKGuZi3sO4YZ23EqzMOVXbGnExonUs6TyDgTrKayrZXkWZqfq/hxqCnPcgWc1I3inNkqtcsXt8dUAFFsbgAmgppZbTLFAhNljmehkjfc9wZPB563dw9yBmIiAGahlpjX3TvBX9jpBE/AnIGAF2b3KgOBVSp0IFVKpgzeFzpQgmI+YcAgVoY4M7Clg4xmII39U2FqcvhI0iTBfKwDEImhp1jpuBiZcnCiJNElWxSLTpbKsgIw1hJOZCX5blibRtpxC/u+3Wzid1vtUnUCq8Lvnc5sOr27i7mSWcoKKmd1N8/27aZY1TNseT0zb9ocQvmb6KD6rrH2lt5ut6hFgpnebYvPdxpVJNrglrq3/181uKVW0/7TB+Wu7QDMZGOJIj1o6xyrXCxYXhaFuVZu+xItg8Petvtw2339wOn3mwu2hm6h22gTuegR6qNn6AANEUET9Bl9QV+tb9YP66f1q7aurjSZm2hhWb//AFHGdyw=</latexit>

h2

General way of specifying elements in probe sequence

<latexit sha1_base64="LIfUhFRov65CSYDTgBFhb+yX380=">AAAEZnicbVPbbtMwGPa2AqOcNhDighuLCqndxtRUCLhBmjQyQBswKrpNakLkuH8aq84B24FNJg/B03ALj8Eb8Bg4B2BNZynS5+/w/86f2E85k6rf/7W0vNK6dPnK6tX2tes3bt5aW799JJNMUBjRhCfixCcSOIthpJjicJIKIJHP4dif7Rb68WcQkiXxB3WWghuRacwCRokylLe2GXZnW5j18HPcDT2rO+vhTcywQyeJwqE3MEQPO36UTHDkrXX62/1y4UVg1aCD6nXora90nElCswhiRTmRcmz1U+VqIhSjHPK2k0lICZ2RKYwNjEkE0tXlW+X4oWEmOEiEeWKFS/Z8QpNIyrPIN86IqFA2tYK8SBtnKnjmahanmYKYVo2CjGOV4GJEeMIEUMXPDCBUMHNWTEMiCFVmkHOV7NGBPXw5tO39Lcg4iKkAmLlakrjq3nb+wnbbeQFmBgLemN27FARRidCOVAkNOXzKtaMEI/GUA4dAGeLCwIZ2UpaCNPavuakZwxeaRBGJJ9oBERk6JEoHuWfKwamSVBdsns87eSKLCsB5QziVpTS23Mrk6Y6V40e43gQfN5qlqgRR+XhwPtPtDHrzuYJZyAomZ1U3G49xXazs6Ta8tjlvUg+h+E20U37XQNsLb7eXVyIlXO81xde7tSoibXBD3T/4rxrcUMvT/tOHxa7pAMJlbfF9PWzqMVGZmLO8zXNzrazmJVoER4Nt68m29f5xZ2envmCr6D56gLrIQk/RDnqFDtEIUfQNfUc/0M+V362brbute5V1eanO3EFzq4X/AGVXf80=</latexit>

h(k , i) = (h1(k) + i · h2(k)) mod m

<latexit sha1_base64="tMnbnt4PT6geZGHUgQfW4QgxLB0=">AAAEP3icbVPbbtMwGPYWDqMctsElNxEVUjdB1VQIuKw0MkAbMCraTWpC5bh/WlPHCbYDq0zegVt4Gx6DJ+AOccsdzgFY01mK9Pk7/P8fJw4SRqXqdL6vrVsXLl66vHGlcfXa9RubW9s3hzJOBYEBiVksTgIsgVEOA0UVg5NEAI4CBsfBfC/Xjz+AkDTmb9QiAT/CU05DSrAy1HA27rbmO+OtZqfdKZa9CpwKNFG1jsbbVtObxCSNgCvCsJQjp5MoX2OhKGGQNbxUQoLJHE9hZCDHEUhfF+Nm9l3DTOwwFubhyi7YswmNIykXUWCcEVYzWddy8jxtlKrwsa8pT1IFnJSNwpTZKrbzd7cnVABRbGEAJoKaWW0ywwITZU5oqZI7OHT7T/uue3APUgZiKgDmvpaYl90b3l/YaHhPwJyBgBdm9yoBgVUstCdVTGYM3mfaU4JiPmXAIFSGODewq72EJiCN/VNmanL4SOIownyiPRCRoWdY6TAbm3JwqiTROZtly04Wy7wCMFYTTmUhjRy/NI1108ns+3a1Cd/u1kuVCayyUfdsptXs7izncmYlK6icl91ce2RXxYqefs3rmnnj6hDy30R7xXcNtbvydvtZKRLM9H5dfL5XqSLSBtfUg8P/qsE1tZj2n97Pd3UHYCYrSxDofl3nWKViyfIyy8y1cuqXaBUMu23nYdt5/aDZ61UXbAPdRndQCznoEeqhZ+gIDRBB79Bn9AV9tb5ZP6yf1q/Sur5WZW6hpWX9/gOcdXgG</latexit>

h2(k)

no common factors

Page 41: lecture15 16 hashing

Average-case analysis of open addressing

Can we provide average-case guarantees for open addressing?

• Yes! Under a certain assumption

Assumption of uniform hashing - for each key, the probe sequence is chosen uniformly at random from the set of all possible permutations of . (this is not realistic, but we might approximate it in practice using, e.g., double hashing)

Proposition: Given a hash table with load factor , under uniform hashing the expected number of probes in an unsuccessful search is at most .

<latexit sha1_base64="ENa2CaIHO7Y3KofyEZw3sjjAobs=">AAAETnicbVNdb9MwFPXWAaN8bGOPvFhUSNvUTU2FgMdJIwO0AaOi26QmVI5701p14mA7sMrkt/AK/4ZX/ghvCJwPYE1nKdLxOed+5CY3SDhTutP5sbTcWLl2/cbqzeat23furq1v3DtVIpUU+lRwIc8DooCzGPqaaQ7niQQSBRzOgulBrp99BKmYiN/pWQJ+RMYxCxkl2lLD9c2tThs7bezxkdCqjaNdZ3u43ursdYqDF4FTgRaqzslwo9HyRoKmEcSacqLUwOkk2jdEakY5ZE0vVZAQOiVjGFgYkwiUb4ruM/zQMiMcCmmfWOOCvRxhSKTULAqsMyJ6oupaTl6lDVIdPvUNi5NUQ0zLQmHKsRY4HwUeMQlU85kFhEpme8V0QiSh2g5sLpPbP3Z7z3uue9SGlIMcS4CpbxSJy+pN7y9sNr1nYGcg4ZW9vUlAEi2k8ZQWdMLhQ2Y8LRmJxxw4hNoSVwbsGC9hCShr/5zZnDF8oiKKSDwyHsjI0hOiTZgNbTq40IqanM2yeScXKs8AnNeEC1VIA8cvTUPTcjK8i6tL+H6nnqqMIDobdC/HbLW62/NxObMQK5maltVcPMBVsqKmX/O6tl9RDSH/TYxXfNfQuAtvd5iVIiXcHNbFlweVKiNjcU09Ov6vWlxTi27/6b38VncA4aqyBIHp1fWY6FTOWV5nmV0rp75Ei+C0u+c83nPePmrt71cLtoruowdoCznoCdpHL9AJ6iOKZugL+oq+Nb43fjZ+NX6X1uWlKmYTzZ2V1T+yMHro</latexit>

(0, 1, . . . ,m � 1)

<latexit sha1_base64="qt8FEqQ/J3FNkiVJiqWgqZeTfds=">AAAEQHicbVPbbtMwGPYWDqMctsElNxYVUjeNqZkQcDlpZIA2YFR0m9SEynH/tFYdJ9gOrDJ5CG7hbXgL3oA7xC1XOAdgTWcp0ufv8P9/nDhMOVO62/2+tOxcunzl6sq11vUbN2+trq3fPlZJJin0acITeRoSBZwJ6GumOZymEkgccjgJp3uFfvIBpGKJeKtnKQQxGQsWMUq0pU4mnekWZhvDtXZ3u1suvAjcGrRRvY6G607bHyU0i0FoyolSA7eb6sAQqRnlkLf8TEFK6JSMYWChIDGowJTz5vi+ZUY4SqR9hMYlez5hSKzULA6tMyZ6oppaQV6kDTIdPQkME2mmQdCqUZRxrBNcvDweMQlU85kFhEpmZ8V0QiSh2h7RXCWvf+j1nvU872ALMg5yLAGmgVFEVN1b/l/YavlPwZ6BhJd29zoFSXQija90Qicc3ufG15IRMebAIdKWuDCwafyUpaCs/VNuawr4SJM4JmJkfJCxpSdEmygf2nJwphU1BZvn806eqKICcN4QzlQpDdygMg1N283xA1xvonebzVJVguh8sHM+02nvbMznCmYhK5maVt08PMB1sbJn0PB6dt6kPoTiNzF++V0j4y283X5eiZRws98UX+zVqoyNxQ314PC/anFDLaf9p/eKXdMBhKvaEoam19QF0Zmcs7zKc3ut3OYlWgTHO9vuo233zcP27m59wVbQXXQPdZCLHqNd9BwdoT6iaIo+oy/oq/PN+eH8dH5V1uWlOnMHzS3n9x9PGHg0</latexit>

h(k , i)

<latexit sha1_base64="8J5FZmw6bFA0mfP7LsfyjNfQZIU=">AAAETXicbVNdb9MwFPXWwUb52sYjLxYV0pigNBUCHkCaNDJAGzAquk1qQuW4N61Vxwm2A6tM/gqv8G945ofwhhDOB7CmsxTp+JxzP3KTGyScKd3p/FhabqxcuLi6dql5+crVa9fXNzaPVJxKCn0a81ieBEQBZwL6mmkOJ4kEEgUcjoPpbq4ffwSpWCze6VkCfkTGgoWMEm2p4fqmR3gyIfgpFvg+jvAT7AzXW512pzh4ETgVaKHqHA43Gi1vFNM0AqEpJ0oNnE6ifUOkZpRD1vRSBQmhUzKGgYWCRKB8UzSf4duWGeEwlvYRGhfs2QhDIqVmUWCdEdETVddy8jxtkOrwsW+YSFINgpaFwpRjHeN8EnjEJFDNZxYQKpntFdMJkYRqO6+5TG7/wO0977nu/l1IOcixBJj6RhFRVm96f2Gz6T0DOwMJr+ztTQKS6FgaT+mYTjh8yIynJSNizIFDqC1xbsC28RKWgLL2z5nNKeATjaOIiJHxQEaWnhBtwmxo08GpVtTkbJbNO3ms8gzAeU04VYU0cPzSNDQtJ8P3cHUJ32/XU5URRGeD7tmYrVb3znxczizESqamZTUXD3CVrKjp17yu7TeuhpD/JsYrvmto3IW328tKkRJu9uriy91KlZGxuKbuH/xXLa6pRbf/9F5+qzuAcFVZgsD06rogOpVzltdZZtfKqS/RIjjqtp2Hbeftg9bOTrVga+gmuoW2kIMeoR30Ah2iPqLoFH1BX9G3xvfGz8avxu/SurxUxdxAc2dl9Q9fqXrR</latexit>

↵ = n/m < 1

<latexit sha1_base64="kHF09FMkYrTib/kwWCnSX9gJ/oA=">AAAES3icbVPdbtMwGPXWDUb56+CSG4sKaZtgNBMCLiuNDNAGjIpuk5qsctwvrVXHCbYzVpm8CbfwNjwAz8Ed4gLnB1jTWbJ0fM75fvLFDhLOlO50fiwtN1ZWr1xdu9a8fuPmrdut9TtHKk4lhT6NeSxPAqKAMwF9zTSHk0QCiQIOx8F0N9ePz0AqFosPepaAH5GxYCGjRFtq2Go5+DHecPAj7BGeTMjmsNXubHeKhReBU4E2qtbhcL3R9kYxTSMQmnKi1MDpJNo3RGpGOWRNL1WQEDolYxhYKEgEyjdF6xl+YJkRDmNpt9C4YC9GGBIpNYsC64yInqi6lpOXaYNUh899w0SSahC0LBSmHOsY53PAIyaBaj6zgFDJbK+YTogkVNtpzWVy+wdu72XPdfcfQspBjiXA1DeKiLJ60/sLm03vBdgZSHhjT+8SkETH0nhKx3TC4WNmPC0ZEWMOHEJtiUsDtoyXsASUtX/ObE4Bn2gcRUSMjAcysvSEaBNmQ5sOzrWiJmezbN7JY5VnAM5rwrkqpIHjl6ahaTtZfgHKQ3i6VU9VRhCdDXYuxmy0dzbn43JmIVYyNS2ruXiAq2RFTb/mdW2/cTWE/JoYr/ivoXEXvm4vK0VKuNmri693K1VGxuKaun/wX7W4phbd/tN7+anuAMJVZQkC06vrguhUzlneZpl9Vk79ES2Co51t5+m28/5Ju9utHtgauofuow3koGeoi16hQ9RHFJ2hL+gr+tb43vjZ+NX4XVqXl6qYu2huraz+AYnVedg=</latexit>

1/(1� ↵)

Page 42: lecture15 16 hashing

Proposition: Given a hash table with load factor , under uniform hashing the expected number of probes in an unsuccessful search is at most .

Proof:

Average-case analysis of open addressing<latexit sha1_base64="8J5FZmw6bFA0mfP7LsfyjNfQZIU=">AAAETXicbVNdb9MwFPXWwUb52sYjLxYV0pigNBUCHkCaNDJAGzAquk1qQuW4N61Vxwm2A6tM/gqv8G945ofwhhDOB7CmsxTp+JxzP3KTGyScKd3p/FhabqxcuLi6dql5+crVa9fXNzaPVJxKCn0a81ieBEQBZwL6mmkOJ4kEEgUcjoPpbq4ffwSpWCze6VkCfkTGgoWMEm2p4fqmR3gyIfgpFvg+jvAT7AzXW512pzh4ETgVaKHqHA43Gi1vFNM0AqEpJ0oNnE6ifUOkZpRD1vRSBQmhUzKGgYWCRKB8UzSf4duWGeEwlvYRGhfs2QhDIqVmUWCdEdETVddy8jxtkOrwsW+YSFINgpaFwpRjHeN8EnjEJFDNZxYQKpntFdMJkYRqO6+5TG7/wO0977nu/l1IOcixBJj6RhFRVm96f2Gz6T0DOwMJr+ztTQKS6FgaT+mYTjh8yIynJSNizIFDqC1xbsC28RKWgLL2z5nNKeATjaOIiJHxQEaWnhBtwmxo08GpVtTkbJbNO3ms8gzAeU04VYU0cPzSNDQtJ8P3cHUJ32/XU5URRGeD7tmYrVb3znxczizESqamZTUXD3CVrKjp17yu7TeuhpD/JsYrvmto3IW328tKkRJu9uriy91KlZGxuKbuH/xXLa6pRbf/9F5+qzuAcFVZgsD06rogOpVzltdZZtfKqS/RIjjqtp2Hbeftg9bOTrVga+gmuoW2kIMeoR30Ah2iPqLoFH1BX9G3xvfGz8avxu/SurxUxdxAc2dl9Q9fqXrR</latexit>

↵ = n/m < 1

<latexit sha1_base64="kHF09FMkYrTib/kwWCnSX9gJ/oA=">AAAES3icbVPdbtMwGPXWDUb56+CSG4sKaZtgNBMCLiuNDNAGjIpuk5qsctwvrVXHCbYzVpm8CbfwNjwAz8Ed4gLnB1jTWbJ0fM75fvLFDhLOlO50fiwtN1ZWr1xdu9a8fuPmrdut9TtHKk4lhT6NeSxPAqKAMwF9zTSHk0QCiQIOx8F0N9ePz0AqFosPepaAH5GxYCGjRFtq2Go5+DHecPAj7BGeTMjmsNXubHeKhReBU4E2qtbhcL3R9kYxTSMQmnKi1MDpJNo3RGpGOWRNL1WQEDolYxhYKEgEyjdF6xl+YJkRDmNpt9C4YC9GGBIpNYsC64yInqi6lpOXaYNUh899w0SSahC0LBSmHOsY53PAIyaBaj6zgFDJbK+YTogkVNtpzWVy+wdu72XPdfcfQspBjiXA1DeKiLJ60/sLm03vBdgZSHhjT+8SkETH0nhKx3TC4WNmPC0ZEWMOHEJtiUsDtoyXsASUtX/ObE4Bn2gcRUSMjAcysvSEaBNmQ5sOzrWiJmezbN7JY5VnAM5rwrkqpIHjl6ahaTtZfgHKQ3i6VU9VRhCdDXYuxmy0dzbn43JmIVYyNS2ruXiAq2RFTb/mdW2/cTWE/JoYr/ivoXEXvm4vK0VKuNmri693K1VGxuKaun/wX7W4phbd/tN7+anuAMJVZQkC06vrguhUzlneZpl9Vk79ES2Co51t5+m28/5Ju9utHtgauofuow3koGeoi16hQ9RHFJ2hL+gr+tb43vjZ+NX4XVqXl6qYu2huraz+AYnVedg=</latexit>

1/(1� ↵)