Strengeoperasjoner - String operations

I informatikk , innen området formell språkteori , brukes det ofte en rekke strengfunksjoner ; notasjonen som brukes er imidlertid forskjellig fra den som brukes til programmering av datamaskiner , og noen ofte brukte funksjoner i det teoretiske riket brukes sjelden når du programmerer. Denne artikkelen definerer noen av disse grunnleggende begrepene.

Strenger og språk

En streng er en begrenset rekkefølge av tegn. Den tomme strengen er betegnet med . Samkonkurransen av to strenger og er betegnet med eller kortere av . Sette sammen med den tomme strengen gjør ingen forskjell: . Sammenkjeding av strenger er assosiativ: .

For eksempel .

Et språk er et begrenset eller uendelig sett med strenger. Foruten de vanlige settoperasjonene som forening, kryss osv., Kan sammenkoble brukes på språk: hvis både og er språk, er sammenkoble deres definert som settet med sammenløp av en streng fra og hvilken som helst streng fra , formelt . Igjen utelates ofte sammenkjøringsprikken for kortfattethet.

Språket som består av bare den tomme strengen, skal skilles fra det tomme språket . Sette sammen alle språk med den tidligere gjør ikke noen endring: , mens å sette sammen med sistnevnte alltid gir den tomme språk: . Sammenkjeding av språk er assosiativ: .

For eksempel, forkortelse , settet med alle tresifrede desimaltall oppnås som . Settet med alle desimaltall med vilkårlig lengde er et eksempel på et uendelig språk.

Alfabetet til en streng

Den alfabet av en streng er settet av alle de tegn som forekommer i en bestemt streng. Hvis s er en streng, betegnes alfabetet av

Den alfabetet av et språk er sett av alle tegn som forekommer i noen streng av , formelt: .

For eksempel er settet alfabetet til strengen , og det ovennevnte er alfabetet til språket ovenfor, så vel som språket i alle desimaltall.

Streng substitusjon

La L være et språk , og la Σ være alfabetet. En strengsubstitusjon eller bare en substitusjon er en kartlegging f som kartlegger tegn på Σ til språk (muligens i et annet alfabet). For eksempel, gitt et tegn a ∈ Σ, har man f ( a ) = L a der L a ⊆ Δ * er et språk som har alfabetet Δ. Denne kartleggingen kan utvides til strenger som

f (ε) = ε

for den tomme strengen ε, og

f ( sa ) = f ( s ) f ( a )

for streng sL og tegn a ∈ Σ. Strengesubstitusjoner kan utvides til å omfatte hele språk som

Vanlige språk er stengt under strengutskifting. Det vil si at hvis hvert tegn i alfabetet til et vanlig språk erstattes av et annet vanlig språk, er resultatet fortsatt et vanlig språk. På samme måte er kontekstfrie språk stengt under streng substitusjon.

Et enkelt eksempel er konverteringen f uc (.) Til store bokstaver, som kan defineres f.eks. Som følger:

karakter kartlagt til språk bemerke
x f uc ( x )
< En > {< A >} kartlegge små bokstaver til tilsvarende store bokstaver
< A > {< A >} kartlegge store bokstaver for seg selv
Ss {‹ SS ›} ingen store bokstaver tilgjengelig, kart til to-char streng
<0> {ε} kart sifre til tom streng
<!> {} forbyr tegnsetting, kart til tomt språk
... lignende for andre tegn

For utvidelse av f uc til strenger, har vi f.eks

  • f uc (‹Straße›) = {‹S›} ⋅ {‹T›} ⋅ {‹R›} ⋅ {‹A›} ⋅ {‹SS›} ⋅ {‹E›} = {‹STRASSE›},
  • f uc (‹u2›) = {‹U›} ⋅ {ε} = {‹U›}, og
  • f uc (‹Gå!›) = {‹G›} ⋅ {‹O›} ⋅ {} = {}.

For utvidelse av f uc til språk, har vi f.eks

  • f uc ({‹Straße›, ‹u2›, ‹Go!›}) = {‹STRASSE›} ∪ {‹U›} ∪ {} = {‹STRASSE›, ‹U›}.

Strenghomomorfisme

En strenghomomorfisme (ofte referert til som en homomorfisme i formell språkteori ) er en strengsubstitusjon slik at hvert tegn erstattes av en enkelt streng. Det vil si , hvor er en streng, for hvert tegn .

Strenghomomorfismer er monoidmorfismer på den frie monoiden , og bevarer den tomme strengen og den binære driften av strengkonkatenasjon . Gitt et språk , kalles settet det homomorfe bildet av . Det inverse homomorfe bildet av en streng er definert som

mens det inverse homomorfe bildet av et språk er definert som

Generelt sett , mens man har det

og

for ethvert språk .

Klassen med vanlige språk er stengt under homomorfismer og inverse homomorfismer. Tilsvarende er de kontekstfrie språk stengt under homomorfismer og inverse homomorfismer.

