Algoritmul Markov - Markov algorithm
În informatică teoretică , un algoritm Markov este un sistem de rescriere a șirurilor care folosește reguli de tip gramatică pentru a opera pe șiruri de simboluri. Algoritmii Markov s-au dovedit a fi Turing-complet , ceea ce înseamnă că sunt potriviți ca model general de calcul și pot reprezenta orice expresie matematică din notația sa simplă. Algoritmii Markov poartă numele matematicianului sovietic Andrey Markov, Jr.
Refal este un limbaj de programare bazat pe algoritmi Markov.
Descriere
Algoritmii normali sunt verbali, adică intenționați să fie aplicați șirurilor din diferite alfabete.
Definiția oricărui algoritm normal constă din două părți: definiția alfabetului algoritmului (algoritmul va fi aplicat șirurilor acestor simboluri alfabetice) și definiția schemei sale . Schema unui algoritm normal este un set finit ordonat de așa-numitele formule de substituție , fiecare dintre acestea putând fi simplă sau finală . Formulele simple de substituție sunt reprezentate de șiruri de formă , unde și sunt două șiruri arbitrare din alfabetul algoritmului (numite, respectiv, laturile stânga și dreapta substituției formulei). În mod similar, formulele de substituție finală sunt reprezentate de șiruri de formă , unde și sunt două șiruri arbitrare din alfabetul algoritmului. Aceasta presupune că caracterele auxiliare și nu aparțin alfabetului algoritmului (în caz contrar, ar trebui selectate alte două caractere pentru a-și îndeplini rolul de separatoare ale laturilor stânga și dreaptă, care nu se află în alfabetul algoritmului).
Iată un exemplu de schemă algoritmică normală în alfabetul cu cinci litere :
Procesul de aplicare a algoritmului normal la un șir arbitrar din alfabetul acestui algoritm este o secvență discretă de pași elementari, constând din următoarele. Să presupunem că acesta este cuvântul obținut în pasul anterior al algoritmului (sau cuvântul original , dacă pasul curent este primul). Dacă dintre formulele de substituție nu există nicio parte din stânga care este inclusă în , atunci algoritmul se termină, iar rezultatul muncii sale este considerat a fi șirul . În caz contrar, este selectată prima dintre formulele de substituție ale căror laturi stângi sunt incluse . Dacă formula de substituție este de formă , atunci din toate reprezentările posibile ale șirului formei (unde și sunt șiruri arbitrare) se alege cea cu cea mai scurtă . Apoi algoritmul se termină și rezultatul muncii sale este considerat a fi . Cu toate acestea, dacă această formulă de substituție este de formă , atunci din toate reprezentările posibile ale șirului formei celui cu cea mai scurtă , după care șirul este considerat a fi rezultatul pasului curent, subiect la procesarea ulterioară în pasul următor.
De exemplu, procesul de aplicare a algoritmului descris mai sus la cuvântul rezultate din secvența de cuvinte , , , , , , , , , și , după care algoritmul se oprește cu rezultatul .
Pentru alte exemple, a se vedea mai jos.
Orice algoritm normal este echivalent cu o anumită mașină Turing și viceversa - orice mașină Turing este echivalentă cu un anumit algoritm normal. O versiune a tezei Church-Turing formulată în raport cu algoritmul normal este numită „principiul normalizării”.
Algoritmii normali s-au dovedit a fi un mijloc convenabil pentru construirea multor secțiuni ale matematicii constructive . Mai mult, inerent definiției unui algoritm normal sunt o serie de idei utilizate în limbaje de programare care vizează gestionarea informațiilor simbolice - de exemplu, în Refal .
Algoritm
De Regulile sunt o succesiune de perechi de șiruri, de obicei , prezentate sub formă de model → înlocuire . Fiecare regulă poate fi fie obișnuită, fie finală.
Având un șir de intrare :
- Verificați regulile în ordine de sus în jos pentru a vedea dacă oricare dintre modele poate fi găsit în șirul de intrare .
- Dacă nu se găsește niciunul, algoritmul se oprește.
- Dacă se găsește unul (sau mai multe), utilizați primul dintre ele pentru a înlocui cea mai stângă apariție a textului potrivit din șirul de intrare cu înlocuirea acestuia .
- Dacă regula aplicată tocmai a fost una care se termină, algoritmul se oprește.
- Mergeți la pasul 1.
Rețineți că după fiecare cerere de regulă, căutarea începe de la prima regulă.
Exemplu
Următorul exemplu prezintă funcționarea de bază a unui algoritm Markov.
Reguli
- „A” -> „măr”
- „B” -> „geantă”
- „S” -> „magazin”
- „T” -> „cel”
- "magazinul" -> "fratele meu"
- "a never used" -> . „regulă de încheiere”
Șir de simboluri
"Am cumpărat un B de As de la T S."
Execuţie
Dacă algoritmul este aplicat exemplului de mai sus, șirul de simboluri se va modifica în modul următor.
- "Am cumpărat un B de As de la T S."
- „Am cumpărat un B de mere de la T S.”
- „Am cumpărat o pungă de mere de la T S.”
- „Am cumpărat o pungă cu mere de la magazinul T.”
- „Am cumpărat o pungă cu mere de la magazin”.
- „Am cumpărat o pungă de mere de la fratele meu”.
Algoritmul se va termina apoi.
Alt exemplu
Aceste reguli oferă un exemplu mai interesant. Ei rescriu numere binare omologilor lor unari. De exemplu, 101 va fi rescris într-un șir de 5 bare consecutive.
Reguli
- "| 0" -> "0 ||"
- "1" -> "0 |"
- "0" -> ""
Șir de simboluri
„101”
Execuţie
Dacă algoritmul este aplicat exemplului de mai sus, acesta se va termina după pașii următori.
- „101”
- "0 | 01"
- "00 || 1"
- "00 || 0 |"
- "00 | 0 |||"
- "000 |||||"
- "00 |||||"
- „0 |||||”
- "|||||"
Vezi si
Referințe
- Caracciolo di Forino, A. Limbaje de procesare a șirurilor și algoritmi Markov generalizați. În limbaje și tehnici de manipulare a simbolurilor, DG Bobrow (Ed.), North-Holland Publ. Co., Amsterdam, Olanda, 1968, pp. 191–206.
- Andrey Andreevich Markov (1903-1979) 1960. Teoria algoritmilor. American Mathematical Society Translations, seria 2, 15, 1-14.