Dyck språk
I teorin om formella språk inom datavetenskap , matematik och lingvistik är ett Dyck-ord en balanserad sträng av parenteser. Uppsättningen av Dyck-ord bildar ett Dyck-språk . Den enklaste, D1, använder bara två matchande parenteser, t.ex. [ och ].
Dyck ord och språk är uppkallade efter matematikern Walther von Dyck . De har applikationer för att analysera uttryck som måste ha en korrekt kapslad sekvens av hakparenteser, såsom aritmetiska eller algebraiska uttryck.
Formell definition
Låt vara alfabetet som består av symbolerna [ och ]. Låt beteckna dess Kleene-stängning . Dyckspråket definieras som :
Kontextfri grammatik
Det kan vara till hjälp att definiera Dyck-språket via en kontextfri grammatik i vissa situationer. Dyck-språket genereras av den kontextfria grammatiken med ett enda icke-terminalt S , och produktionen:
- S → ε | "[" S "]" S
Det vill säga, S är antingen den tomma strängen ( ε ) eller är "[", ett element i Dyck-språket, det matchande "]" och ett element i Dyck-språket.
En alternativ kontextfri grammatik för Dyck-språket ges av produktionen:
- S → ("[" S "]") *
Det vill säga, S är noll eller fler förekomster av kombinationen av "[", ett element i Dyck-språket och ett matchande "]", där flera element i Dyck-språket på höger sida av produktionen är fria att skilja sig från varandra.
Alternativ definition
I ytterligare andra sammanhang kan det istället vara till hjälp att definiera Dyck-språket genom att dela upp i ekvivalensklasser, enligt följande. För alla element av längd , vi definierar delfunktioner och av
- är med " " infogat i e positionen
- är med " " borttagen från e positionen
med den förståelsen att är odefinierat för och är odefinierat om . Vi definierar en ekvivalensrelation på enligt följande: för element vi har om och bara om det finns en sekvens av noll eller fler tillämpningar av och funktioner som börjar med och slutar med . Att sekvensen av nolloperationer tillåts står för reflexiviteten hos R . Symmetri följer av observationen att varje ändlig sekvens av applikationer av till en sträng kan ångras med en ändlig sekvens av applikationer av . Transitivitet framgår tydligt av definitionen.
Ekvivalensrelationen delar upp språket i ekvivalensklasser. Om vi tar kallas språket som motsvarar ekvivalensklassen Dyck-språket .
Egenskaper
- Dyck-språket är stängt under driften av sammanlänkning .
- Genom att behandla som en algebraisk monoid under konkatenering ser vi att monoidstrukturen överförs till kvoten , vilket resulterar i syntaktisk monoid av Dyck-språket . Klassen kommer att betecknas .
- Den syntaktiska monoiden för Dyck-språket är inte kommutativ : om och sedan .
- Med notationen ovan är men varken eller är inverterbara i .
- Den syntaktiska monoiden i Dyck-språket är isomorf till den bicykliska semigruppen på grund av egenskaperna hos och som beskrivs ovan.
- Enligt Chomsky-Schützenbergers representationsteorem är vilket sammanhangsfritt språk som helst en homomorfisk bild av skärningspunkten mellan något reguljärt språk och ett Dyck-språk på en eller flera typer av parantes.
- Dyck-språket med två distinkta typer av parenteser kan kännas igen i komplexitetsklassen T .
- Antalet distinkta Dyck-ord med exakt n par parenteser och k innersta par (dvs. delsträngen ) är Narayana-talet .
- Antalet distinkta Dyck-ord med exakt n par parenteser är det n -te katalanska talet . Lägg märke till att Dyck-språket för ord med n parentespar är lika med föreningen, över alla möjliga k , av Dyck-språken av ord med n parentespar med k innersta par , som definierats i föregående punkt. Eftersom k kan sträcka sig från 0 till n får vi följande likhet, vilket faktiskt gäller:
Exempel
Vi kan definiera en ekvivalensrelation på Dyck-språket . För har vi if and only if , dvs och har samma längd. Denna relation delar upp Dyck-språket: . Vi har där . Observera att är tom för udda .
Efter att ha introducerat Dyck-orden med längden , kan vi introducera en relation på dem. För varje definierar vi en relation på ; för har vi om och endast om kan nås från genom en serie av korrekta byten . Ett ordentligt byte i ett ord byter ut en förekomst av '][' med '[]'. För varje gör relationen till en delvis beställt set . Relationen är reflexiv eftersom en tom sekvens av korrekta byten tar till . Transitivitet följer eftersom vi kan utöka en sekvens av korrekta swappar som tar till genom att sammanfoga den med en sekvens av korrekta swappar som tar till bildar en sekvens som tar till . För att se att också är antisymmetrisk introducerar vi en hjälpfunktion definierad som en summa över alla prefix för :
Följande tabell illustrerar att är strikt monotont med avseende på korrekta swappar.
delsummor av | ||||
---|---|---|---|---|
] | [ | |||
[ | ] | |||
delsummor av | ||||
Skillnad på delsummor | 0 | 2 | 0 | 0 |
Därför så när det finns ett ordentligt byte som tar till . Om vi nu antar att både och , då finns det icke-tomma sekvenser av korrekta swappar såsom tas in i och vice versa. Men då vilket är meningslöst. Därför, när både och är i , har vi , därför är antisymmetrisk.
Den partiellt ordnade mängden visas i illustrationen som medföljer inledningen om vi tolkar en [ som att gå upp och ] som att gå ner.
Generaliseringar
Det finns varianter av Dyck-språket med flera avgränsare, t.ex. D2 på alfabetet "(", ")", "[" och "]". Orden i ett sådant språk är de som är väl inom parentes för alla avgränsare, dvs man kan läsa ordet från vänster till höger, trycka på varje öppningsavgränsare på stapeln, och när vi når en avslutande avgränsare måste vi kunna för att skjuta upp den matchande öppningsavgränsaren från toppen av högen. (Räknealgoritmen ovan generaliserar inte).
Se även
Anteckningar
- Dyck språk på PlanetMath .
- Ett bevis på Chomsky Schützenbergers sats
- Ett AMS-blogginlägg om Dyck-ord