En strenghomomorfisme sies å være ε-fri (eller e-fri) hvis for alle a i alfabetet . Enkle substitusjonssifere med én bokstav er eksempler på (ε-frie) strenghomomorfier.

Et eksempel streng homomorfisme g uc kan også oppnås ved å definere lignende substitusjonen ovenfor : g uc (‹a›) = ‹A›, ..., g uc (‹0›) = ε, men la g uc være udefinert på tegnsettingstegn. Eksempler på inverse homomorfe bilder er

  • g uc −1 ({‹SSS›}) = {‹sss›, ‹sß›, ‹ßs›}, siden g uc (‹sss›) = g uc (‹sß›) = g uc (‹ßs›) = ‹SSS›, og
  • g uc −1 ({‹A›, ‹bb›}) = {‹a›}, siden g uc (‹a›) = ‹A›, mens ‹bb› ikke kan nås med g uc .

For det siste språket, g uc ( g uc −1 ({‹A›, ‹bb›})) = g uc ({‹a›}) = {‹A›} ≠ {‹A›, ‹bb›} . Homomorfismen g uc er ikke ε-fri, siden den kartlegger for eksempel ‹0› til ε.

Et veldig enkelt strenghomomorfismeeksempel som kartlegger hvert tegn til bare et tegn, er konvertering av en EBCDIC- kodet streng til ASCII .

Strengprojeksjon

Hvis s er en streng, og er et alfabet, er strengprojeksjonen av s strengen som blir resultatet ved å fjerne alle tegn som ikke er i . Det er skrevet som . Det er formelt definert ved å fjerne tegn fra høyre side:

Her betegner den tomme strengen . Projeksjonen av en streng er i hovedsak den samme som en projeksjon i relasjonsalgebra .

Strengprojeksjon kan fremmes til projeksjon av et språk . Gitt et formelt språk L , er projeksjonen gitt av

Rett kvotient

Den rette kvoten på et tegn a fra en streng s er avkortningen av tegnet a i strengen s , fra høyre side. Det er betegnet som . Hvis strengen ikke har en på høyre side, er resultatet den tomme strengen. Dermed:

Kvotienten til den tomme strengen kan tas:

Tilsvarende, gitt en delmengde av en monoid , kan man definere kvotientens undergruppe som

Venstre kvoter kan defineres på lignende måte, med operasjoner som foregår til venstre for en streng.

Hopcroft og Ullman (1979) definerer kvotienten L 1 / L 2 på språkene L 1 og L 2 over det samme alfabetet som L 1 / L 2 = { s | ∃ tL 2 . stL 1 }. Dette er ikke en generalisering av definisjonen ovenfor, siden, for en streng s og distinkte tegn a , b , Hopcrofts og Ullmans definisjon innebærer at { sa } / { b } gir {}, i stedet for {ε}.

Den venstre kvotienten (når definert ligner Hopcroft og Ullman 1979) av et singletonspråk L 1 og et vilkårlig språk L 2 er kjent som Brzozowski-derivat ; Hvis L 2 er representert av et vanlig uttrykk , kan det være venstre kvotient.

Syntaktisk forhold

Den høyre kvotienten av en delmengde av en monoid definerer en ekvivalens forhold , kalt den høyre syntaktiske forholdet av S . Det er gitt av

Forholdet er tydelig av en begrenset indeks (har et begrenset antall ekvivalensklasser) hvis og bare hvis familierettets kvoter er begrensede; det vil si hvis

er begrenset. I tilfelle at M er monoid av ord over et eller annet alfabet, er S da et vanlig språk , det vil si et språk som kan gjenkjennes av en endelig tilstandsautomat . Dette blir diskutert nærmere i artikkelen om syntaktiske monoider .

Rett avbestilling

Den rette kanselleringen av et tegn a fra en streng s er fjerningen av den første forekomsten av tegnet a i strengen s , fra høyre side. Det er betegnet som og er rekursivt definert som

Den tomme strengen er alltid kansellerbar:

Det er klart, riktig avbestilling og projeksjon pendler :

prefikser

De prefikser av en streng er mengden av alle prefikser til en streng, med hensyn til et gitt språk:

hvor .

Den prefiks nedleggelse av et språk er

Eksempel:

Et språk kalles prefiks lukket hvis .

Operatøren for prefiksavslutning er identisk :

Den prefiks forhold er en binær relasjon slik at hvis og bare hvis . Dette forholdet er et spesielt eksempel på en prefiksrekkefølge .

Se også

Merknader

referanser

  • Hopcroft, John E .; Ullman, Jeffrey D. (1979). Introduksjon til Automata Teori, språk og beregning . Reading, Massachusetts: Addison-Wesley Publishing. ISBN  978-0-201-02988-8 . Zbl  0426.68001 . (Se kapittel 3.)