αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž–αžΈαžšαž”αžΈαžαŸ’αž„αŸƒαž˜αž»αž“αŸ” αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘ Hydra. αž”αž»αžšαžŸαž˜αž€αž–αžΈ JUG.ru Group αž”αžΆαž“αž’αž‰αŸ’αž‡αžΎαž‰αžœαžΆαž‚αŸ’αž˜αž·αž“αž€αŸ’αž“αž»αž„αžŸαž»αž”αž·αž“ (Leslie Lamport! Cliff Click! Martin Kleppmann!) αž αžΎαž™αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž–αžΈαžšαžαŸ’αž„αŸƒαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αŸ‚αž€αž…αžΆαž™ αž“αž·αž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαŸ” Kontur αž‚αžΊαž‡αžΆαžŠαŸƒαž‚αžΌαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžŠαŸƒαž‚αžΌαž‘αžΆαŸ†αž„αž”αžΈαž“αŸƒαžŸαž“αŸ’αž“αž·αžŸαžΈαž‘αž“αŸαŸ‡αŸ” αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αž“αŸ…αžŸαŸ’αžαž„αŸ‹ αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αž…αŸ‚αž€αž…αžΆαž™αžšαž”αžŸαŸ‹αž™αžΎαž„ αž›αŸαž„αž”αŸŠαžΈαž„αž αŸ’αž‚αŸ„ αž“αž·αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž›αŸ’αž”αŸ‚αž„αž•αŸ’αž‚αž»αŸ†αžšαžΌαž”αŸ”

αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαž€αžΆαžŸβ€‹αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αžœαž·αž—αžΆαž‚β€‹αž“αŸƒβ€‹αž—αžΆαžšαž€αž·αž…αŸ’αž…β€‹αž“αŸ… Kontur αžˆαžšβ€‹αž–αžΈβ€‹αž’αŸ’αž“αž€β€‹αž“αž·αž–αž“αŸ’αž’β€‹αž“αŸƒβ€‹αž’αžαŸ’αžαž”αž‘β€‹αžšαž”αžŸαŸ‹β€‹αž–αž½αž€β€‹αž‚αŸβ€‹αŸ” αžαžΎαž’αŸ’αž“αž€αžŽαžΆαž“αŸ…αž›αžΎ Hydra - αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž αŸαžαž»αž•αž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž…αžΆαŸ†αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαžΈαž€αžšαžΆαž™αžŠαŸ‚αž›αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆ - αž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΈαž€αžαž½αžšαž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž’αŸ†αž’αžΌ- αž…αŸ†αžŽαžΆαŸ†αŸ”

αž˜αžΆαž“β€‹αžŸαžΌαž˜αŸ’αž”αžΈβ€‹αžαŸ‚β€‹αž’αŸ’αž“αž€β€‹αž…αžΌαž›αžšαž½αž˜β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžšαž»αŸ‡αžšαžΎβ€‹αžαžΆαžšαžΆαž„β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž‡αžΆβ€‹αžŸαŸ’αž›αžΆαž™β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αžŸαžšαžŸαŸαžšβ€‹αž€αžΆαžšβ€‹αžŸαž˜αŸ’αžšαŸαž…β€‹αž…αž·αžαŸ’αžβ€‹αžšαž”αžŸαŸ‹β€‹αž–αž½αž€αž‚αŸαŸ” αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž“αž·αž™αžΆαž™αž›αŸαž„αž‘αŸ αž–αž½αž€αž‚αŸαž”αžΆαž“αž”αŸ’αžšαž‚αž›αŸ‹αž€αŸ’αžšαžŠαžΆαžŸαž˜αž½αž™αžŠαž»αŸ†αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αŸ–

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αžŸαžšαž»αž”αž˜αžΆαž“αž€αž·αž…αŸ’αž…αž€αžΆαžšαž…αŸ†αž“αž½αž“αž”αžΈαŸ–

  • αž’αŸ†αž–αžΈαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžαžΆαž˜αž‘αž˜αŸ’αž„αž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž»αž›αŸ’αž™αž—αžΆαž–αž”αž“αŸ’αž‘αž»αž€
  • αž’αŸ†αž–αžΈαž€αžΆαžšαžαž˜αŸ’αžšαŸ€αž”αž›αž‘αŸ’αž’αž•αž›αžŸαŸ†αžŽαž½αžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†
  • αž“αŸ…αž›αžΎαž€αžΆαžšαž•αŸ’αž‘αŸαžšαžšαžŠαŸ’αž‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž˜αž½αž™ topology αž…αž·αž‰αŸ’αž…αŸ€αž“αž˜αž½αž™αŸ”

