Markov algoritme - Markov algorithm
I teoretisk informatikk , en Markov algoritme er en streng omskriving system som bruker grammatikk -lignende regler for å operere på strenger av symboler. Markov-algoritmer har vist seg å være Turing-complete , noe som betyr at de er egnet som en generell beregningsmodell og kan representere ethvert matematisk uttrykk fra den enkle notasjonen. Markov-algoritmer er oppkalt etter den sovjetiske matematikeren Andrey Markov, Jr.
Refal er et programmeringsspråk basert på Markov-algoritmer.
Beskrivelse
Normale algoritmer er verbale, det vil si ment å brukes på strenger i forskjellige alfabeter.
Definisjonen av en hvilken som helst normal algoritme består av to deler: definisjonen av algoritmets alfabet (algoritmen vil bli brukt på strenger av disse alfabetssymbolene), og definisjonen av skjemaet . Skjemaet for en normal algoritme er et endelig ordnet sett med såkalte substitusjonsformler , som hver kan være enkle eller endelige . Enkle erstatningsformler er representert av strenger av skjemaet , hvor og er to vilkårlige strenger i algoritmets alfabet (kalt henholdsvis venstre og høyre side av formelsubstitusjonen). Tilsvarende er endelige substitusjonsformler representert av strenger av skjemaet , hvor og er to vilkårlige strenger i algoritmets alfabet. Dette forutsetter at hjelpetegnene og ikke tilhører algoritmets alfabet (ellers bør to andre tegn utføres som delere av venstre og høyre side, som ikke er i algoritmens alfabet, bør velges).
Her er et eksempel på et vanlig algoritmeskjema i alfabetet med fem bokstaver :
Prosessen med å bruke den normale algoritmen til en vilkårlig streng i alfabetet til denne algoritmen er en diskret sekvens av elementære trinn, bestående av følgende. La oss anta at det er ordet oppnådd i forrige trinn i algoritmen (eller det opprinnelige ordet , hvis det nåværende trinnet er det første). Hvis det ikke er noen venstre side som er inkludert i substitusjonsformlene , slutter algoritmen, og resultatet av arbeidet anses å være strengen . Ellers er den første av substitusjonsformlene hvis venstre sider er inkludert i valgt. Hvis substitusjonsformelen er av formen , velges den med den korteste av alle mulige representasjoner av strengens form (hvor og er vilkårlige strenger) . Deretter avsluttes algoritmen, og resultatet av arbeidet anses å være . Imidlertid, hvis denne erstatningsformelen er av formen , velges ut av alle mulige representasjoner av strengen til formen til den med den korteste , hvorpå strengen anses å være resultatet av det nåværende trinnet, underlagt til videre behandling i neste trinn.
For eksempel kan prosessen med å anvende algoritmen som er beskrevet ovenfor for å ordet resulterer i sekvensen av ord , , , , , , , , , og , etter som algoritmen stopper med resultatet .
For andre eksempler, se nedenfor.
Enhver normal algoritme tilsvarer noen Turing-maskiner , og omvendt - enhver Turing-maskin tilsvarer en eller annen normal algoritme. En versjon av Church-Turing-oppgaven formulert i forhold til den normale algoritmen kalles "normaliseringsprinsippet."
Normale algoritmer har vist seg å være et praktisk middel for konstruksjon av mange deler av konstruktiv matematikk . Dessuten er det en rekke ideer som brukes i programmeringsspråk som er rettet mot å håndtere symbolsk informasjon - for eksempel i Refal .
Algoritme
De regler er en sekvens av par av strenger, vanligvis presentert i form av mønsteret → erstatning . Hver regel kan være vanlig eller avsluttende.
Gitt en inngangsstreng :
- Sjekk reglene i rekkefølge fra topp til bunn for å se om noen av mønstrene finnes i inndatastrengen .
- Hvis ingen blir funnet, stopper algoritmen.
- Hvis en (eller flere) blir funnet, bruk den første av dem til å erstatte den venstre forekomsten av samsvarende tekst i inngangsstrengen med erstatningen .
- Hvis den nettopp anvendte regelen var en avslutning, stopper algoritmen.
- Gå til trinn 1.
Merk at etter hver regelapplikasjon starter søket på nytt fra den første regelen.
Eksempel
Følgende eksempel viser den grunnleggende operasjonen til en Markov-algoritme.
Regler
- "A" -> "eple"
- "B" -> "bag"
- "S" -> "butikk"
- "T" -> "den"
- "butikken" -> "min bror"
- "en aldri brukt" -> . "avslutningsregel"
Symbolstreng
"Jeg kjøpte en B av As fra T S."
Henrettelse
Hvis algoritmen brukes på eksemplet ovenfor, vil Symbolstrengen endres på følgende måte.
- "Jeg kjøpte en B av As fra T S."
- "Jeg kjøpte en B epler fra T S."
- "Jeg kjøpte en pose epler fra T S."
- "Jeg kjøpte en pose epler fra T shop."
- "Jeg kjøpte en pose epler fra butikken."
- "Jeg kjøpte en pose epler fra broren min."
Algoritmen vil da avsluttes.
Et annet eksempel
Disse reglene gir et mer interessant eksempel. De omskriver binære tall til sine unare kolleger. For eksempel vil 101 bli omskrevet til en streng på fem påfølgende søyler.
Regler
- "| 0" -> "0 ||"
- "1" -> "0 |"
- "0" -> ""
Symbolstreng
"101"
Henrettelse
Hvis algoritmen brukes på eksemplet ovenfor, vil den avsluttes etter følgende trinn.
- "101"
- "0 | 01"
- "00 || 1"
- "00 || 0 |"
- "00 | 0 |||"
- "000 |||||"
- "00 |||||"
- "0 |||||"
- "|||||"
Se også
Referanser
- Caracciolo di Forino, A. Stringbehandlingsspråk og generaliserte Markov-algoritmer. I symbolmanipulasjonsspråk og -teknikker, GD Bobrow (red.), Nord-Holland Publ. Co., Amsterdam, Nederland, 1968, s. 191–206.
- Andrey Andreevich Markov (1903-1979) 1960. Teorien om algoritmer. American Mathematical Society Translations, serie 2, 15, 1-14.