Основные алгоритмы поиска подстроки в строке

находить отражение в учебном процессе при изучении таких дисциплин как «Прикладная механика», «Детали машин», «Теория механизмов и машин». Только в этом случае подготовка студентов будет полноценной и позволит им стать конкурентоспособными специалистами.

Список литературы

1. Беляев Л.В. и др. Геометрический синтез пространственного кулачкового механизма мехатронного модуля для систем вспомогательного кровообращения // Современные проблемы науки и образования. № 4, 2013. С. 30-36.

2. Денисова Н.Е., Шорина Н.С. Обеспечение надежности кулачковых механизмов текстильных машин [Электронный ресурс]. Режим доступа: https://cyberleninka.ru/article/v/obespechenie-nadezhnosti-kulachkovyh-mehanizmov-tekstilnyh-mashin/ (дата обращения: 06.05.2018).

3. ЛеоновИ.В., ЛеоновИ.Д. Теория механизма и машин. М.: Высшее Образование, 2009. 239 с.

4. Пътаев Б.В. Методика профилирования плоских кулачков // Вестник ФГОУ ВПО МГАУ № 1, 2010. С. 78-81.

5. Туракулов М.Р., Джураев А. Кулачковый механизм. Патент РУз на полезную модель № FAP 00700, 2010.

ОСНОВНЫЕ АЛГОРИТМЫ ПОИСКА ПОДСТРОКИ В СТРОКЕ Солдатова Г.П.1, Татаринов А.А.2, Болдырихин Н.В.3

'Солдатова Галина Павловна — магистрант;

2Татаринов Алексей Алексеевич — магистрант, направление: информатика и вычислительная техника;

3'Болдырихин Николай Вячеславович — кандидат технических наук, доцент, кафедра кибербезопасности информационный; систем, Донской государственный технический университет, г. Ростов-на-Дону

Аннотация: в статье анализируются основные алгоритмы поиска подстроки в строке, которые в настоящее время внедрены повсеместно. Поиск использует каждый пользователь ПК или сети Интернет, но не каждый задумывался, как же этот поиск устроен. Ключевые слова: поиск, алгоритм поиска, строка.

В веке современных технологий многие люди не могут представить свою жизнь без компьютера или интернета. Каждый хоть раз работал с текстовым редактором и искал нужные слова в тексте, совершенно не представляя, как этот поиск устроен. Действительно, многие программы обработки текста уже приучили нас к такой удобной возможности, как поиск и замена фрагментов. Конечно, сейчас многие высокоуровневые языки программирования уже содержат свои функции поиска, поэтому чтобы найти строчку в небольшом тексте используется своя встроенная функция. Правда, в готовых решениях не всегда все написано лучшим образом. Во -первых, не всегда может быть использован эффективный алгоритм, а во-вторых, каждой функции может быть присуща доработка, для изменения её стандартного поведения. Область применения функции поиска подстроки в строке не ограничивается текстовыми редакторами, они во всю используются поисковыми роботами для индексации страниц.

Одним из самых очевидных и одновременно неэффективных алгоритмов является алгоритм последовательно (прямого) поиска. Суть его заключается в сравнении искомой подстроки с каждым словом в основной строке. Алгоритм не является эффективным, так как максимальное количество сравнений будет равно O((n-m+1)*m), где большинство из них на самом деле лишние. Для небольших строк поиск работает довольно быстро, но если в файлах с большим количеством информации последовательность символов будет искаться очень долго [1].

Алгоритм Рабина представляет собой модификацию линейного алгоритма и выполняет линейный проход по строке (n шагов) и линейный проход по всему тексту (m шагов), из чего мы получаем, что общее время работы есть O(n+m). При этом не учитывается временная сложность вычисления хеш-функции, так как суть алгоритма заключается в том, чтобы данная функция была легко вычисляемой, поэтому временная сложность вычисления хеш-функции не

