๐Ÿ‘บ
Rookie's Notes
  • ๐Ÿ˜Hi there ๐Ÿ‘‹
  • ๐Ÿฆธโ€โ™‚๏ธKey-value Storage
    • ๐Ÿ˜‡MetaData
    • ๐Ÿ˜‡CAP therom
    • ๐Ÿ˜‡LSM Tree
    • ๐Ÿ˜Google BigTable
    • ๐Ÿ˜Google File System
    • ๐Ÿ˜Google MapReduce
    • ๐ŸงBloom Filter
    • ๐ŸงCuckoo Filter๏ผšBetter Than Bloom
    • ๐ŸคฉLevelDB
      • ๐Ÿค“LevelDB & BigTable
      • ๐Ÿค“SSTable in LevelDB
      • ๐Ÿค“Log source code analysis
    • ๐ŸคฉRocksDB
      • ๐Ÿ˜™RocksDB & LevelDB
      • ๐Ÿ˜šGeneral
      • ๐Ÿ˜šOptimization
    • ๐ŸคฉTiKV
      • ๐ŸฅณGeneral
  • ๐ŸฆธDPU Plus
    • ๐Ÿ˜„General
    • ๐Ÿ˜Meson
    • ๐Ÿ˜SSD
    • ๐Ÿ˜†NVMe
    • ๐ŸฅฐRDMA
      • ๐Ÿ˜Import
      • ๐Ÿ˜…RoCE
      • ๐Ÿ˜‹Elements
      • ๐Ÿ˜‚Options
      • ๐ŸฅณService
      • ๐Ÿ˜ƒMemory Region
      • โ˜บ๏ธProtection Domain
      • ๐Ÿ˜Address Handle
      • ๐Ÿ˜…Queue Pair
      • ๐Ÿ˜‚Completion Queue โ€‹
      • ๐Ÿ˜†Shared Receive Queue
      • ๐Ÿ˜†Verbs
      • ๐Ÿฅฒ็”จๆˆทๆ€ไธŽๅ†…ๆ ธๆ€ไบคไบ’
  • ๐Ÿฆนโ€โ™‚๏ธGPU & DB
    • ๐Ÿ˜€Crystal
    • ๐Ÿ˜„GPU Compression
    • ๐Ÿ˜†Mordred
    • ๐Ÿ˜ƒGPU & RDMA & DB
  • ๐ŸฆธDatabases
    • ๐Ÿ˜CMU 15-445
      • ๐Ÿ˜‰Buffer Pool
        • ๐Ÿ˜„Expand
      • ๐Ÿ˜‰B+ Tree Index
        • ๐Ÿ˜ŒPre: B & B+
        • ๐ŸคฃPre: B+Tree
        • ๐Ÿ˜‚Expand
        • ๐Ÿ˜‚Expand2: Delete
        • ๐Ÿ˜‚Expand3: Index_Iterator
      • ๐Ÿ˜‰Query Execution
      • ๐Ÿ˜‰Concurrency Control
    • ๐Ÿ˜…CMU 15-721
      • ๐Ÿ˜‡02 inmemory
      • ๐Ÿ˜‡03 mvcc1
      • ๐Ÿ˜‡04 mvcc2
      • ๐Ÿ˜‡05 mvcc3
      • ๐Ÿ˜‡06 oltpindexes1
  • ๐Ÿฆธโ€โ™‚๏ธBlock Chain
    • ๐Ÿ˜กUniswap-v2 ๅˆ็บฆๆฆ‚่งˆ
    • ๐Ÿ˜ญๅฏนๆŽฅ Uniswap V2 ๅ…‘ๆขไปฃๅธ
    • ๐Ÿค“bignumer.jsไธญๅธธ่ง่ฟ็ฎ—
  • ๐Ÿฆธโ€โ™‚๏ธUtils
    • ๐Ÿ˜…typename or class?
    • ๐Ÿ˜RALL
    • ๐ŸฅฒSmart Pointers
    • ๐ŸคฃParallelism and Concurrency
    • ๐Ÿ˜‡Lock V1
    • ๐Ÿ˜‡Lock V2
    • ๐ŸฅฐThread Pooling
    • ๐Ÿ˜ฉSkiplist
    • ๐Ÿ˜…Miscellaneous Of C++
  • Group 1
    • ๐Ÿซ‚Personal diaries
      • ๐Ÿ˜‘2021ไธญ็ง‹ๆ‚ๆ„Ÿ
      • ๐Ÿ˜–2022็މ็މๆ—ฅ่ฎฐ๏ผˆไธ€๏ผ‰
      • ๐Ÿ˜š2022็މ็މๆ—ฅ่ฎฐ๏ผˆไบŒ๏ผ‰
      • ๐Ÿค”2022็މ็މๆ—ฅ่ฎฐ๏ผˆไธ‰๏ผ‰
      • โ˜น๏ธ2022็މ็މๆ—ฅ่ฎฐ๏ผˆๅ››๏ผ‰
      • ๐Ÿฅฒ2022็މ็މๆ—ฅ่ฎฐ๏ผˆไบ”๏ผ‰
      • ๐Ÿง2023็•™ๅญฆๆ—ฅ่ฎฐ ๏ผˆไธ€๏ผ‰
Powered by GitBook
On this page
  • Cuckoo Hash
  • Cuckoo Filter
  • Insert
  • Search
  • Delete
  • ็ผบ็‚น
Edit on GitHub
  1. Key-value Storage

