Читайте также: |
|
Советский ученый А. А. Марков избрал другой путь уточнения понятия алгоритма. Им разработана строгая теория класса алгоритмов, которые он назвал нормальными алгорифмами.
Нормальные алгорифмы в качестве исходных данных и искомых результатов имеют, подобно машинам Тьюринга, строки букв – слова. Предположим, что заранее выделен некоторый алфавит. Обозначим его А. Букву, одинаковую с одной из букв, входящих в алфавит А, называют буквой в А. Слово, состоящее из букв в А, называют словом в А. При этом для удобства рассуждений допускают и пустые слова (не имеющие в своем составе ни одной буквы).
Если А и В – два алфавита, причем каждая буква алфавита А является буквой в В, а хотя бы одна из букв алфавита В не является буквой в Л, то 5 называется расширением алфавита А. Например, если А - {а, б, в, г), В={1, а, б, в, г, д}, то В являегся расширением А, так как содержит две буквы («1» и «д»), не являющиеся буквами в А, тогда как все буквы алфавита А являются буквами в В. Рассмотрим какое-либо конкретное слово для определенности в алфавите русских букв, например слово «самолет». Мы видим, что из него можно вырезать подслова, например «сам», «амол» или «олет», или «лет», или, наконец, однобуквеиное слово «т». Про такие подслова говорят, что они входят в рассматриваемое слово или являются вхождениями в него. Заметим, что в наше слово входит и пустое слово, причем — несколько раз (оно входит перед первой буквой, между каждыми двумя буквами и, наконец, после последней буквы, т. е., в данном случае, 8 раз).
Подслово - часть слова, буквы которого расположены рядом. Подсловом может быть и само слово.
Условимся обозначать слова заглавными латинскими буквами (если эти буквы не являются буквами в применяемом алфавите). Если задано некоторое слово и нами выбрана буква, являющаяся его обозначением (именем), то будем ставить между ними знак = (равенства). Возвращаясь к нашему примеру, мы можем написать: для слова Я=самолет слово Р=амол является вхождением.
Заметим, что не только пустое слово может многократно входить в другое слово. Например, в слово Я=тарарам слово Р=ара входит два раза. Особый интерес для нас будет представлять так называемое первое вхождение.
Марковской подстановкой называется операция над словами, задаваемая с помощью пары слов (Р, Q), заключающаяся в следующем.
Если задано исходное слово R, то в нем находят первое вхождение слова Р (если таковое имеется) и, не изменяя остальных частей слова R, заменяют в нем это вхождение словом Q. Полученное слово является результатом применения марковской подстановки (Р, Q) к слову R. Если же нет первого вхождения Р в слово R (при этом нет вообще ни одного вхождения Р в R), то считается, что марковской подстановке слово R не поддается.
Частными случаями марковских подстановок являются (,Q), (Р,) и (,). В первом из приведенных примеров Р, во втором Q, а в третьем и Р, и Q являются пустыми.
Действие Марковской подстановки заключается в том, что в искомом слове ищется подслово слева направо, и как только находится, оно меняется на другое подслово. Если вхождений несколько, то при любой подстановке меняется только первое слева вхождение. Будем рассматривать слова в некотором алфавите А. Предположим, что символы «—»» и «.» не являются буквами в А. Запись Р-> Q и Р —. будем называть записями марковской подстановки (Р, Q), причем первую из них будем называть подстановкой, а вторую - заключительной подстановкой.
Подстановки и заключительные подстановки будем называть формулами, различая в них левую часть Р и правую часть Q.
Марковская подстановка выполняется один раз, и если есть несколько вариантов, то выполняется подстановка, которая находится левее (ближе к началу слова). Марковская подстановка может быть успешной, неуспешной и конечной. Успешной - если подстановка выполнена, неуспешной, если подстановку выполнить нельзя и конечной, если в начале слова-замены стоит ". " Ее назначение - прекращение дальнейшего процесса Марковских подстановок.
Записью нормального алгоритма в алфавите А называют столбец формул, левые и правые части которых являются словами в А. Выполнение нормального алгоритма применительно к исходному данному R, являющемуся словом в А, заключается в следующем: 1. Двигаясь по столбцу формул, ищут первую формулу, левая часть ко
торой входит в преобразуемое слово. 2.Если такой формулы не найдется, процесс окончен. 3. Если же она найдется, то выполняют марковскую подстановку, соответствующую данной формуле, изменяя преобразуемое слово. 4. Затем смотрят, является ли выполненная подстановка заключительной. 5. Если она является заключительной, то процесс окончен. 6. В противном случае весь процесс повторяют с самого начала (то есть с пункта 1).
Этапы решения задач с помощью алгорифмов Маркова Для составления алгорифма Маркова необходимо задать: 1. алфавит для записи слов и, возможно, расширенный алфавит для
записи марковских преобразований (полученный путем добавления
дополнительных технических букв); 2.определение предложений и слов языка, на котором будут записы
ваться данные и результаты.
Порядок действия алгорифма Маркова:
1) записывается последовательность марковских подстановок и зада
ется слово, на которое должен действовать этот алгорифм.
2) проверяется возможность марковской подстановки (1). Если она
успешна, процесс повторяется, начиная с первой подстановки, если
неуспешна, то происходит переход к следующей подстановке. Если
подстановка конечна, то прекращаем работу алгорифма.
3) если в результате использования алгоритма будет произведена ко
нечная подстановка или ни одна из подстановок не будет успеш
ной, то алгорифм прекращает свою работу.
Результатом действия алгорифма Маркова может быть:
1) все подстановки неуспешны, мы получаем результат действия алгорифма.
2) в процессе работы выполнена конечная подстановка, результат работы есть.
3) алгорифм выполняется бесконечно.
Таким образом, результата действия алгорифма нет только при бесконечном выполнении алгорифма, а если алгорифм совсем не меняет слово, то считается, что результат есть.
Говорят, что алгорифм применим к данному слову, если он дает результат для слова, и не применим к слову, если результата нет. Таким образом, у любого алгорифма существует множество слов, для которых он применим (область применимости) и множество слов, для которых он не применим (область неприменимости).
Замечание: поскольку алгорифм используется для построения словарных функций, то кроме применимости можно определить и правильность действия. Алгорифм правильно действует на слово, если он применим к этому слову и его результат совпадает с результатом словарной функции, которую он определяет.
Дата добавления: 2015-07-11; просмотров: 97 | Нарушение авторских прав