учитывается. Время работы алгоритма линейно зависит от размера строки и текста, а значит, что программа работает быстро, ведь проверять можно только те подстроки, которые «напоминают» образец [4].

Алгоритм последовательного поиска и алгоритм Рабина не требуют больших трудозатрат и годятся для решения некоторого класса задач. Но так как иногда они выполняют явно бесполезную работу, алгоритмы не являются оптимальными.

Метод, использующий предобработку искомой строки и создающий на ее основе префикс-функцию, содержится в алгоритме Кнута-Морриса-Пратта (КМП). Суть этой функции заключается в нахождении наибольшей подстроки, одновременно находящейся и в начале, и в конце подстроки (как префикс и как суффикс). Смысл префикс-функции заключается в том, что неверные варианты могут быть заранее отброшены, а в начале работы могут рассматриваться некоторые вспомогательные утверждения, где для произвольного слова рассматриваются все его начала, которые по совместительству являются его концами, и выбираются из них самое длинное. Метод КМП использует следующую идею: если префикс (он же суффикс) строки длиной i длиннее одного символа, то он одновременно и префикс подстроки длиной i-1. Время работы всей процедуры линейно и есть O(m), несмотря на то, что в ней присутствует вложенный цикл.

Алгоритм КМП и алгоритм последовательного поиска помимо нахождения самих строк считают, сколько символов совпало в процессе работы.

Алгоритм Бойера-Мура, названный в честь его создателей - Роберта Бойера и Джея Мура, считается наиболее быстрым среди алгоритмов общего назначения, предназначенных для поиска подстроки в строке. Суть алгоритма довольно проста и состоит из нескольких шагов. Сначала строится таблица смещений для искомого образца. Затем начало строки и образца совмещается и начинается проверка с последнего символа. Если же последний символ образца и соответствующий ему при наложении символ строки не совпадают, образец сдвигается на величину, полученную из таблицы смещений, и снова проводится сравнение, начиная с последнего символа образца. Если же символы совпадают, производится сравнение предпоследнего символа образца и т.д. Поиск считается оконченным, когда все символы образца совпадают с наложенными символами строки [5].

Попробовав провести поиск подстроки в строках, задействовав каждый алгоритм по 5 раз, было измерено время работы каждого из них и выбрано наименьшее. Эксперимент был проведен на персональном компьютере с процессором Intel(R) Pentium(R) CPU 2,13 GHz и установлененной памятью (ОЗУ) 3 ГБ, используя Visual Studio 2015. Несмотря на то, что во время проведения эксперимента, были отключены все сторонние и фоновые приложения, при запуске одной и той же задачи было получено разное время выполнения, но так как все алгоритмы имели одинаковые условия, есть возможность провести их сравнительный анализ.

Таблица 1. Сравнительный анализ работы алгоритмов

Алгоритм Время выполнения

Длина< 10 Длина<100 Длина< 250

Последовательный поиск 13 79 215

Алгоритм Рабина 13 59 84

Алгоритм Кнута-Морриса-Пратта 4 28 40

Алгоритм Бойера-Мура 25 25 26

Согласно результатам из таблицы видно, что алгоритм Бойера-Мура справился с задачей быстрее остальных, а его эффективность растет с увеличением длины строки и длины образца. Так при небольшой длине строки использован может быть любой алгоритм, ведь разброс во времени не глобален. Алгоритм КМП может быть универсален как для коротких, так и для длинных слов. Алгоритм Рабина, при его схожести с последовательным, работает гораздо быстрее. А вот наихудший результат, как и предполагалось, показал алгоритм последовательного поиска, который при небольшом увеличении объема данных работает медленнее остальных алгоритмов.

Список литературы

1. ВиртН. Алгоритмы и структуры данных. М:. Мир, 1989. 360 с.

2. Кормен Т. Алгоритмы: построение и анализ. М.: Вильямс, 2016. 1328 с.

3. Успенский В. Теория алгоритмов: основные открытия и приложения. М.: Наука, 1987. 288 с.