αž€αž·αž…αŸ’αž…αž€αžΆαžš 1. ClusterClient

αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž“αžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒ K αž–αžΈ N αž‘αž˜αŸ’αž„αž“αŸ‹αž…αž˜αŸ’αž›αž„αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αŸ‚αž€αž…αžΆαž™αŸ–

αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αžΆαž“αž—αžΆαžšαž€αž·αž…αŸ’αž…αž”αž„αŸ’αž€αžΎαžαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž’αžαž·αžαž·αž‡αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜ N αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž™αŸ‰αžΆαž„αž…αŸ’αžšαžΎαž“αŸ” αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž“αžΉαž„αžαžΆαž˜αžŠαžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžαŸ’αž“αžΆαŸ†αž„ (ឧ. αž—αžΆαž–αž™αžΊαžαž™αŸ‰αžΆαžœαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž’αžαŸ’αžšαžΆαž†αŸ’αž›αžΎαž™αžαž” 4xx/5xx αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžšαž™αž»αž‘αŸ’αž’αžŸαžΆαžŸαŸ’αžαŸ’αžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‚αž½αžšαžαŸ‚αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ K αž“αŸƒ N nodes αžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™β€”αž±αž€αžΆαžŸαž“αŸƒαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‚αž½αžšαžαŸ‚αžŸαž˜αžΆαž˜αžΆαžαŸ’αžšαž‘αŸ…αž“αžΉαž„αž‘αž˜αŸ’αž„αž“αŸ‹αžšαž”αžŸαŸ‹αžαŸ’αž“αžΆαŸ†αž„αž˜αž½αž™αŸ”

αžŸαŸ’αž“αžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαŸ’αž“αžΆαŸ†αž„αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” αž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαž‚αžŽαž“αžΆαžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž‰αŸ’αž‰αžΆ O αž’αŸ†αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‡αžΆαž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ?

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸαŸ‡ αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘αž”αžΆαž“αž”αŸ’αžšαž™αž»αž‘αŸ’αž’αž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸ αž αžΎαž™αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸαž‚αžΊαž‡αžΆαž—αžΆαžŸαžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹ Hydra αŸ” αž—αžΆαžšαž€αž·αž…αŸ’αž…αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αž™αž€αž€αŸ’αžšαžŠαžΆαžŸ αž“αž·αž„αžαŸ’αž˜αŸ…αžŠαŸƒαž˜αž€αž‚αž·αž αž€αž»αŸ†αž”αŸ’αžšαž‰αžΆαž”αŸ‹αž”αžΎαž€ spoiler αž—αŸ’αž›αžΆαž˜αŸ—πŸ™‚

αž€αžΆαžšαžœαž·αž—αžΆαž‚αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ (វីដេធូ)

αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸ…αž˜αŸ‰αŸ„αž„ 5:53 αžαŸ’αžšαžΉαž˜αžαŸ‚ 4 αž“αžΆαž‘αžΈαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ–

αž αžΎαž™β€‹αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αžšαž”αŸ€αž”β€‹αžŠαŸ‚αž›β€‹αž”αž»αžšαžŸβ€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžαžΆαžšαžΆαž„β€‹αž”αŸ†αž”αŸ’αž›αŸ‚αž„β€‹αž”αžΆαž“β€‹αžŠαžΆαž€αŸ‹β€‹αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αžšαž”αžŸαŸ‹β€‹αž–αž½αž€αž‚αŸαŸ–


αž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ (αž’αžαŸ’αžαž”αž‘)

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαŸ’αžαž·αžαž“αŸ…αž›αžΎαž•αŸ’αž‘αŸƒαŸ– αž”αžΌαž€αž‘αž˜αŸ’αž„αž“αŸ‹αž“αŸƒαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž”αž„αŸ’αž€αžΎαžαž›αŸαžαž…αŸƒαžŠαž“αŸ’αž™αž–αžΈ 0 αž‘αŸ…αž•αž›αž”αžΌαž€αž“αŸƒαž‘αž˜αŸ’αž„αž“αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ i-replica αžŠαŸ‚αž›αž•αž›αž”αžΌαž€αž“αŸƒαž‘αž˜αŸ’αž„αž“αŸ‹αž…αž˜αŸ’αž›αž„αž–αžΈ 0 αž‘αŸ… (i-1)th αž‚αžΊαžαž·αž…αž‡αžΆαž„αž…αŸ†αž“αž½αž“αž…αŸƒαžŠαž“αŸ’αž™ αž αžΎαž™αž•αž›αž”αžΌαž€αž“αŸƒαž‘αž˜αŸ’αž„αž“αŸ‹αž…αž˜αŸ’αž›αž„αž–αžΈ 0 αžŠαž›αŸ‹ i-th - αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αžœαžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž“αžΉαž„αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž˜αž½αž™αž”αžΆαž“ αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž˜αž½αž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž”αŸ‚αž”αž”αž‘αž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ‚αž”αž“αŸαŸ‡ αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž˜αž½αž™αž‚αžΊ O(N) αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ K αž…αž˜αŸ’αž›αž„αž‚αžΊ O(N K) ~ O(N2) αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž½αž“αž‡αŸ’αžšαž»αž„αž‚αžΊαž˜αž·αž“αž›αŸ’αž’αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αžŸαžΆαž„αžŸαž„αŸ‹ αž˜αŸ‚αž€αž’αžΆαž„αž•αŸ’αž“αŸ‚αž€ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αž›αž”αžΌαž€αž“αŸƒαž‘αž˜αŸ’αž„αž“αŸ‹αŸ” αž˜αŸ‚αž€αž’αžΆαž„αž“αŸƒαž‡αž˜αŸ’αžšαŸ… lg N αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž›αžΉαž€αžŠαŸ‚αž›αž“αžΉαž„αž˜αžΆαž“αž‘αž˜αŸ’αž„αž“αŸ‹αž…αž˜αŸ’αž›αž„αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹ - αž•αž›αž”αžΌαž€αž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αžšαž αžΌαžαžŠαž›αŸ‹αž•αž›αž”αžΌαž€αž“αŸƒαž‘αŸ†αž„αž“αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž«αžŸαž“αŸƒαžŠαžΎαž˜αžˆαžΎαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž›αŸαžαž…αŸƒαžŠαž“αŸ’αž™αž–αžΈ 0 αžŠαž›αŸ‹αž•αž›αž”αžΌαž€αž“αŸƒαž‘αž˜αŸ’αž„αž“αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž…αž˜αŸ’αž›αž„ i-th αž™αž€αžœαžΆαž…αŸαž‰αž–αžΈαž˜αŸ‚αž€αž’αžΆαž„ αž αžΎαž™αž’αŸ’αžœαžΎαž”αŸ‚αž”αž”αž‘αž˜αŸ’αžαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡ αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αž˜αŸ‚αž€αž’αžΆαž„αž‚αžΊ O(N) αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž…αž˜αŸ’αž›αž„ i-th αž“αž·αž„αž€αžΆαžšαž™αž€αžœαžΆαž…αŸαž‰αž–αžΈαžŠαžΎαž˜αžˆαžΎαž‚αžΊ O(lg N) αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ K αž…αž˜αŸ’αž›αž„αž‚αžΊ O(N + K lg N) ~ O(N lg N) αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαž‚αžΊαž›αŸ’αž’αž‡αžΆαž„αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž½αž“αž‡αŸ’αžšαž»αž„ αž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ K αž’αŸ†αŸ”

αžœαžΆαž‚αžΊαž‡αžΆαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αŸ” αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ ClusterClient αž–αžΈαž‚αž˜αŸ’αžšαŸ„αž„ "αžαžΆαž„αž€αžΎαž"αŸ” (αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αžŠαžΎαž˜αžˆαžΎαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αž€αŸ’αž“αž»αž„ O(N lg N) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸ„αŸ‡αž‘αŸαŸ”)

αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΈ 2. αžŸαŸαŸ‡αž”αž„αŸ’αž€αž„αŸ‹

αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž“αžΎαžšαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαž˜αŸ’αžšαŸ€αž”αž―αž€αžŸαžΆαžšαž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžŠαŸ„αž™αžœαžΆαž›αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž›αž·αž”αž·αž€αŸ’αžšαž˜αž”αŸ†αž–αžΆαž“αŸ–

αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αžΆαž“αž—αžΆαžšαž€αž·αž…αŸ’αž…αž”αž„αŸ’αž€αžΎαžαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αŸ†αž”αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αŸ” αž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαž‘αžΌαž‘αŸ…αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž―αž€αžŸαžΆαžš N αž€αŸ†αž–αžΌαž›αžŠαŸ‚αž›αžαž˜αŸ’αžšαŸ€αž”αžαžΆαž˜αžœαžΆαž›αž›αŸαžαžŠαŸ‚αž›αž”αŸ†αž–αžΆαž“ (αž˜αž·αž“αž’αŸ’αžœαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜) αž–αžΈαž”αžŽαŸ’αžαž»αŸ†αž“αŸƒαž‘αŸ†αž αŸ† M (αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ N < 100 << M) αŸ” αž”αž“αŸ’αž‘αž»αž€αž€αžΆαžšαž„αžΆαžšαž’αž˜αŸ’αž˜αžαžΆαžαž·αž…αž‡αžΆαž„αž”αž“αŸ’αžαž·αž…αž‚αžΊαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αŸ†αž–αžΌαž› N αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžšαŸ†αž›αž„αž―αž€αžŸαžΆαžš S αž€αŸ†αž–αžΌαž› (S ~ N) αŸ”

αžŸαŸ’αž“αžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŸαŸ†αžŽαž½αžšαž”αŸ‚αž”αž“αŸαŸ‡αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” αž”αŸ‰αžΆαž“αŸ‹αžŸαŸ’αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαž‚αžŽαž“αžΆαžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαž‰αŸ’αž‰αžΆ O αž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αž’αŸ’αž™αž˜ αž“αž·αž„αžŸαŸαžŽαžΆαžšαžΈαž™αŸ‰αžΌαž€αžšαžŽαžΈαž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αŸ†αž•αž»αžαŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ (វីដេធូ)

αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸ…αž˜αŸ‰αŸ„αž„ 34:50 αžαŸ’αžšαžΉαž˜αžαŸ‚ 6 αž“αžΆαž‘αžΈ:


αž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ (αž’αžαŸ’αžαž”αž‘)

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž›αžΎαž•αŸ’αž‘αŸƒαŸ– αžαž˜αŸ’αžšαŸ€αž”αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž˜αž½αž™ រហ័ស) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αž€αž―αž€αžŸαžΆαžš N+S αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαžαž˜αŸ’αžšαŸ€αž”αž‚αžΊαž‡αžΆαž˜αž’αŸ’αž™αž˜ O (M lg M) αž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αŸ†αž•αž»αž O (M2) αŸ”

αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαž€αžΆαžšαžαž˜αŸ’αžšαŸ€αž”αž―αž€αžŸαžΆαžš M αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αž€αžαŸ‚αž•αŸ’αž“αŸ‚αž€αžαžΌαž…αž˜αž½αž™αž“αŸƒαž–αž½αž€αžœαžΆαž‚αžΊαž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‘αŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž˜αž·αž“αžαž˜αŸ’αžšαŸ€αž”αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‚αžΊαžŸαž˜αžšαž˜αŸ’αž™ αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαž αŸαžŸαžŠαŸ‚αž›αž“αžΉαž„αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ N + S αž“αŸƒαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“ (αž–αž½αž€αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαŸ€αž”αžαžΆαž˜αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŽαžΆαž˜αž½αž™) αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αžΉαž„αžαž™αž…αž»αŸ‡αž˜αž€αžαŸ’αžšαžΉαž˜ O(M) αž‡αžΆαž˜αž’αŸ’αž™αž˜ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž€αžšαžŽαžΈαž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αŸ†αž•αž»αžαž“αžΉαž„αž“αŸ…αžŠαžŠαŸ‚αž›αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– - αž”αŸ’αžšαžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž€αžΆαžšαžŸαŸ’αž‘αŸ’αžšαžΈαž˜ binary heap. αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž―αž€αžŸαžΆαžš N+S αžŠαŸ†αž”αžΌαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ… min- ឬ max-heap (αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž‘αž·αžŸαžŠαŸ…αžαž˜αŸ’αžšαŸ€αž”) αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž―αž€αžŸαžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‘αŸ…αž“αžΉαž„αž«αžŸαž“αŸƒαž˜αŸ‚αž€αž’αžΆαž„ αžŠαŸ‚αž›αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž’αž”αŸ’αž”αž”αžšαž˜αžΆ αž¬αž’αžαž·αž”αžšαž˜αžΆαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ” αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αžŠαžΎαž˜αžˆαžΎαž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸαž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αŸ†αž•αž»αž αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαžΆαž„αžŸαž„αŸ‹αžŠαžΎαž˜αžˆαžΎαž‘αžΎαž„αžœαž·αž‰αž‡αžΆαž“αž·αž…αŸ’αž…αž‚αžΊ O(M lg M) αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž˜αž’αŸ’αž™αž˜αž‚αžΊ O(M) αžŠαžΌαž…αž“αžΉαž„αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαž αŸαžŸαžŠαŸ‚αžšαŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαžŸαŸ’αž‘αŸ’αžšαžΈαž˜ heap αž”αŸ’αžšαŸ‚αž‡αžΆαž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž„αž˜αž»αž“ αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž―αž€αžŸαžΆαžšαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž”αž…αŸ„αž›αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαžΆαž„αžŸαž„αŸ‹αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœ heap αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžαŸ‚αž˜αž½αž™αž‡αžΆαž˜αž½αž™αž’αžΆαžαž» root αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž€αžΆαžšβ€‹αžαž˜αŸ’αžšαŸ€αž”β€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αž“αž»αžœαžαŸ’αžβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž―αž€αžŸαžΆαžšβ€‹αž€αŸ’αž“αž»αž„β€‹αž’αž„αŸ’αž‚β€‹αž…αž„αž…αžΆαŸ† Zebra αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαž αž“αž·αž„β€‹αž”αŸ’αžšαžΎβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„ Kontur αŸ”

αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΈ 3. αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαžŠαŸ’αž‹

αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αž“αžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαžŠαŸ’αž‹αŸ–

αž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αžΆαž“αž—αžΆαžšαž€αž·αž…αŸ’αž…αž”αž„αŸ’αž€αžΎαžαž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαžŠαŸ’αž‹αžŠαŸαž”αŸ’αžšαžŽαž·αžαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž…αž„αŸ’αž€αŸ„αž˜ N αžŠαŸ‚αž›αž…αŸ‚αž€αž…αžΆαž™αŸ” αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžšαž”αžŸαŸ‹αžαŸ’αž“αžΆαŸ†αž„ i-th αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αžαŸ’αž“αžΆαŸ†αž„ (i+1)-th αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžšαž”αžŸαŸ‹αžαŸ’αž“αžΆαŸ†αž„ N αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αŸαžšαž‘αŸ…αžαŸ’αž“αžΆαŸ†αž„αž‘αžΈαž˜αž½αž™αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αžαŸ‚β€‹αž˜αž½αž™β€‹αž‚αžαŸ‹β€‹αž‚αžΊβ€‹αž€αžΆαžšβ€‹αžŸαŸ’αžœαž”β€‹αžšαžŠαŸ’αž‹β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžαŸ’αž“αžΆαŸ†αž„β€‹αž–αžΈαžšβ€‹αž”αŸ’αžαžΌαžšβ€‹αžšαžŠαŸ’αž‹β€‹αžšαž”αžŸαŸ‹β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž’αžΆαžαžΌαž˜αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŠαžΉαž„αžαžΆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαžŠαŸ’αž‹αž…αŸ†αžŽαžΆαž™αž–αŸαž› M αž˜αž·αž›αŸ’αž›αžΈαžœαž·αž“αžΆαž‘αžΈαŸ” αžαŸ’αž“αžΆαŸ†αž„αž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαž”αžšαžŠαŸ’αž‹αžαŸ‚αž˜αž½αž™αž“αŸ…αž‚αŸ’αžšαž”αŸ‹αž–αŸαž›αžœαŸαž›αžΆαŸ”

