Алгоритм Маркова - Markov algorithm
Эта статья включает Список ссылок, связанное чтение или внешняя ссылка, но его источники остаются неясными, потому что в нем отсутствует встроенные цитаты.Май 2020 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В теоретическая информатика, а Алгоритм Маркова это система перезаписи строк который использует грамматика -подобные правила для работы струны символов. Было показано, что марковские алгоритмы Полный по Тьюрингу, что означает, что они подходят в качестве общей модели вычисление и может представлять любой математическое выражение из его простых обозначений. Марковские алгоритмы названы в честь советского математика. Андрей Марков-младший[1]
Рефал это язык программирования на основе алгоритмов Маркова.
Описание
Нормальные алгоритмы вербальны, то есть предназначены для применения к строкам в разных алфавитах.
Определение любого нормального алгоритма состоит из двух частей: определение алфавит алгоритма (алгоритм будет применен к строкам этих символов алфавита), и определение его схема. Схема нормального алгоритма представляет собой конечный упорядоченный набор так называемых формулы замены, каждый из которых может быть просто или окончательный. Формулы простой подстановки представлены строками вида , куда и две произвольные строки в алфавите алгоритма (называемые соответственно левой и правой частями подстановки формулы). Точно так же окончательные формулы подстановки представлены строками вида , куда и две произвольные строки в алфавите алгоритма. Это предполагает, что вспомогательные символы и не принадлежат алфавиту алгоритма (в противном случае должны быть выбраны два других символа, которые будут выполнять свою роль разделителей левой и правой частей, которых нет в алфавите алгоритма).
Вот пример схемы нормального алгоритма в пятибуквенном алфавите :
Процесс применения нормального алгоритма к произвольной строке в алфавите этого алгоритма есть дискретная последовательность элементарных шагов, состоящая из следующих. Предположим, что слово, полученное на предыдущем шаге алгоритма (или исходное слово , если текущий шаг является первым). Если в формулах подстановки нет левой части, входящей в , то алгоритм завершается, и результатом его работы считается строка . В противном случае первая из формул подстановки, левые части которой входят в выбрано. Если формула замены имеет вид , то из всех возможных представлений строки формы (куда и произвольные строки) с самой короткой выбран. Затем алгоритм завершается и результатом его работы считается . Однако, если эта формула замены имеет вид , то из всех возможных представлений строки формы тот, у кого самый короткий выбирается, после чего строка считается результатом текущего шага и подлежит дальнейшей обработке на следующем шаге.
Например, процесс применения описанного выше алгоритма к слову приводит к последовательности слов , , , , , , , , , и , после чего алгоритм останавливается с результатом .
Другие примеры см. Ниже.
Любой нормальный алгоритм эквивалентен некоторому Машина Тьюринга, и наоборот - любой Машина Тьюринга эквивалентен некоторому нормальному алгоритму. Версия Тезис Черча-Тьюринга Сформулированный применительно к нормальному алгоритму называется «принцип нормализации».
Нормальные алгоритмы оказались удобным средством для построения многих разделов конструктивная математика. Более того, в определение нормального алгоритма входит ряд идей, используемых в языках программирования, направленных на обработку символьной информации - например, в Рефал.
Алгоритм
В Правила представляют собой последовательность пар строк, обычно представленных в виде шаблон → замена. Каждое правило может быть обычным или завершающим.
Учитывая Вход нить:
- Проверьте Правила в порядке сверху вниз, чтобы узнать, есть ли узоры можно найти в Вход нить.
- Если ничего не найдено, алгоритм останавливается.
- Если один (или несколько) найден, используйте первый из них, чтобы заменить крайнее левое вхождение совпадающего текста в Вход строка с ее замена.
- Если только что примененное правило было завершающим, алгоритм останавливается.
- Переходите к шагу 1.
Обратите внимание, что после каждого применения правила поиск начинается заново с первого правила.
пример
В следующем примере показаны основные операции алгоритма Маркова.
Правила
- «А» -> «яблоко»
- "Б" -> "сумка"
- "S" -> "магазин"
- "T" -> "the"
- "магазин" -> "мой брат"
- "никогда не использовался" -> ."правило прекращения"
Строка символов
"Я купил B of As у T S."
Исполнение
Если алгоритм применяется к приведенному выше примеру, строка символа изменится следующим образом.
- "Я купил B of As у T S."
- «Я купил яблоко в компании Т. С.»
- «Я купил пакет яблок в ТС.»
- «Я купил мешок яблок в магазине Т».
- «Я купил в магазине пакет яблок».
- «Я купил у брата сумку яблок».
Затем алгоритм прекратит работу.
Другой пример
Эти правила дают более интересный пример. Они заменяют двоичные числа своими унарными аналогами. Например, 101 будет переписан в строку из 5 последовательных тактов.
Правила
- "|0" -> "0||"
- "1" -> "0|"
- "0" -> ""
Строка символов
"101"
Исполнение
Если алгоритм применяется к приведенному выше примеру, он завершится после следующих шагов.
- "101"
- "0|01"
- "00||1"
- "00||0|"
- "00|0|||"
- "000|||||"
- "00|||||"
- "0|||||"
- "|||||"
Смотрите также
Примечания
Рекомендации
- Караччоло ди Форино, А. Языки обработки строк и обобщенные марковские алгоритмы. В языках и методах манипулирования символами, D. G. Bobrow (Ed.), North Holland Publ. Co., Амстердам, Нидерланды, 1968, стр. 191–206.
- Андрей Андреевич Марков (1903-1979) 1960. Теория алгоритмов. Переводы Американского математического общества, серии 2, 15, 1-14.