Кіріспе

Берілген мәтіннің барлық жұрнақтарын қамтитын ағаш. Компьютер ғылымында жұрнақ ағашы (сонымен қатар PAT ағашы немесе ертерек нұсқасында позиция ағашы деп аталады) – бұл берілген мәтіннің барлық жұрнақтарын кілттер ретінде және мәтіндегі орындарын олардың мәндері ретінде қамтитын сығылған трие (төрттік ағаш) болып табылады. Жұрнақ ағаштары көптеген маңызды жол операцияларын өте жылдам жүзеге асыруға мүмкіндік береді. Мұндай ағашты жол үшін салу, жолдың ұзындығына пропорционал уақыт пен жадты қажет етеді. Салынғаннан кейін, бірнеше операцияларды жылдам орындауға болады, мысалы, жолдың ішіндегі бөлікті табу, белгілі бір мөлшерде қателерге жол берілген жағдайда жолдың ішіндегі бөлікті табу және үлгінің реттегіш өрнегіне сәйкес келетін бөлікті табу. Жұрнақ ағаштары ең ұзын ортақ жол мәселесіне алғашқы сызықтық уақыт шешімдерінің бірі болды. Бұл жылдамдықтар белгілі бір шығынмен келді: жолдың жұрнақ ағашын сақтау, әдетте, жолдың өзінен гөрі едәуір көп жадты қажет етеді.

Тарих

Бұл ұғым алғаш рет Rather-дың еңбектерінде, емес, жұрнағы орнына, Вайнер өзінің trie-де әр позиция үшін префикс идентификаторын сақтады, яғни, басталатын және тек бір рет кездесетін ең қысқа тізбек. Оның Algorithm D алгоритмі сығылмаған trie-ді алады және оны trie-ге кеңейтеді. Осылайша, тривиалды trie-ден бастап, trie Algorithm D алгоритміне кезекті шақырулар арқылы құрылуы мүмкін; алайда, жалпы орындалу уақыты Weiner алгоритмі B бірнеше қосымша деректер құрылымдарын қолданады, құрастырылған trie өлшеміне пропорционалды жалпы орындалу уақытын қамтамасыз ету үшін. Соңғысы әлі де түйіндерден тұруы мүмкін, мысалы, . Вайнер алгоритмі C соңында сығылған trie-лерді пайдаланып, жалпы сақтау көлемі мен орындалу уақытын сызықтық етуге қол жеткізеді. Дональд Кнут кейіннен өзінің студенті Vaughan Pratt бойынша оны "1973 жылдың алгоритмі" деп сипаттады. Оқулық Вайнердің нәтижелерін қарапайымдатылған және әдемі түрінде қайта жазды, позициялық ағаш терминін енгізді. -дан басталатын суффикс әдетте префикс идентификаторынан ұзын болғанымен, сығылған trie-дегі олардың жол көрсетулері өлшемдері бойынша ерекшеленбейді. Екінші жағынан, McCreight Вайнердің көптеген қосымша деректер құрылымдарынан бас тарта алды; тек суффикс байланыстары қалды. құрылысын одан әрі жеңілдетті. Ол суффикс ағаштарының алғашқы онлайн құрылысын ұсынды, қазір Ukkonen алгоритмі деп белгілі, оның орындалу уақыты сол кездегі ең жылдам алгоритмдерге сәйкес келді. Бұл алгоритмдер тұрақты өлшемді әліпби үшін сызықтық уақытты қамтиды және жалпы жағдайда ең нашар жағдайда орындалу уақыты бар. барлық әліпбилер үшін оңтайлы суффикс ағашын құру алгоритмін берді. Атап айтқанда, бұл полиномиалдық диапазон ішіндегі бүтін сандар әліпбиінен алынған тізбектер үшін бірінші сызықтық уақыт алгоритмі. Farach алгоритмі сыртқы жадта, сығылған, ықшам және т.б. сияқты суффикс ағаштары мен суффикс массивлерін құру үшін жаңа алгоритмдердің негізіне айналды.

Параллель құрылыс

Суффикс ағашын құру жылдамдығын арттару үшін әртүрлі параллель алгоритмдер ұсынылған. Жақында, жұмыс (тізбекті уақыт) және аралықпен суффикс ағашын құруға арналған практикалық параллель алгоритм әзірленді. Алгоритм ортақ жадты көп ядролы машиналарда жақсы параллель масштабталуға қол жеткізеді және 40 ядролы машинаны пайдаланып, шамамен 3 ГБ адам геномын 3 минуттан кем уақытта индекстеуге мүмкіндік береді.