Кіріспе

Жолдарды іздеу алгоритмі, Бойер-Мур теоремасы

Компьютер ғылымында Бойер-Мур жолдарды іздеу алгоритмі – бұл тиімді жолдарды іздеу алгоритмі, ол практикалық жолдарды іздеу әдебиетінің стандартты өлшемі болып табылады. Оны 1977 жылы Роберт С. Бойер және Дж. Стротер Мур жасаған. Алғашқы мақалада үлгіні есептеу үшін статикалық кестелер болған, оларды қалай жасау керектігі түсіндірілмеген. Кестелерді жасау алгоритмі кейін жарияланды; бұл мақалада қателер болды, оларды кейіннен Войцех Риттер 1980 жылы түзеді. Алгоритм ізделіп жатқан жолды (үлгіні) алдын ала өңдейді, бірақ іздеу жүргізіліп жатқан жолды (мәтінді) емес. Сондықтан бұл модель мәтіннен әлдеқайда қысқа немесе бірнеше іздеулерде сақталатын қолданбалар үшін өте қолайлы. Бойер-Мур алгоритмі мәтіннің бөліктерін өткіріп жіберу үшін алдын ала өңдеу кезеңінде жиналған ақпаратты пайдаланады, нәтижесінде көптеген басқа жолдарды іздеу алгоритмдерінен төмен тұрақты коэффициент шығады. Жалпы, үлгінің ұзындығы артқан сайын алгоритм жылдамырақ жұмыс істейді. Алгоритмнің негізгі ерекшеліктері – жолдың басы емес, соңымен сәйкестіру және мәтіндегі әрбір таңбаны іздеудің орнына бірнеше таңбамен секіру арқылы мәтінді өткіріп жіберу.

Өнер көрсету

Бастапқы мақалада ұсынылған Бойер-Мур алгоритмі тек үлгі мәтінде кездеспесе ғана O(n+m) ең нашар жағдайда жұмыс істеу уақытына ие. Бұл алғаш рет 1977 жылы Кнут, Моррис және Пратт дәлелдеді, ең нашар жағдайда 5n салыстырудың жоғарғы шегімен. Ричард Коул 1991 жылы ең нашар жағдайда 3n салыстырудың жоғарғы шегімен дәлелдеу ұсынды. Егер үлгі мәтінде кездессе, бастапқы алгоритмнің жұмыс уақыты ең нашар жағдайда O(nm) болады. Бұл үлгі мен мәтін тек бір қайталап тұратын символдан тұратын кезде көру оңай. Дегенмен, Галиль ережесін қосу барлық жағдайларда сызықтық жұмыс уақытын қамтамасыз етеді.

Нұсқалар

Бойер-Мур-Хорспул алгоритмі – жаман символ ережесін ғана қолдана отырып, Бойер-Мур алгоритмінің жеңілдетілген түрі. Apostolico-Giancarlo алгоритмі берілген қатарласуда сәйкестік болды ма, жоқ па, тексеру процесін жылдамдатады. Бұл үлгіні алдын ала өңдеу кезінде алынған ақпаратты, әр сәйкестік әрекеті кезінде тіркелген жұрнақ сәйкестіктерінің ұзындығымен бірге пайдаланады. Жұрнақ сәйкестіктерінің ұзындығын сақтау үшін ізделіп жатқан мәтінмен бірдей өлшемдегі қосымша кесте қажет. Raita алгоритмі Бойер-Мур-Хорспул алгоритмінің өнімділігін жақсартады. Белгілі бір кіші жолдың берілген жолдағы іздеу үлгісі Бойер-Мур-Хорспул алгоритмінен өзгеше.