4. Фукс Л. Алгоритмы поиска и сортировки. [Электронный ресурс]. Режим доступа: http://www.ipkro.isu.ru/informat/methods/findsort/ (дата обращения 25.04.2018).

5. Боровский А. Алгоритмы поиска в тексте. [Электронный ресурс]. Режим доступа: http://www.rsdn.ru/article/alg/textsearch.xml/ (дата обращения 29.04.2018).

НАКОПЛЕНИЕ АБРАЗИВНЫХ ЧАСТИЦ В МАСЛЕ Мамасалиева М.И.

Мамасалиева Мукаддас Ибадуллаевна - старший преподаватель, кафедра техники оказания услуг, Ташкентский государственный технический университет им. Ислама Каримова, г. Ташкент, Республика Узбекистан

Аннотация: ррассматривается динамика накопления абразивных частиц в масле агрегатов в условиях эксплуатации сельхозмашин, в зависимости от продолжительности их работы.

УДК 620.178.162

Абразивное изнашивание встречается во многих деталях дорожных, строительных, сельскохозяйственных, горных, транспортных и других машин, так как эти машины работают в средах, содержащих абразивные частицы (обычно минерального происхождения, высокой твёрдости), которые являются разрушающими телами при абразивном изнашивании. Причиной абразивного изнашивания является либо однократное воздействие, приводящее к снятию очень тонкой стружки (при микрорезании), либо многократное пластическое или упругое деформирование микрообъёмов металлов которое вызывает разрушение и отделение частиц от поверхностного слоя [5]. Основная цель данной работы является изучение динамики и накопления абразивных частиц в масле в результате воздухообмена окружающей среды, приводящие к увеличению скорость изнашивания деталей агрегатов сельхозмашин и степени активности абразивных частиц в масле агрегата.

Одной из возможных причин попадания пыли в масло, агрегатов трактора, является периодический нагрев и охлаждение воздушной среды в картере агрегатов силовых передач, а также возникающий в связи с этим газообмен с атмосферой. Так, при объеме картера агрегатов трансмиссии трактора 0,0612 м3, повышение температуры с 30 до 70°С и в свободном доступе воздуха в картер, количество попадающей пыли в масло агрегата увеличивается на 0,008 кг, т.е. при этом весовая концентрация пыли увеличивается на 11,5% [1].

Следует отметить, что пыль попадает в трансмиссию тракторов в результате нарушения герметичности корпуса агрегата, из-за влияния больших нагрузок и упругой деформации рамы машины.

В закрытых агрегатах и узлах тракторов, имеющих вращающиеся детали, происходит насосный эффект, вследствие чего через неплотности в картер всасывается запыленный воздух.

Вибрация агрегатов при движении тракторов также является возможных причин попадания абразивных частиц в картер. В зависимости от рельефа почвы давление в картере, агрегатах силовых передач, периодически изменяется уровень масла в агрегате. Подъем и опускание уровня масла, находящегося в картере, приводит к воздухообмену агрегата с окружающей средой, и как правило загрязняется абразивными частицами.

При замене масла агрегатов силовых передач машин в осадке остается часть загрязненного масла. Так, например, после замены масла в картере агрегатов тракторов остаются 37 - 67% механических примесей, его соответствует уровню загрязнения масла абразивными частицами за 250 - 300 мото-часов.

Загрязнители масла агрегатов машин состоят из почвенной пыли, проникающей в агрегаты машин из окружающей среды, а также продуктов износа, материалов деталей, процентное соотношение которых по массе имеют равные значения.

В результате проведенных эксплуатационных испытаний на дополнительной конечной передачи хлопководческих тракторов 1,4 тягового класса, с целью определения количества загрязнителей отработанного масла показывают [2], что при замене масла в агрегатах накапливается значительное количество твердых частиц, состоящих из почвенной пыли и продуктов износа, количество которых в несколько раз превышает норму, установленную

10