Кіріспе

Сызықтық хэштеу (LH) – хэш-кестелерді іске асыратын және бір уақытта бір контейнерді өсіре немесе қысқарта алатын динамикалық деректер құрылымы. Оны 1980 жылы Витольд Литвин ойлап тапқан. Бэза Йейтс және Соза Поллман оны талдаған. Бұл динамикалық хэштеу деп аталатын схемалардың алғашқысы, мысалы, Ларсонның жартылай кеңейтуі бар сызықтық хэштеу, басымдықпен бөлуге негізделген сызықтық хэштеу, жартылай кеңейтуі және басымдықпен бөлуге негізделген сызықтық хэштеу немесе рекурсивті сызықтық хэштеу. Динамикалық хэштеу деректер құрылымының файлдық құрылымы файлдың көлемі өзгерген кезде өзіне-өзі бейімделеді, сондықтан қымбат мерзімдік файлды қайта ұйымдастыру қажеттігінен аулақ боласыз. LH* өзі контейнерлердің істен шығуы кезінде деректерге қолжетімділікті қамтамасыз ету үшін кеңейтілген. LH және LH*-дегі кілт негізіндегі операциялар (қосу, жою, жаңарту, оқу) контейнерлер санына және, демек, жазбалар санына тәуелсіз, ең көп тұрақты уақыт алады.

Хаш функциялары

Хэш функциясы кілті бар жазбаны қамтитын букеттің 0-ден басталатын индексін қайтарады. Хэш функциясын пайдаланатын букет екі жаңа букетке бөлінген кезде, хэш функциясы осы екі жаңа букет үшін де ауыстырылады. Кез келген уақытта ең көп дегенде екі хэш функциясы қолданылады; олардың біреуі ағымдағы деңгейге сәйкес келеді. Хэш функциялардың отбасы динамикалық хэш функциясы деп те аталады. Әдетте, мәні кілттің оң жақтанғы екілік цифрларының санына сәйкес келеді, олар букеттерді бөлу үшін қолданылады. Бұл динамикалық хэш функциясын арифметикалық түрде былай көрсетуге болады: егер букеттердің жалпы саны бірге тең болса, берілген хэш кілті үшін дұрыс хэш функциясын анықтау үшін төмендегі есептеулерді орындаңыз. Бақыланбайтын бөлу, букет ағып кеткен кезде орын алады, онда бұл букет екі жеке букетке бөлінеді. Кейбір LH алгоритмдерінің іске асырылуында, бақыланатын бөлу жүктеме коэффициентінің шекті мәннен төмен түсуіне себеп болса, файлдың қысқаруы орын алады. Бұл жағдайда, соңғы бөлінуді кері қайтаратын және файлдың күйін қалпына келтіретін біріктіру операциясы іске қосылады.

Файл күйін есептеу

Файлдың күйі бөлінген нұсқаушыдан және деңгейден тұрады. Егер бастапқы файл сегменттермен басталса, онда сегменттер саны мен файлдың күйі арасындағы байланыс сызықтық хэштеу арқылы анықталады. Олар Icon тілінде сызықтық хэштеуді қабылдауды талқылады. Сызықтық хэштеуде қолданылатын динамикалық массив алгоритмінің іске асыру мүмкіндіктерін қарастырды және Icon-ның сынақ қосымшалары тізімін қолданып, өнімділікті салыстыру нәтижелерін ұсынды.

Деректер базасы жүйелерінде қолдану

Сызықтық хэштеу Беркли деректер базасы жүйесінде (BDB) қолданылады, бұл жүйе өз кезегінде көптеген бағдарламалық жүйелерде пайдаланылады. Ол CACM журналындағы мақала негізінде жасалған C тіліндегі нұсқасы, алғаш рет 1988 жылы Эсмонд Питт Usenet желісінде жариялаған.