Кіріспе

Хэш кестесіндегі коллизияны шешу стратегиясы

Біріктірілген хэштеу, сондай-ақ біріктірілген тізбектеу деп аталатын стратегия, хэш кестесіндегі коллизияны шешу үшін қолданылатын және бөлек тізбектеу мен ашық адрестеудің аралас түрін құрайтын әдіс.

Жеке тізбектелген хэш-кесте

Жеке тізбектелген хэш-кестеде бірдей мекен-жайға хэштелген элементтер сол мекен-жайдағы тізімге (немесе "тізбекке") орналастырылады. Бұл техника көп жадты босқа жұмсауға алып келуі мүмкін, себебі кесте жақсы өнімділік көрсететін жүктеме коэффициентін сақтау үшін (әдетте күтілетін элементтер санынан екі есе көп) жеткілікті үлкен болуы керек, сондай-ақ тізбектегі алғашқы элементтен басқа барлық элементтер үшін қосымша жад қолданылуы тиіс (егер тізімнің басшылары қолданылмаса, онда қосымша жад тізбектегі барлық элементтер үшін қолданылуы тиіс).

Төменгі бөлме

Коалесценцияның әсерін азайту үшін маңызды оңтайландыру – хэш-функцияның адрестік кеңістігін кестедегі тек бір бөлігімен шектеу. Мысалы, егер кесте M өлшемімен, 0-ден M-1 дейін нөмірленген ұяларымен болса, хэш-функция адрестерді кестедегі алғашқы N ұясына ғана тағайындайтындай етіп, адрестік кеңістікті шектеуге болады. Қалған M-N ұялары, "жер төлесі" деп аталатын бөлік, енгізу кезінде қақтылысқа түсетін элементтерді сақтау үшін ғана пайдаланылады. Жер төлесі толып біткенше, бірігу (коалесценция) жүрмейді. N-нің M-ге қатысты оптималды таңдауы кестедегі жүктеме коэффициентіне (немесе толу деңгейіне) байланысты. Мұқият талдау көрсеткендей, N = 0,86 × M мәні көптеген жүктеме коэффициенттері үшін оңтайлы нәтижеге жақын.

Нұсқалар

Іске қосу үшін іздеу уақытын жақсартатын басқа да нұсқалар бар. Жою алгоритмдері кездейсоқтықты сақтайды, сондықтан орташа іздеу уақытын талдау жоюдан кейін де қолданылады. Біріктірілген тізбектеу бастапқы және екіншілік кластерлеудің әсерінен қашады, нәтижесінде жеке тізбектеуге арналған тиімді іздеу алгоритмін пайдалана алады. Тізбектер қысқа болса, бұл стратегия өте тиімді және жад тұрғысынан ықшам болуы мүмкін. Ашық адрестеу сияқты, біріктірілген хэш-кестеден деректерді жою қиын және қымбат болуы мүмкін, ал кестенің көлемін өзгерту өте қымбат және оны мүмкіндігінше сирек жасау керек.