Cuckoo Filter๏ผšBetter Than Bloom

PreviousBloom FilterNextLevelDB

Last updated 2 years ago

ๅธƒ้š†่ฟ‡ๆปคๅ™จๆœ‰็ผบ็‚น๏ผŒๆฏ”ๅฆ‚ไธๆ”ฏๆŒๅˆ ้™คๆ“ไฝœใ€ๆŸฅ่ฏขๆ•ˆ็އๅผฑ๏ผŒๅ› ไธบๅคšไธช้šๆœบๅ“ˆๅธŒๅ‡ฝๆ•ฐๆŽขๆต‹็š„ๆ˜ฏbitๆ•ฐ็ป„ไธญๅคšไธชไธๅŒ็š„็‚น๏ผŒๆ‰€ไปฅไผšๅฏผ่‡ดไฝŽCPU็ผ“ๅญ˜ๅ‘ฝไธญ็އ

ไน๏ผŒๆˆ‘ๅฐฑๆ˜ฏๆฏ”ไฝ ๅผ”๏ผš

img

Cukoo่งฃๅ†ณไบ†่ฟ™ไธช้—ฎ้ข˜๏ผš็”จๆ›ดไฝŽ็š„็ฉบ้—ดๅผ€้”€่งฃๅ†ณไบ†ๅธƒ้š†่ฟ‡ๆปคๅ™จไธ่ƒฝๅˆ ้™คๅ…ƒ็ด ็š„้—ฎ้ข˜

  • supports adding and removing items dynamically ๏ผˆๅŠจๆ€็š„ๆทปๅŠ ๅ’Œๅˆ ้™คๅ…ƒ็ด ๏ผ‰

  • higher lookup performance, even when close to full ๏ผˆๆ›ด้ซ˜็š„ๆŸฅๆ‰พๆ€ง่ƒฝ๏ผŒๅณไฝฟๅœจๆŽฅ่ฟ‘ๆปก็š„ๆƒ…ๅ†ตไธ‹๏ผ‰

  • easier to implement than alternatives such as the quotient filter ๏ผˆๆฏ”่ตทๅ•†่ฟ‡ๆปคๅ™จๅฎƒๆ›ดๅฎนๆ˜“ๅฎž็Žฐ๏ผ‰

  • less space if the target false positive rate is less than 3% ๏ผˆๅฆ‚ๆžœ่ฆๆฑ‚่ฏฏๅˆค็އไฝŽไบŽ3%๏ผŒๅฎƒๆฏ”ๅธƒ้š†่ฟ‡ๆปคๅ™จๆœ‰ๆ›ดไฝŽ็š„็ฉบ้—ดๅผ€้”€๏ผ‰

Cuckoo Hash

ๆœ€ๅŽŸๅง‹็š„ๅธƒ่ฐท้ธŸๅ“ˆๅธŒๆ–นๆณ•ๆ˜ฏไฝฟ็”จไธคไธชๅ“ˆๅธŒๅ‡ฝๆ•ฐๅฏนไธ€ไธชkey่ฟ›่กŒๅ“ˆๅธŒ๏ผŒๅพ—ๅˆฐๆกถไธญ็š„ไธคไธชไฝ็ฝฎ๏ผŒๆญคๆ—ถ

  • ๅฆ‚ๆžœไธคไธชไฝ็ฝฎ้ƒฝไธบไธบ็ฉบๅˆ™ๅฐ†key้šๆœบๅญ˜ๅ…ฅๅ…ถไธญไธ€ไธชไฝ็ฝฎ

  • ๅฆ‚ๆžœๅชๆœ‰ไธ€ไธชไฝ็ฝฎไธบ็ฉบๅˆ™ๅญ˜ๅ…ฅไธบ็ฉบ็š„ไฝ็ฝฎ

  • ๅฆ‚ๆžœ้ƒฝไธไธบ็ฉบ๏ผŒๅˆ™้šๆœบ่ธขๅ‡บไธ€ไธชๅ…ƒ็ด ๏ผŒ่ธขๅ‡บ็š„ๅ…ƒ็ด ๅ†้‡ๆ–ฐ่ฎก็ฎ—ๅ“ˆๅธŒๆ‰พๅˆฐ็›ธๅบ”็š„ไฝ็ฝฎ

ๅฝ“็„ถๅ‡ๅฆ‚ๅญ˜ๅœจ็ปๅฏน็š„็ฉบ้—ดไธ่ถณ๏ผŒ้‚ฃ่€ๆ˜ฏ่ธขๅ‡บไนŸไธๆ˜ฏๅŠžๆณ•๏ผŒๆ‰€ไปฅไธ€่ˆฌไผš่ฎพ็ฝฎไธ€ไธช่ธขๅ‡บ้˜ˆๅ€ผ๏ผŒๅฆ‚ๆžœๅœจๆŸๆฌกๆ’ๅ…ฅ่กŒไธบ่ฟ‡็จ‹ไธญ่ฟž็ปญ่ธขๅ‡บ่ถ…่ฟ‡้˜ˆๅ€ผ๏ผŒๅˆ™่ฟ›่กŒๆ‰ฉๅฎนใ€‚

ๆข่จ€ไน‹๏ผš

ๅฎƒๆœ‰ไธคไธช hash ่กจ๏ผŒ่ฎฐไธบ T1๏ผŒT2ใ€‚

ไธคไธช hash ๅ‡ฝๆ•ฐ๏ผŒ่ฎฐไธบ h1๏ผŒh2ใ€‚

