Нормальный алгоритм
Норма́льный алгори́тм (алгори́фм) Ма́ркова (НАМ, также марковский алгоритм) — один из стандартных способов формального определения понятия алгоритма (другой известный способ — машина Тьюринга). Понятие нормального алгоритма введено А. А. Марковым (младшим) в конце 1940-х годов в работах по неразрешимости некоторых проблем теории ассоциативных вычислений. Традиционное написание и произношение слова «алгорифм» в этом термине также восходит к его авторству, многие годы читавшему курс математической логики на механико-математическом факультете МГУ.
Нормальный алгоритм описывает метод переписывания строк, похожий по способу задания на формальные грамматики. НАМ — полный по Тьюрингу язык, что делает его по выразительной силе эквивалентным машине Тьюринга и, следовательно, современным языкам программирования. На основе НАМ был создан функциональный язык программирования Рефал.
Описание
Нормальные алгоритмы вербальны, то есть предназначены для применения к словам в различных алфавитах.
Определение всякого нормального алгоритма состоит из двух частей: определения алфавита алгоритма (к словам, из символов которого алгоритм будет применяться) и определения его схемы. Схемой нормального алгоритма называется конечный упорядоченный набор так называемых формул подстановки, каждая из которых может быть простой или заключительной. Простыми формулами подстановки называются слова вида , где
и
— два произвольных слова в алфавите алгоритма (называемые, соответственно, левой и правой частями формулы подстановки). Аналогично, заключительными формулами подстановки называются слова вида
, где
и
— два произвольных слова в алфавите алгоритма. При этом предполагается, что вспомогательные буквы
и
не принадлежат алфавиту алгоритма (в противном случае на исполняемую ими роль разделителя левой и правой частей следует избрать другие две буквы).
Примером схемы нормального алгоритма в пятибуквенном алфавите может служить схема
Процесс применения нормального алгоритма к произвольному слову в алфавите этого алгоритма представляет собой дискретную последовательность элементарных шагов, состоящих в следующем. Пусть
— слово, полученное на предыдущем шаге работы алгоритма (или исходное слово
, если текущий шаг — первый). Если среди формул подстановки нет такой, левая часть которой входила бы в
, то работа алгоритма считается завершённой, и результатом этой работы считается слово
. Иначе среди формул подстановки, левая часть которых входит в
, выбирается самая первая. Если эта формула подстановки имеет вид
, то из всех возможных представлений слова
в виде
выбирается такое, при котором
— самое короткое, после чего работа алгоритма считается завершённой с результатом
. Если же эта формула подстановки имеет вид
, то из всех возможных представлений слова
в виде
выбирается такое, при котором
— самое короткое, после чего слово
считается результатом текущего шага, подлежащим дальнейшей переработке на следующем шаге.
Например, в ходе процесса применения алгоритма с указанной выше схемой к слову последовательно возникают слова
,
,
,
,
,
,
,
,
,
и
, после чего алгоритм завершает работу с результатом
. Другие примеры смотрите ниже.
Любой нормальный алгоритм эквивалентен некоторой машине Тьюринга, и наоборот — любая машина Тьюринга эквивалентна некоторому нормальному алгоритму. Вариант тезиса Чёрча — Тьюринга, сформулированный применительно к нормальным алгоритмам, принято называть «принципом нормализации».
Нормальные алгоритмы оказались удобным средством для построения многих разделов конструктивной математики. Кроме того, заложенные в определении нормального алгоритма идеи используются в ряде ориентированных на обработку символьной информации языков программирования — например, в языке Рефал.
Примеры
Пример 1
Использование алгоритма Маркова для преобразований над строками.
Алфавит:
- { а…я, А…Я, «пробел», «точка» }
Правила:
- А → апельсин
- кг → килограмм
- М → магазинчике
- Т → том
- магазинчике →. ларьке (заключительная формула)
- в том ларьке → на том рынке
Исходная строка:
- Я купил кг Аов в Т М.
При выполнении алгоритма строка претерпевает следующие изменения:
- Я купил кг апельсинов в Т М.
- Я купил килограмм апельсинов в Т М.
- Я купил килограмм апельсинов в Т магазинчике.
- Я купил килограмм апельсинов в том магазинчике.
- Я купил килограмм апельсинов в том ларьке.
На этом выполнение алгоритма завершится (так как будет достигнута формула № 5, которую мы сделали заключительной).
Пример 2
Данный алгоритм преобразует двоичные числа в «единичные» (в которых записью целого неотрицательного числа N является строка из N палочек). Например, двоичное число 101 преобразуется в 5 палочек: |||||.
Алфавит:
- { 0, 1, | }
Правила:
- 1 → 0|
- |0 → 0||
- 0 → "" (пустая строка)
Исходная строка:
- 101
Выполнение:
- 0|01
- 0|00|
- 00||0|
- 00|0|||
- 000|||||
- 00|||||
- 0|||||
- |||||
Ссылки
- Yad Studio — IDE и интерпретатор для Нормальных Алгоритмов Маркова (Open Source)
- Javascript-эмулятор нормальных алгорифмов Маркова (работает on-line)
Эту статью необходимо исправить в соответствии с правилами Википедии об оформлении статей. |
Эта статья нуждается в переработке. Пожалуйста, уточните проблему в статье с помощью более узкого шаблона. |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Нормальный алгоритм, Что такое Нормальный алгоритм? Что означает Нормальный алгоритм?
Norma lnyj algori tm algori fm Ma rkova NAM takzhe markovskij algoritm odin iz standartnyh sposobov formalnogo opredeleniya ponyatiya algoritma drugoj izvestnyj sposob mashina Tyuringa Ponyatie normalnogo algoritma vvedeno A A Markovym mladshim v konce 1940 h godov v rabotah po nerazreshimosti nekotoryh problem teorii associativnyh vychislenij Tradicionnoe napisanie i proiznoshenie slova algorifm v etom termine takzhe voshodit k ego avtorstvu mnogie gody chitavshemu kurs matematicheskoj logiki na mehaniko matematicheskom fakultete MGU Normalnyj algoritm opisyvaet metod perepisyvaniya strok pohozhij po sposobu zadaniya na formalnye grammatiki NAM polnyj po Tyuringu yazyk chto delaet ego po vyrazitelnoj sile ekvivalentnym mashine Tyuringa i sledovatelno sovremennym yazykam programmirovaniya Na osnove NAM byl sozdan funkcionalnyj yazyk programmirovaniya Refal OpisanieNormalnye algoritmy verbalny to est prednaznacheny dlya primeneniya k slovam v razlichnyh alfavitah Opredelenie vsyakogo normalnogo algoritma sostoit iz dvuh chastej opredeleniya alfavita algoritma k slovam iz simvolov kotorogo algoritm budet primenyatsya i opredeleniya ego shemy Shemoj normalnogo algoritma nazyvaetsya konechnyj uporyadochennyj nabor tak nazyvaemyh formul podstanovki kazhdaya iz kotoryh mozhet byt prostoj ili zaklyuchitelnoj Prostymi formulami podstanovki nazyvayutsya slova vida L D displaystyle L to D gde L displaystyle L i D displaystyle D dva proizvolnyh slova v alfavite algoritma nazyvaemye sootvetstvenno levoj i pravoj chastyami formuly podstanovki Analogichno zaklyuchitelnymi formulami podstanovki nazyvayutsya slova vida L D displaystyle L to cdot D gde L displaystyle L i D displaystyle D dva proizvolnyh slova v alfavite algoritma Pri etom predpolagaetsya chto vspomogatelnye bukvy displaystyle to i displaystyle to cdot ne prinadlezhat alfavitu algoritma v protivnom sluchae na ispolnyaemuyu imi rol razdelitelya levoj i pravoj chastej sleduet izbrat drugie dve bukvy Primerom shemy normalnogo algoritma v pyatibukvennom alfavite abc displaystyle abc mozhet sluzhit shema b ba ab bab b c c cac c c displaystyle left begin matrix b amp to amp ba ab amp to amp ba b amp to amp amp to amp b amp amp to amp c amp c amp to amp c ac amp to amp c c amp to cdot end matrix right Process primeneniya normalnogo algoritma k proizvolnomu slovu V displaystyle V v alfavite etogo algoritma predstavlyaet soboj diskretnuyu posledovatelnost elementarnyh shagov sostoyashih v sleduyushem Pust V displaystyle V slovo poluchennoe na predydushem shage raboty algoritma ili ishodnoe slovo V displaystyle V esli tekushij shag pervyj Esli sredi formul podstanovki net takoj levaya chast kotoroj vhodila by v V displaystyle V to rabota algoritma schitaetsya zavershyonnoj i rezultatom etoj raboty schitaetsya slovo V displaystyle V Inache sredi formul podstanovki levaya chast kotoryh vhodit v V displaystyle V vybiraetsya samaya pervaya Esli eta formula podstanovki imeet vid L D displaystyle L to cdot D to iz vseh vozmozhnyh predstavlenij slova V displaystyle V v vide RLS displaystyle RLS vybiraetsya takoe pri kotorom R displaystyle R samoe korotkoe posle chego rabota algoritma schitaetsya zavershyonnoj s rezultatom RDS displaystyle RDS Esli zhe eta formula podstanovki imeet vid L D displaystyle L to D to iz vseh vozmozhnyh predstavlenij slova V displaystyle V v vide RLS displaystyle RLS vybiraetsya takoe pri kotorom R displaystyle R samoe korotkoe posle chego slovo RDS displaystyle RDS schitaetsya rezultatom tekushego shaga podlezhashim dalnejshej pererabotke na sleduyushem shage Naprimer v hode processa primeneniya algoritma s ukazannoj vyshe shemoj k slovu displaystyle posledovatelno voznikayut slova b displaystyle b ba displaystyle ba a displaystyle a a b displaystyle a b aba displaystyle aba baa displaystyle baa aa displaystyle aa aa c displaystyle aa c aac displaystyle aac ac displaystyle ac i c displaystyle c posle chego algoritm zavershaet rabotu s rezultatom displaystyle Drugie primery smotrite nizhe Lyuboj normalnyj algoritm ekvivalenten nekotoroj mashine Tyuringa i naoborot lyubaya mashina Tyuringa ekvivalentna nekotoromu normalnomu algoritmu Variant tezisa Chyorcha Tyuringa sformulirovannyj primenitelno k normalnym algoritmam prinyato nazyvat principom normalizacii Normalnye algoritmy okazalis udobnym sredstvom dlya postroeniya mnogih razdelov konstruktivnoj matematiki Krome togo zalozhennye v opredelenii normalnogo algoritma idei ispolzuyutsya v ryade orientirovannyh na obrabotku simvolnoj informacii yazykov programmirovaniya naprimer v yazyke Refal PrimeryPrimer 1 Ispolzovanie algoritma Markova dlya preobrazovanij nad strokami Alfavit a ya A Ya probel tochka Pravila A apelsin kg kilogramm M magazinchike T tom magazinchike larke zaklyuchitelnaya formula v tom larke na tom rynke Ishodnaya stroka Ya kupil kg Aov v T M Pri vypolnenii algoritma stroka preterpevaet sleduyushie izmeneniya Ya kupil kg apelsinov v T M Ya kupil kilogramm apelsinov v T M Ya kupil kilogramm apelsinov v T magazinchike Ya kupil kilogramm apelsinov v tom magazinchike Ya kupil kilogramm apelsinov v tom larke Na etom vypolnenie algoritma zavershitsya tak kak budet dostignuta formula 5 kotoruyu my sdelali zaklyuchitelnoj Primer 2 Dannyj algoritm preobrazuet dvoichnye chisla v edinichnye v kotoryh zapisyu celogo neotricatelnogo chisla N yavlyaetsya stroka iz N palochek Naprimer dvoichnoe chislo 101 preobrazuetsya v 5 palochek Alfavit 0 1 Pravila 1 0 0 0 0 pustaya stroka Ishodnaya stroka 101 Vypolnenie 0 01 0 00 00 0 00 0 000 00 0 SsylkiYad Studio IDE i interpretator dlya Normalnyh Algoritmov Markova Open Source Javascript emulyator normalnyh algorifmov Markova rabotaet on line Etu statyu neobhodimo ispravit v sootvetstvii s pravilami Vikipedii ob oformlenii statej Pozhalujsta pomogite uluchshit etu statyu 29 iyunya 2021 Eta statya nuzhdaetsya v pererabotke Pozhalujsta utochnite problemu v state s pomoshyu bolee uzkogo shablona Pozhalujsta uluchshite statyu v sootvetstvii s pravilami napisaniya statej 5 avgusta 2011