αžαžΎβ€‹αžαŸ’αžšαžΌαžœβ€‹αž…αŸ†αžŽαžΆαž™β€‹αž–αŸαž›β€‹αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž•αŸ’αž‘αŸαžšβ€‹αžšαžŠαŸ’αž‹β€‹αž“αŸƒβ€‹αžαŸ’αž“αžΆαŸ†αž„β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αž…αž„αŸ’αž€αŸ„αž˜β€‹αž˜αž½αž™?

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸƒαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ (αž’αžαŸ’αžαž”αž‘)

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž›αžΎαž•αŸ’αž‘αŸƒαŸ– αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž’αžΆαžαž»αž‘αžΈαž˜αž½αž™ αž“αž·αž„αž‘αžΈαž–αžΈαžš αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž‘αžΈαž˜αž½αž™ αž“αž·αž„αž‘αžΈαž”αžΈ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž‘αžΈαž˜αž½αž™ αž“αž·αž„αž‘αžΈ αž”αž½αž“ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αžΈαž˜αž½αž™αŸ—αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž’αžΆαžαž»αž˜αž½αž™αž“αžΉαž„αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΈαžαžΆαŸ†αž„αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αŸ” αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš O(N) αž αžΎαž™αž…αŸ†αžŽαžΆαž™αž–αŸαž› O(N M) αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αž–αŸαž›αžœαŸαž›αžΆαž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαž‚αžΊαžœαŸ‚αž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž’αžΆαžαž»αž‡αžΆαž‚αžΌαŸ– αž‘αžΈαž˜αž½αž™αž‡αžΆαž˜αž½αž™αž‘αžΈαž–αžΈαžš αž‘αžΈαž”αžΈαž‡αžΆαž˜αž½αž™αž‘αžΈαž”αž½αž“ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαžŠαŸ’αž‹αž“αžΈαž˜αž½αž™αŸ— αžšαžΆαž›αŸ‹αž’αžΆαžαž»αž‘αžΈαž–αžΈαžšαž“αžΉαž„αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΈαžαžΆαŸ†αž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš O(lg N) αž αžΎαž™αž…αŸ†αžŽαžΆαž™αž–αŸαž› O(M lg N)αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– - αž˜αž·αž“αž˜αŸ‚αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαž‘αŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž–αŸαž›αžœαŸαž›αžΆαžαŸαžšαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž“αŸ…αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž’αžΆαžαž»αž‘αžΈαž˜αž½αž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžΆαžαž»αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‘αžΈαž–αžΈαžšαž‡αžΆαž˜αž½αž™ penultimate αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ” αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž’αžΆαžαž»αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αžΉαž„αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΈαžαžΆαŸ†αž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž’αžΆαžαž»αž‘αžΈαž–αžΈαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž’αžΆαžαž»αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‘αžΈαž”αžΈαž‡αžΆαž˜αž½αž™ penultimate αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αž»αŸ†αž“αŸαŸ‡ αžšαžŠαŸ’αž‹αž“αŸƒαž’αžΆαžαž»αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΈαžαžΆαŸ†αž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αžœαžΆαž“αžΉαž„αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš O(2M) ~ O(1) αžŸαžšαž»αž”αŸ”

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž—αžΆαžšαž€αž·αž…αŸ’αž…αž–αžΈαžŸαž“αŸ’αž“αž·αžŸαž·αž‘ Hydra - αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžαž»αž›αŸ’αž™αž—αžΆαž–αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžαž·

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ‚αž”αž“αŸαŸ‡αž“αžΉαž„αž˜αž·αž“αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž‚αžŽαž·αžαžœαž·αž‘αžΌαžŠαŸ‚αž›αž“αŸ…αžαŸ‚αž…αžΆαŸ†αžαžΆ αž€αžΆαžšαž”αž„αŸ’αžœαž·αž›αž‚αžΊαž‡αžΆαžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αŸƒαžŸαŸŠαžΈαž˜αŸαž‘αŸ’αžšαžΈαž’αŸαž€αŸ’αžŸαž–αžΈαžšαŸ” αžŠαŸ„αž™αžœαž·αž’αžΈαž“αŸαŸ‡ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž„αŸ’αžαŸαž”αž‡αžΆαž‘αžΌαž‘αŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž˜αž·αž“αž˜αŸ‚αž“αžŠαŸ„αž™αž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αž˜αž»αžαžαŸ†αžŽαŸ‚αž„ K<N αŸ” (αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„ comment αžαžΆαž™αŸ‰αžΆαž„αž˜αŸ‰αŸαž…αžŠαŸ‚αžš)

αžαžΎαž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαž›αŸ’αž”αŸ‚αž„αž•αŸ’αž‚αž»αŸ†αžšαžΌαž”αž‘αŸ? αžαžΎαž’αŸ’αž“αž€αžŠαžΉαž„αž–αžΈαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ? αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αŸ”

αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