ๅฝ“ไธ€ไธชไธๅญ˜ๅœจ็š„ๅ…ƒ็ด ๆ’ๅ…ฅ็š„ๆ—ถๅ€™๏ผŒไผšๅ…ˆๆ นๆฎ h1 ่ฎก็ฎ—ๅ‡บๅ…ถๅœจ T1 ่กจ็š„ไฝ็ฝฎ๏ผŒๅฆ‚ๆžœ่ฏฅไฝ็ฝฎไธบ็ฉบๅˆ™ๅฏไปฅๆ”พ่ฟ›ๅŽปใ€‚

ๅฆ‚ๆžœ่ฏฅไฝ็ฝฎไธไธบ็ฉบ๏ผŒๅˆ™ๆ นๆฎ h2 ่ฎก็ฎ—ๅ‡บๅ…ถๅœจ T2 ่กจ็š„ไฝ็ฝฎ๏ผŒๅฆ‚ๆžœ่ฏฅไฝ็ฝฎไธบ็ฉบๅˆ™ๅฏไปฅๆ”พ่ฟ›ๅŽปใ€‚

ๅฆ‚ๆžœ่ฏฅไฝ็ฝฎไธไธบ็ฉบ๏ผŒๅฐฑๆŠŠๅฝ“ๅ‰ไฝ็ฝฎไธŠ็š„ๅ…ƒ็ด ่ธขๅ‡บๅŽป๏ผŒ็„ถๅŽๆŠŠๅฝ“ๅ‰ๅ…ƒ็ด ๆ”พ่ฟ›ๅŽปๅฐฑ่กŒไบ†ใ€‚

ไนŸๅฏไปฅ้šๆœบ่ธขๅ‡บไธคไธชไฝ็ฝฎไธญ็š„ไธ€ไธช๏ผŒๆ€ปไน‹ไผšๆœ‰ไธ€ไธชๅ…ƒ็ด ่ขซ่ธขๅ‡บๅŽปใ€‚

่ขซ่ธขๅ‡บๅŽป็š„ๅ…ƒ็ด ๆ€ŽไนˆๅŠžๅ‘ข๏ผŸ

่ฟ™็ง็ฑปไผผไบŽๅฅ—ๅจƒ็š„่งฃๅ†ณๆ–นๅผ็œ‹ๆ˜ฏๅฏ่กŒ๏ผŒไฝ†ๆ˜ฏๆ€ปๆ˜ฏๆœ‰ๅ‡บ็Žฐๅพช็Žฏ่ธขๅ‡บๅฏผ่‡ดๆ”พไธ่ฟ› x ็š„้—ฎ้ข˜ใ€‚

ๆฏ”ๅฆ‚ไธŠๅ›พไธญ็š„(b)

ๅฝ“้‡ๅˆฐ่ฟ™็งๆƒ…ๅ†ตๆ—ถๅ€™๏ผŒ่ฏดๆ˜Žๅธƒ่ฐท้ธŸ hash ๅทฒ็ปๅˆฐไบ†ๆž้™ๆƒ…ๅ†ต๏ผŒๅบ”่ฏฅ่ฟ›่กŒๆ‰ฉๅฎน๏ผŒๆˆ–่€… hash ๅ‡ฝๆ•ฐ็š„ไผ˜ๅŒ–ใ€‚ๆ‰€ไปฅ๏ผŒไฝ ๅ†ๆฌกๅŽป็œ‹ไผชไปฃ็ ็š„ๆ—ถๅ€™๏ผŒไฝ ไผšๆ˜Ž็™ฝ้‡Œ้ข็š„ MaxLoop ็š„ๅซไน‰ๆ˜ฏไป€ไนˆไบ†ใ€‚

่ฟ™ไธช MaxLoop ็š„ๅซไน‰ๅฐฑๆ˜ฏไธบไบ†้ฟๅ…็›ธไบ’่ธขๅ‡บ็š„่ฟ™ไธช่ฟ‡็จ‹ๆ‰ง่กŒๆฌกๆ•ฐๅคชๅคš๏ผŒ่ฎพ็ฝฎ็š„ไธ€ไธช้˜ˆๅ€ผใ€‚

Cuckoo Filter

๏ผˆa๏ผ‰(b)ๅฑ•็คบไบ†ไธ€ไธชๅŸบๆœฌ็š„ๅธƒ่ฐท้ธŸๅ“ˆๅธŒ่กจ็š„ๆ’ๅ…ฅๆ“ไฝœ๏ผŒๆ˜ฏ็”ฑไธ€ไธชๆกถๆ•ฐ็ป„็ป„ๆˆ๏ผŒๆฏไธชๆ’ๅ…ฅ้กน้ƒฝๆœ‰็”ฑๆ•ฃๅˆ—ๅ‡ฝๆ•ฐh1(x)ๅ’Œh2(x)็กฎๅฎš็š„ไธคไธชๅ€™้€‰ๆกถ๏ผŒๅ…ทไฝ“ๆ“ไฝœไธŠๆ–‡ไธญๅทฒ็ปๆ่ฟฐใ€‚

่€ŒๅŸบๆœฌ็š„ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จไนŸๆ˜ฏ็”ฑไธคไธชๆˆ–่€…ๅคšไธชๅ“ˆๅธŒๅ‡ฝๆ•ฐๆž„ๆˆ๏ผŒๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ็š„ๅธƒ่ฐท้ธŸๅ“ˆๅธŒ่กจ็š„ๅŸบๆœฌๅ•ไฝ็งฐไธบๆก็›ฎ๏ผˆentry๏ผ‰ใ€‚ ๆฏไธชๆก็›ฎๅญ˜ๅ‚จไธ€ไธชๆŒ‡็บน๏ผˆfingerprint๏ผ‰ใ€‚

