Кіріспе

2 таңдаулы хэштеу, сондай-ақ 2 таңдаулы тізбектеу деп аталады, – "екі хэш функциясын қолданып хэштеу арқылы кілттер қосылатын хэш кестесінің бір түрі. Кілт, қақтығыс тудыратын кілттер саны аз массивтік позицияға орналастырылады. Кілттерді тізбекте сақтамаса, қақтығыстарды шешу үшін бір схема қажет. Сәтті іздеудің орташа құны , мұндағы – кілттер саны, ал – массивтің көлемі. Ең көп қақтығыстар жоғары ықтималдықпен болады".

Қалай жұмыс істейді

2 таңдаулы хэштеу екі хэш функциясын – h1(x) және h2(x) – пайдаланады, олар хэш функцияларынан күтілетіндей жұмыс істейді (яғни, бүтін сандарды белгілі бір диапазонға шамалайды). Екі хэш функция да тәуелсіз болуы керек және бір-бірімен байланыссыз болуы тиіс. Екі хэш функцияның болуы кез келген x кілттің h1(x) және h2(x) мәндеріне сәйкес, сақталуы мүмкін екі потенциалды орынға ие болуына мүмкіндік береді. Бір нәрсені еске алу қажет, екі хэш функция болғанымен, тек бір кесте бар; екі хэш функция да сол кестедегі орындарға шамалайды.

Іске асыру

Бұл жағдайда хэштеуді іске асырудың ең маңызды функциялары – енгізу және іздеу. Енгізу: Енгізілетін объект үшін екі хэш-функцияның мәндері есептелінеді. Содан кейін объект, азырақ объектілер бар бөшке (bucket) орналастырылады. Егер бөшкелердің мөлшері тең болса, h1(x) мәні бойынша орналастырылады. Іздеу: Тиімді іздеу, ізделінетін мәнді табу үшін екі бөшкеде (h1(x) және h2(x) көрсеткен бөшкелерде) іздеу арқылы жүзеге асырылады.

Өнер көрсету

Барлық хэш-кестелердегідей, өнімділік ең үлкен бөшкеге (bucket) байланысты. Мәндер мен қолданылатын хэш-функцияларға байланысты бөшкелердің көлемі үлкен болуы мүмкін болғанымен, мұндай жағдай сирек кездеседі. Екі хэш-функция болғандықтан, кез келген мән үшін екі мүмкін орын бар, бұл үлкен бөшкелердің пайда болу ықтималдығын одан да азайтады. 2 таңдаулы хэштеуді пайдаланған кезде күтілетін бөшке мөлшері: θ(log(log(n))). Бұл жетістік "Екі таңдаудың күші" деп аталатын кездейсоқ ұғымға байланысты. Екі хэш-функцияны қолдану, бір хэш-функциядан айтарлықтай артықшылықтар береді. Екіден астам хэш-функция қолданылса, жақсарту шамалы (және күтілетін рет статистикасына ешқандай өзгеріс енгізілмейді): "Қосымша хэш-функциялар максимумды тек тұрақты фактормен төмендетеді". Кейбір мамандар кейбір процессорлардың кэш-жадында екі жақты қисайған ассоциативтік кэш деп аталатын 2 таңдаулы хэштеудің бір түрін ұсынады. 2 сол жақты хэштеу – бірдей өлшемдегі n/2 екі хэш-кестесін пайдалану және кілтті сол жақ хэш-кестесіне орналастыру арқылы теңдікті асимметриялық түрде шешу – 2 таңдаулы хэштеуге қарағанда азырақ қақтығыстарға (collisions) және тиімдірек өнімділікке ие.