Normální algoritmus (algoritmus) Markova ( NAM , také Markovův algoritmus ) je jedním ze standardních způsobů, jak formálně definovat koncept algoritmu (další známá metoda je Turingův stroj ). Koncept normálního algoritmu zavedl A. A. Markov (junior) na konci 40. let v pracích o neřešitelnosti některých problémů v teorii asociativních výpočtů. Tradiční pravopis a výslovnost slova „algori f m“ v tomto termínu pochází také od jeho autora, který řadu let vyučoval kurz matematické logiky na Fakultě mechaniky a matematiky Moskevské státní univerzity .
Normální algoritmus popisuje metodu přepisování řetězců, podobnou formálním gramatikám . NAM je Turingův úplný jazyk, díky čemuž je ekvivalentní ve vyjadřovací síle Turingovu stroji, a tedy moderním programovacím jazykům. Na bázi NAM byl vytvořen funkcionální programovací jazyk Refal .
Normální algoritmy jsou verbální, to znamená, že jsou určeny k použití na slova v různých abecedách.
Definice každého normálního algoritmu se skládá ze dvou částí: definice abecedy algoritmu (na slova, z jejichž znaků bude algoritmus aplikován) a definice jeho schématu . Schéma normálního algoritmu je konečná uspořádaná množina takzvaných substitučních vzorců , z nichž každý může být jednoduchý nebo konečný . Jednoduché substituční vzorce jsou slova ve tvaru , kde a jsou dvě libovolná slova v abecedě algoritmu (nazývaná levá a pravá strana substitučního vzorce). Podobně konečné substituční vzorce jsou slova ve tvaru , kde a jsou dvě libovolná slova v abecedě algoritmu. Předpokládá se, že pomocná písmena a nepatří do abecedy algoritmu (jinak by měla být vybrána dvě další písmena, která budou hrát roli oddělovače mezi levou a pravou částí).
Příkladem normálního schématu algoritmu v pětipísmenné abecedě je schéma
Proces aplikace normálního algoritmu na libovolné slovo v abecedě tohoto algoritmu je diskrétní sekvence elementárních kroků, sestávající z následujících. Nechť je slovo získané v předchozím kroku algoritmu (nebo původní slovo , pokud je aktuální krok prvním). Pokud mezi substitučními vzorci není žádný, jehož levá strana by byla zahrnuta do , pak je práce algoritmu považována za dokončenou a výsledkem této práce je slovo . Jinak mezi substitučními vzorci, jejichž levá část je obsažena v , je vybrán ten úplně první. Pokud má tento substituční vzorec tvar , pak se ze všech možných reprezentací slova ve tvaru vybere jedno, pro které je nejkratší, načež se algoritmus považuje za dokončený s výsledkem . Pokud má tento substituční vzorec tvar , pak se ze všech možných reprezentací slova ve tvaru vybere to, které je nejkratší, načež se slovo považuje za výsledek aktuálního kroku, který je předmětem dalšího zpracování v dalším krok.
Například v průběhu procesu aplikace algoritmu se schématem uvedeným výše se slova , , , , , , , , a objevují postupně za slovem , načež algoritmus končí s výsledkem . Další příklady naleznete níže.
Jakýkoli normální algoritmus je ekvivalentní nějakému Turingovu stroji a naopak jakýkoli Turingův stroj je ekvivalentní nějakému normálnímu algoritmu. Varianta Church-Turingovy teze , formulovaná ve vztahu k normálním algoritmům, se běžně nazývá „princip normalizace“.
Normální algoritmy se ukázaly jako vhodný nástroj pro konstrukci mnoha odvětví konstruktivní matematiky . Kromě toho se myšlenky, které jsou součástí definice normálního algoritmu, používají v řadě programovacích jazyků orientovaných na zpracování symbolických informací - například v jazyce Refal .
Použití Markovova algoritmu pro transformace na řetězcích.
Abeceda:
{ a ... i, A ... I, "mezera", "tečka" }pravidla:
Zdrojový řádek:
Koupil jsem kg Aov v T M.Když je algoritmus spuštěn, řetězec prochází následujícími změnami:
Tím je provádění algoritmu dokončeno (protože bude dosaženo vzorce č. 5, který jsme učinili konečným).
Tento algoritmus převádí binární čísla na " single " (ve kterém záznam nezáporného celého čísla N je řetězec N tyčinek). Například binární číslo 101 se převede na 5 tyčinek: |||||.
Abeceda:
{ 0, 1, | }pravidla:
Zdrojový řádek:
101Výkon:
Slovníky a encyklopedie |
---|