ๆŒ‡็บนๆŒ‡็š„ๆ˜ฏไฝฟ็”จไธ€ไธชๅ“ˆๅธŒๅ‡ฝๆ•ฐ็”Ÿๆˆ็š„nไฝๆฏ”็‰นไฝ๏ผŒn็š„ๅ…ทไฝ“ๅคงๅฐ็”ฑๆ‰€่ƒฝๆŽฅๅ—็š„่ฏฏๅˆค็އๆฅ่ฎพ็ฝฎ๏ผŒ่ฎบๆ–‡ไธญ็š„ไพ‹ๅญไฝฟ็”จ็š„ๆ˜ฏ**8 bits**็š„ๆŒ‡็บนๅคงๅฐใ€‚

ๆŸฅ่ฏขๆ•ฐๆฎ็š„ๆ—ถๅ€™๏ผŒๅฐฑๆ˜ฏ็œ‹็œ‹ๅฏนๅบ”็š„ไฝ็ฝฎไธŠๆœ‰ๆฒกๆœ‰ๅฏนๅบ”็š„โ€œๆŒ‡็บนโ€ไฟกๆฏ๏ผš

ๅˆ ้™คๆ•ฐๆฎ็š„ๆ—ถๅ€™๏ผŒไนŸๅชๆ˜ฏๆŠนๆމ่ฏฅไฝ็ฝฎไธŠ็š„โ€œๆŒ‡็บนโ€่€Œๅทฒ๏ผš

็”ฑไบŽๆ˜ฏๅฏนๅ…ƒ็ด ่ฟ›่กŒ hash ่ฎก็ฎ—๏ผŒ้‚ฃไนˆๅฟ…็„ถไผšๅ‡บ็Žฐโ€œๆŒ‡็บนโ€็›ธๅŒ็š„ๆƒ…ๅ†ต๏ผŒไนŸๅฐฑๆ˜ฏไผšๅ‡บ็Žฐ่ฏฏๅˆค็š„ๆƒ…ๅ†ตใ€‚

ๆฒกๆœ‰ๅญ˜ๅ‚จๅŽŸๆ•ฐๆฎ๏ผŒๆ‰€ไปฅ็‰บ็‰ฒไบ†ๆ•ฐๆฎ็š„ๅ‡†็กฎๆ€ง๏ผŒไฝ†ๆ˜ฏๅชไฟๅญ˜ไบ†ๅ‡ ไธช bit๏ผŒๅ› ๆญคๆๅ‡ไบ†็ฉบ้—ดๆ•ˆ็އใ€‚

ๅ‰้ข็š„(a)ใ€(b)ๅพˆ็ฎ€ๅ•๏ผŒ่ฟ˜ๆ˜ฏไธคไธช hash ๅ‡ฝๆ•ฐ๏ผŒไฝ†ๆ˜ฏๆฒกๆœ‰็”จไธคไธชๆ•ฐ็ป„ๆฅๅญ˜ๆ•ฐๆฎ๏ผŒๅฐฑๆ˜ฏๅŸบไบŽไธ€็ปดๆ•ฐ็ป„็š„ๅธƒ่ฐท้ธŸ hash ๏ผŒๆ ธๅฟƒ่ฟ˜ๆ˜ฏ่ธขๆฅ่ธขๅŽป๏ผŒ้‡็‚นๅœจไบŽ(c)๏ผŒๅฏนๆ•ฐ็ป„่ฟ›่กŒไบ†ๅฑ•ๅผ€๏ผŒไปŽไธ€็ปดๅ˜ๆˆไบ†ไบŒ็ปด๏ผšๆฏไธ€ไธชไธ‹ๆ ‡๏ผŒๅฏไปฅๆ”พ 4 ไธชๅ…ƒ็ด ไบ†๏ผŒ็ฉบ้—ดๅˆฉ็”จ็އ้ฃ™ๅ‡๏ผ

_็ผบ็‚น_่ฏฆ่ง่ฎบๆ–‡็ฌฌๅ…ญ่Š‚orๆœฌๆ–‡ไธ‹้ข

Insert

ๆ’ๅ…ฅๆ˜ฏ้‡็‚น๏ผŒไธŽๆœด็ด ็š„ๅธƒ่ฐท้ธŸๅ“ˆๅธŒไธๅŒใ€‚้ฆ–ๅ…ˆ๏ผŒๆˆ‘ไปฌๅ›žๅฟ†ไธ€ไธ‹ๅธƒ่ฐท้ธŸ hash๏ผŒๅฎƒๅญ˜ๅ‚จ็š„ๆ˜ฏๆ’ๅ…ฅๅ…ƒ็ด ็š„ๅŽŸๅง‹ๅ€ผ๏ผŒๆฏ”ๅฆ‚ x๏ผŒx ไผš็ป่ฟ‡ไธคไธช hash ๅ‡ฝๆ•ฐ๏ผŒๅฆ‚ๆžœๆˆ‘ไปฌ่ฎฐๆ•ฐ็ป„็š„้•ฟๅบฆไธบ L๏ผŒ้‚ฃไนˆๅฐฑๆ˜ฏ่ฟ™ๆ ท็š„๏ผš

