Кіріспе

Жолдарды іздеу алгоритмі

Компьютер ғылымында Ахо-Корасик алгоритмі — Альфред В. Ахо және Маргарет Дж. Корасик 1975 жылы ойлап тапқан жолдарды іздеу алгоритмі. Бұл кіріс мәтіні ішінде шекті жолдар жиынтығының ("сөздік") элементтерін табуға арналған сөздікке сәйкестік алгоритмінің бір түрі. Ол барлық жолдарды бір уақытта сәйкестендіреді. Алгоритмнің күрделілігі жолдардың ұзындығы, ізделіп жатқан мәтіннің ұзындығы және табылған сәйкестіктер санына пропорционалды. Барлық сәйкестіктер табылатындықтан, егер әрбір ішкі жол сәйкес келсе, сәйкестіктердің саны квадраттық болуы мүмкін (мысалы, сөздік = , , , және кіріс жолы ). Формальды түрде алгоритм әртүрлі ішкі түйіндер арасындағы қосымша сілтемелермен триге ұқсас шекті күй машинасы құрастырады. Бұл қосымша ішкі сілтемелер сәтсіз жол сәйкестіктері арасында жылдам өтуге мүмкіндік береді (мысалы, триде жоқ, бірақ бар және осылайша префиксі бар түйінде сәтсіздікке ұшыраса, ортақ жұрнақпен бөлісетін басқа тармақтарға өтуге болады. Алдыңғы жағдайда, үшін ең жақсы көлденең өту болуы мүмкін). Бұл автоматқа кері қайтару қажеттілігінсіз жол сәйкестіктері арасында өтуге мүмкіндік береді. Егер жол сөздігі алдын ала белгілі болса (мысалы, компьютерлік вирустар базасы), автоматты құру желіден тыс орындалуы мүмкін және құрастырылған автомат кейін пайдалану үшін сақталады. Бұл жағдайда, оның жұмыс уақыты кіріс ұзындығына және сәйкес келетін жазбалар санына пропорционалды. Ахо-Корасик жол сәйкестік алгоритмі бастапқы Unix командасының негізін құрады fgrep.

Динамикалық іздеу тізімі

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