11.07.2015 Views

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

Выпуск 1 - Российский государственный профессионально ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

задач алгебры, предложил новую модельвычислений, которую он назвалнормальными алгорифмами.Нормальные алгорифмы Маркова(НАМ) — это строгая математическаяформа записи алгоритмов обработкисимвольных строк, которую можно использоватьдля доказательства разрешимостиили неразрешимости различныхзадач. Марков предположил, что любойалгоритм можно записать как НАМ.В отличие от машин Тьюринга и ПостаНАМ — это “чистый” алгоритм, которыйне связан ни с каким “аппаратным обеспечением”(лентой, кареткой и т.п.).НАМ преобразует одно слово (цепочкусимволов некоторого алфавита) в другое и задаетсяалфавитом и системой подстановок. Заметьте,что в жизни мы нередко применяем такие замены.Например, при умножении в столбик мы не вычисляемкаждый раз произведение 7 × 8, а просто помним,что оно равно 56.Пусть алфавит НАМ — это русские буквы, и заданасистема подстановока → нух → лом → сПрименим эту систему подстановок к начальномуслову “муха”. Подстановки нужно просматриватьпо порядку, начиная с первой. Первая подстановкаозначает “если в слове есть буквы а, заменить первуюбукву а на букву н”. В слове муха есть буква “а”,поэтому заменяем ее на “н”. Получается “мухн”.Начинаем просмотр подстановок сначала. Букв“а” больше нет, поэтому переходим ко второй подстановке.Сочетание “ух” есть в слове “мухн”, поэтомувторая подстановка срабатывает, и мы заменяем“ух” на “ло”: получается “млон”.Теперь ни первая, ни вторая подстановки не применимы,а использование третьей дает в результатеслово “слон”. Больше ни одну подстановку сделатьнельзя, и НАМ заканчивает работу. Таким образом,приведенная система подстановок преобразуетслово “муха” в слово “слон”.При поиске образца рабочая цепочка символовпросматривается сначала. Если в строке словообразецвстречается несколько раз, то за один шагзаменяется только первое из них. Так как на следующемшаге просмотр опять начинается с началацепочки, после первой выполненной замены может“сработать” совсем другая подстановка.В записи подстановок слово-образец может бытьпустым, в этом случае слово-замена приписываетсяв начало рабочей строки:→ 0Такая подстановка всегда должна быть последнейв списке, иначе программа зациклится: в началослова будут постоянно дописываться все новыеи новые нули.А.А. Марков (1903–1979)(www.ras.ru)Рис. 9Если после слова-замены стоит точка,после выполнения такой подстановкиработа программы заканчивается.Например, если применить НАМа → о.к слову “карова”, то в результате получим“корова”, потому что после первогоже действия работа программы закончится,и последняя буква не будетзаменена.Пример 2. Построим НАМ для следующейзадачи: удалить из строки, состоящейиз букв a и b, первый символ. Например,строка abba должна быть преобразованав bba. Казалось бы, здесь нужноиспользовать систему подстановокa → .b → .Однако такой НАМ будет неправильно работатьдля слов, начинающихся с буквы b, например, дляслова bba, в котором будет удалена последняя буква,потому что первая подстановка выполнится раньше,чем вторая. Перестановка двух строк также не даетрешения — теперь алгоритм неправильно работаетдля слов, начинающихся с буквы a. Чтобы решить этузадачу, в алфавит НАМ добавляют еще один специальныйсимвол, например, символ “*”. Этим символомпомечают начало слова, используя подстановку→ *Полный алгоритм выглядит так:*a → .*b → .→ *Сначала срабатывает третья подстановка (ставим* в начало строки), затем, в зависимости отпервой буквы исходного слова, работает перваяили вторая подстановка, и алгоритм заканчиваетработу.Дополнительный символ похож на маркер в текстовомредакторе — он отмечает место в тексте, с которымпотом будут выполняться какие-то действия.Как показано в теории алгоритмов, любой алгоритмдля машин Тьюринга и Поста можно записатькак НАМ, и наоборот. Поэтому все три рассмотренныхподхода к строгому определению понятия “алгоритм”эквивалентны (равносильны).Контрольные вопросы1. Зачем понадобилось уточнять понятие “алгоритм”?2. Какие задачи рассматриваются в теории алгоритмов?3. Почему можно ограничиться алгоритмами обработкисимвольных строк? Можно ли рассматриватьтолько алгоритмы для преобразования двоичныхкодов?4. Как вы понимаете утверждение “алгоритм задаетнекоторую функцию”?9январь 2012 / ИНФорматика

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!