p1 = hash1(x) % L

p2 = hash2(x) % L


ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ้‡‡ๅ–ไบ†ไธคไธชๅนถไธ็‹ฌ็ซ‹็š„ๅ“ˆๅธŒๅ‡ฝๆ•ฐ:

ๅ…ˆ่ฏดๆŒ‡็บน๏ผšๅ…ทไฝ“็š„ๆŒ‡็บนๆ˜ฏ้€š่ฟ‡ๅ“ˆๅธŒๅ‡ฝๆ•ฐๅ–ไธ€ๅฎš้‡็š„ๆฏ”็‰นไฝ:

f = fingerprint(x)

ไธ‹้ขๆ˜ฏๅ“ˆๅธŒๅ‡ฝๆ•ฐ๏ผš

i1 = h1(x) = hash(x) ้€š่ฟ‡ๆŸไธชๅ“ˆๅธŒๅ‡ฝๆ•ฐ่ฎก็ฎ—ๅ‡บๆฅ

i2 = h2(x) = i1 โŠ• hash(f) ไฝฟ็”จ็ฌฌไธ€ไธช็ดขๅผ•ๅ’ŒๆŒ‡็บน็š„ๅ“ˆๅธŒๅšไบ†ไธ€ไธชๅผ‚ๆˆ–ๆ“ไฝœ

i1ใ€i2ๅณ่ฎก็ฎ—ๅ‡บๆฅไธคไธชๆกถ็š„็ดขๅผ•ใ€‚่ฟ›่กŒๅผ‚ๆˆ–ๆ“ไฝœๆ˜ฏๅ› ไธบๅผ‚ๆˆ–ๆ“ไฝœ็š„็‰นๆ€ง๏ผšๅŒไธบ0ไธๅŒไธบ1๏ผŒไธ”0ๅ’Œไปปไฝ•ๆ•ฐๅผ‚ๆˆ–ๆ˜ฏ่ฟ™ไธชๆ•ฐ็š„ๆœฌ่บซใ€‚ๅผ‚ๆˆ–่ฟ็ฎ—็กฎไฟไบ†ไธ€ไธช้‡่ฆ็š„ๆ€ง่ดจ๏ผšไฝ็ฝฎ i2 ๅฏไปฅ้€š่ฟ‡ไฝ็ฝฎ i1 ๅ’Œ i1 ไธญๅญ˜ๅ‚จ็š„โ€œๆŒ‡็บนโ€่ฎก็ฎ—ๅ‡บๆฅ๏ผŒๅณ๏ผšๅœจๆกถไธญ่ฟ่ตฐไธ€ไธช้”ฎ๏ผŒๆˆ‘ไปฌ็›ดๆŽฅ็”จๅฝ“ๅ‰ๆกถ็š„็ดขๅผ•iๅ’Œๅญ˜ๅ‚จๅœจๆกถไธญ็š„ๆŒ‡็บน่ฎก็ฎ—ๅฎƒ็š„ๅค‡็”จๆกถใ€‚

ๅ› ไธบไฝฟ็”จ็š„ๅผ‚ๆˆ–่ฟ็ฎ—๏ผŒๆ‰€ไปฅ่ฟ™ไธคไธชไฝ็ฝฎๅ…ทๆœ‰ๅฏนๅถๆ€งใ€‚

ๅช่ฆไฟ่ฏ hash(xโ€™s fingerprint) !=0๏ผŒ้‚ฃไนˆๅฐฑๅฏไปฅ็กฎไฟ h2!=h1๏ผŒไนŸๅฐฑๅฏไปฅ็กฎไฟ๏ผŒไธไผšๅ‡บ็Žฐ่‡ชๅทฑ่ธข่‡ชๅทฑ็š„ๆญปๅพช็Žฏ้—ฎ้ข˜ใ€‚

ไธบไป€ไนˆไธ็›ดๆŽฅ็”จ็ดขๅผ•1ๅ’ŒๆŒ‡็บนๅšๅผ‚ๆˆ–ๆ“ไฝœ๏ผšๅ› ไธบๆŒ‡็บนไธ€่ˆฌๅชๆ˜ฏkeyๆ˜ ๅฐ„ๅ‡บๆฅ็š„ๅฐ‘้‡bitไฝ็ฝฎ๏ผŒ้‚ฃไนˆๅ‡ๅฆ‚ไธ่ฟ›่กŒๅ“ˆๅธŒๆ“ไฝœ๏ผŒๅฝ“ๆŒ‡็บน็š„ๆฏ”็‰นไฝไธŽๆ•ดไธชๆกถๆ•ฐ็ป„็›ธๆฏ”ๅพˆๅฐๆ—ถ๏ผŒ้‚ฃไนˆๅค‡็”จไฝ็ฝฎไฝฟ็”จโ€œi โŠ• ๆŒ‡็บนโ€๏ผŒๅฐ†่ขซๆ”พ็ฝฎๅˆฐ็ฆปๆกถi1ๅพˆ่ฟ‘็š„ไฝ็ฝฎ๏ผŒๆฏ”ๅฆ‚ไฝฟ็”จๅ…ซไฝ็š„ๆŒ‡็บนๅคงๅฐ๏ผŒๆœ€ๅคšๅช่ƒฝๆ”นๅ˜i1็š„ไฝŽๅ…ซไฝ๏ผŒๆ‰€ไปฅไนŸๅฐฑๆ˜ฏไธคไธชๅ€™้€‰้€š็š„ไฝ็ฝฎๆœ€ๅคš็›ธๅทฎ256๏ผŒไธๅˆฉไบŽๅ‡ๅŒ€ๅˆ†้…ใ€‚

ๆ‰€ไปฅ๏ผŒๅฏนโ€œๆŒ‡็บนโ€่ฟ›่กŒๅ“ˆๅธŒๅค„็†ๅฏ็กฎไฟ่ขซ่ธขๅ‡บๅŽป็š„ๅ…ƒ็ด ๏ผŒๅฏไปฅ้‡ๆ–ฐๅฎšไฝๅˆฐๅ“ˆๅธŒ่กจไธญๅฎŒๅ…จไธๅŒ็š„ๅญ˜ๅ‚จๆกถไธญ๏ผŒไปŽ่€Œๅ‡ๅฐ‘ๅ“ˆๅธŒๅ†ฒ็ชๅนถๆ้ซ˜่กจๅˆฉ็”จ็އใ€‚

่ฟ˜ๆœ‰ไธช้—ฎ้ข˜๏ผš

ๅฎƒๆฒกๆœ‰ๅฏนๆ•ฐ็ป„็š„้•ฟๅบฆ่ฟ›่กŒๅ–ๆจก๏ผŒ้‚ฃไนˆๅฎƒๆ€Žไนˆไฟ่ฏ่ฎก็ฎ—ๅ‡บๆฅ็š„ไธ‹ๆ ‡ไธ€ๅฎšๆ˜ฏ่ฝๅœจๆ•ฐ็ป„ไธญ็š„ๅ‘ข๏ผŸ

่ฟ™ไธชๅฐฑๅพ—่ฏดๅˆฐๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ็š„ๅฆๅค–ไธ€ไธช้™ๅˆถไบ†๏ผš

ๅ…ถๅผบๅˆถๆ•ฐ็ป„็š„้•ฟๅบฆๅฟ…้กปๆ˜ฏ 2 ็š„ๆŒ‡ๆ•ฐๅ€๏ผšไบŒ่ฟ›ๅˆถไธ€ๅฎšๆ˜ฏ่ฟ™ๆ ท็š„๏ผš10000000...๏ผˆnไธช0๏ผ‰ใ€‚

่ฟ™ไธช้™ๅˆถๅธฆๆฅ็š„ๅฅฝๅค„ๅฐฑๆ˜ฏ๏ผŒ่ฟ›่กŒๅผ‚ๆˆ–่ฟ็ฎ—ๆ—ถ๏ผŒๅฏไปฅไฟ่ฏ่ฎก็ฎ—ๅ‡บๆฅ็š„ไธ‹ๆ ‡ไธ€ๅฎšๆ˜ฏ่ฝๅœจๆ•ฐ็ป„ไธญ็š„ใ€‚

่ฟ™ไธช้™ๅˆถๅธฆๆฅ็š„ๅๅค„ๅฐฑๆ˜ฏ๏ผš

  • ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘ๆ”ฏๆŒๅˆ ้™คๆ“ไฝœใ€‚

  • ๅธƒ้š†่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘ไธ้œ€่ฆ้™ๅˆถ้•ฟๅบฆไธบ 2 ็š„ๆŒ‡ๆ•ฐๅ€ใ€‚

  • ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘ๆŸฅๆ‰พๆ€ง่ƒฝๆฏ”ไฝ ้ซ˜ใ€‚

  • ๅธƒ้š†่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘ไธ้œ€่ฆ้™ๅˆถ้•ฟๅบฆไธบ 2 ็š„ๆŒ‡ๆ•ฐๅ€ใ€‚

  • ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘็ฉบ้—ดๅˆฉ็”จ็އไนŸ้ซ˜ใ€‚

  • ๅธƒ้š†่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘ไธ้œ€่ฆ้™ๅˆถ้•ฟๅบฆไธบ 2 ็š„ๆŒ‡ๆ•ฐๅ€ใ€‚

  • ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ๏ผšๆˆ‘็ƒฆๆญปไบ†๏ผŒCNM๏ผ

Search

็ป™ๅฎšไธ€ไธช้กนx๏ผŒ็ฎ—ๆณ•้ฆ–ๅ…ˆๆ นๆฎไธŠ่ฟฐๆ’ๅ…ฅๅ…ฌๅผ๏ผŒ่ฎก็ฎ—x็š„ๆŒ‡็บนๅ’Œไธคไธชๅ€™้€‰ๆกถใ€‚็„ถๅŽ่ฏปๅ–่ฟ™ไธคไธชๆกถ๏ผšๅฆ‚ๆžœไธคไธชๆกถไธญ็š„ไปปไฝ•็Žฐๆœ‰ๆŒ‡็บนๅŒน้…๏ผŒๅˆ™ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ่ฟ”ๅ›žtrue๏ผŒๅฆๅˆ™่ฟ‡ๆปคๅ™จ่ฟ”ๅ›žfalseใ€‚ๆญคๆ—ถ๏ผŒๅช่ฆไธๅ‘็”Ÿๆกถๆบขๅ‡บ๏ผŒๅฐฑๅฏไปฅ็กฎไฟๆฒกๆœ‰ๅ‡้˜ดๆ€ง

Delete

ๆ ‡ๅ‡†ๅธƒ้š†่ฟ‡ๆปคๅ™จไธ่ƒฝๅˆ ้™ค๏ผŒๅ› ๆญคๅˆ ้™คๅ•ไธช้กน้œ€่ฆ้‡ๅปบๆ•ดไธช่ฟ‡ๆปคๅ™จ๏ผŒ่€Œ่ฎกๆ•ฐๅธƒ้š†่ฟ‡ๆปคๅ™จ้œ€่ฆๆ›ดๅคš็š„็ฉบ้—ดใ€‚

ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จๅฐฑๅƒ่ฎกๆ•ฐๅธƒ้š†่ฟ‡ๆปคๅ™จ๏ผŒๅฏไปฅ้€š่ฟ‡ไปŽๅ“ˆๅธŒ่กจๅˆ ้™ค็›ธๅบ”็š„ๆŒ‡็บนไปŽ่€Œๅˆ ้™คๆ’ๅ…ฅ็š„้กน๏ผŒๅ…ถไป–ๅ…ทๆœ‰็ฑปไผผๅˆ ้™ค่ฟ‡็จ‹็š„่ฟ‡ๆปคๅ™จๆฏ”ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จๆ›ดๅคๆ‚ใ€‚

ๅ…ทไฝ“ๅˆ ้™ค็š„่ฟ‡็จ‹ไนŸๅพˆ็ฎ€ๅ•๏ผŒๆฃ€ๆŸฅ็ป™ๅฎš้กน็š„ไธคไธชๅ€™้€‰ๆกถ๏ผ›ๅฆ‚ๆžœไปปไฝ•ๆกถไธญ็š„ๆŒ‡็บนๅŒน้…๏ผŒๅˆ™ไปŽ่ฏฅๆกถไธญๅˆ ้™คๅŒน้…ๆŒ‡็บน็š„ไธ€ไปฝๅ‰ฏๆœฌใ€‚

็ผบ็‚น

  • **ๅˆ ้™คไธๅฎŒ็พŽ๏ผŒๅญ˜ๅœจ่ฏฏๅˆ ็š„ๆฆ‚็އใ€‚**ๅˆ ้™ค็š„ๆ—ถๅ€™ๅชๆ˜ฏๅˆ ้™คไบ†ไธ€ไปฝๆŒ‡็บนๅ‰ฏๆœฌ๏ผŒๅนถไธ่ƒฝ็กฎๅฎšๆญคๆŒ‡็บนๅ‰ฏๆœฌๆ˜ฏ่ฆๅˆ ้™ค็š„key็š„ๆŒ‡็บนใ€‚ๅŒๆ—ถ่ฟ™ไธช้—ฎ้ข˜ไนŸๅฏผ่‡ดไบ†ๅ‡้˜ณๆ€ง็š„ๆƒ…ๅ†ตใ€‚

  • **ๆ’ๅ…ฅๅคๆ‚ๅบฆๆฏ”่พƒ้ซ˜ใ€‚**้š็€ๆ’ๅ…ฅๅ…ƒ็ด ็š„ๅขžๅคš๏ผŒๅคๆ‚ๅบฆไผš่ถŠๆฅ่ถŠ้ซ˜๏ผŒๅ› ไธบๅญ˜ๅœจๆกถๆปก๏ผŒ่ธขๅ‡บ็š„ๆ“ไฝœ๏ผŒๆ‰€ไปฅ้œ€่ฆ้‡ๆ–ฐ่ฎก็ฎ—๏ผŒไฝ†็ปผๅˆๆฅ่ฎฒๅคๆ‚ๅบฆ่ฟ˜ๆ˜ฏๅธธๆ•ฐ็บงๅˆซใ€‚

  • ๅญ˜ๅ‚จ็ฉบ้—ด็š„ๅคงๅฐๅฟ…้กปไธบ2็š„ๆŒ‡ๆ•ฐ็š„้™ๅˆถ่ฎฉ็ฉบ้—ดๆ•ˆ็އๆ‰“ไบ†ๆŠ˜ๆ‰ฃใ€‚

  • ๅŒไธ€ไธชๅ…ƒ็ด ๆœ€ๅคšๆ’ๅ…ฅkbๆฌก๏ผŒ๏ผˆkๆŒ‡ๅ“ˆๅธŒๅ‡ฝๆ•ฐ็š„ไธชๆ•ฐ๏ผŒbๆŒ‡็š„ๆกถไธญ่ƒฝ่ฃ…ๆŒ‡็บน็š„ไธชๆ•ฐไนŸๅฏไปฅ่ฏดๆ˜ฏๆกถ็š„ๅฐบๅฏธๅคงๅฐ๏ผˆไธ€ไธชไธ‹ๆ ‡่ƒฝๆ”พๅ‡ ไธชๅ…ƒ็ด ๏ผ‰๏ผ‰ๅฆ‚ๆžœๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จๆ”ฏๆŒๅˆ ้™ค๏ผŒๅˆ™ๅฟ…้กปๅญ˜ๅ‚จๅŒไธ€้กน็š„ๅคšไธชๅ‰ฏๆœฌใ€‚ ๆ’ๅ…ฅๅŒไธ€้กนkb+1ๆฌกๅฐ†ๅฏผ่‡ดๆ’ๅ…ฅๅคฑ่ดฅใ€‚ ่ฟ™็ฑปไผผไบŽ่ฎกๆ•ฐๅธƒ้š†่ฟ‡ๆปคๅ™จ๏ผŒๅ…ถไธญ้‡ๅคๆ’ๅ…ฅไผšๅฏผ่‡ด่ฎกๆ•ฐๅ™จๆบขๅ‡บใ€‚

    ๆฏ”ๅฆ‚ 2 ไธช hash ๅ‡ฝๆ•ฐ๏ผŒไธ€ไธชไบŒ็ปดๆ•ฐ็ป„๏ผŒๅฎƒ็š„ๆฏไธชไธ‹ๆ ‡ๆœ€ๅคšๅฏไปฅๆ’ๅ…ฅ 4 ไธชๅ…ƒ็ด ใ€‚้‚ฃไนˆๅฏนไบŽๅŒไธ€ไธชๅ…ƒ็ด ๏ผŒๆœ€ๅคšๆ”ฏๆŒๆ’ๅ…ฅ 8 ๆฌกใ€‚

    ไพ‹ๅฆ‚ไธ‹้ข่ฟ™็งๆƒ…ๅ†ต๏ผš

    why ๅทฒ็ปๆ’ๅ…ฅไบ† 8 ๆฌกไบ†๏ผŒๅฆ‚ๆžœๅ†ๆฌกๆ’ๅ…ฅไธ€ไธช why๏ผŒๅˆ™ไผšๅ‡บ็Žฐๅพช็Žฏ่ธขๅ‡บ็š„้—ฎ้ข˜๏ผŒ็›ดๅˆฐๆœ€ๅคงๅพช็Žฏๆฌกๆ•ฐ๏ผŒ็„ถๅŽ่ฟ”ๅ›žไธ€ไธช falseใ€‚

    ๆ€Žไนˆ้ฟๅ…่ฟ™ไธช้—ฎ้ข˜ๅ‘ข

    ๆˆ‘ไปฌ็ปดๆŠคไธ€ไธช่ฎฐๅฝ•่กจ๏ผŒ่ฎฐๅฝ•ๆฏไธชๅ…ƒ็ด ๆ’ๅ…ฅ็š„ๆฌกๆ•ฐๅฐฑ่กŒไบ†ใ€‚

    ่™ฝ็„ถ้€ป่พ‘็ฎ€ๅ•๏ผŒไฝ†ๆ˜ฏๆƒณๆƒณๆ•ฐๆฎ้‡ๅคง็š„ๆƒ…ๅฝข๏ผŒ่ฟ™ไธช่กจ็š„ๅญ˜ๅ‚จ็ฉบ้—ดๅˆๆ€Žไนˆ็ฎ—ๅ‘ข๏ผŸemmmmmm

ๆกถ็š„ๅฐบๅฏธ๏ผš

ๆ˜ฏๆŒ‡ๆฏไธชๆกถ่ƒฝๆ”พ็š„ๆŒ‡็บนไธชๆ•ฐ๏ผŒไฟๆŒๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ็š„ๆ€ปๅคงๅฐ๏ผˆๆกถๆ•ฐ็ป„๏ผ‰ไธๅ˜๏ผŒไฝ†ๆ”นๅ˜ๆกถ็š„ๅคงๅฐ๏ผˆไธŠ่ฟฐไพ‹ๅญไฝฟ็”จ็š„ๆ˜ฏๅคงๅฐไธบ4๏ผ‰ไผšๅฏผ่‡ดไธคไธชๅŽๆžœ๏ผš

(1) ่พƒๅคง็š„ๆกถๅฏไปฅๆ้ซ˜่กจ็š„ๅˆฉ็”จ็އ(ๅณb่ถŠๅคงๅ‡้˜ณๆ€ง็އ่ถŠๅคง) ๏ผŒไฝฟ็”จk=2ไธชๅ“ˆๅธŒๅ‡ฝๆ•ฐๆ—ถ๏ผŒๅฝ“ๆกถๅคงๅฐb=1๏ผˆๅณ็›ดๆŽฅๆ˜ ๅฐ„ๅ“ˆๅธŒ่กจ๏ผ‰ๆ—ถ๏ผŒ่ดŸ่ฝฝๅ› ๅญฮฑไธบ50%๏ผŒไฝ†ไฝฟ็”จๆกถๅคงๅฐb=2ใ€4ๆˆ–8ๆ—ถๅˆ™ๅˆ†ๅˆซไผšๅขžๅŠ ๅˆฐ84%ใ€95%ๅ’Œ98%ใ€‚

(2) ่พƒๅคง็š„ๆกถ้œ€่ฆ่พƒ้•ฟ็š„ๆŒ‡็บนๆ‰่ƒฝไฟๆŒ็›ธๅŒ็š„ๅ‡้˜ณๆ€ง็އ(ๅณb่ถŠๅคงf่ถŠๅคง)ใ€‚ ไฝฟ็”จ่พƒๅคง็š„ๆกถๆ—ถ๏ผŒๆฏๆฌกๆŸฅๆ‰พ้ƒฝไผšๆฃ€ๆŸฅๆ›ดๅคš็š„ๆก็›ฎ๏ผŒไปŽ่€Œๆœ‰ๆ›ดๅคง็š„ๆฆ‚็އไบง็”ŸๆŒ‡็บนๅ†ฒ็ชใ€‚

ๆ‰€ไปฅ่ฆๅŸบไบŽไปฅไธŠๅฏปๆ‰พไธ€ไธชๆœ€ๅˆ้€‚็š„ๆกถๅคงๅฐ

่ดดไธ€ไธช

image-20210727104910960
img
img
img
1
img
img
๐Ÿฆธโ€โ™‚๏ธ
๐Ÿง
CMU็š„ไฝฌๅ†™็š„C++ๅฎž็Žฐ๐Ÿ‘ˆ