Formalsprog: Forskelle mellem versioner

Fra Wikipedia, den frie encyklopædi
Content deleted Content added
m Sechinsic flyttede siden Formelt sprog til Formalsprog: kommunen bruger formelt sprog, matematikeren bruger formalsprog. Artiklen her handler om formalsprog
syntaks, layout, plus se også, eksterne kilder og kat lingvistik
Linje 1: Linje 1:
'''Formalsprog''' betegner en abstraktion fra den normale opfattelse af hvad [[sprog]] er. Et formalsprog er kendetegnet ved at være en planlagt konstruktion med en bestemt prædikation.
Et '''formelt sprog''' er i [[datalogi]]en en mængde af endelige [[Tekststreng|strenge]]. For at kunne definere et formelt sprog skal man have et [[Alfabet (datalogi)|alfabet]]. Et alfabet er en mængde af tegn og kaldes <math>\Sigma</math>. Man bruger [[kleene-operator]]en til at fremstille en vilkårlig streng <math>\Sigma^*</math>. Et formelt sprog ''L'' defineres herefter som:
Konceptet indgår i [[Sprogvidenskab|lingvistiske]] og [[filosofi]]ske terminologier, og anvendes også i [[datalogi]] og [[matematik]].


== Fastlæggelsen af et formalsprog ==
Formalsproget er en mængde af endelige [[Tekststreng|strenge]] - der typisk nok hovedsageligt består af [[Alfabet|alfabetiske]] [[tegn]]. Et alfabet er i denne sammenhæng simpelthen en defineret tegnrække der ikke nødvendigvis stemmer overens med et naturligt sprogs alfabet.

Mængden af tegn noteres som <math>\Sigma</math>. Man bruger kleene-operatoren til at fremstille en vilkårlig streng <math>\Sigma^*</math>. Et formelt sprog ''L'' defineres herefter som:
:<math>L \subseteq \Sigma^*</math> eller <math>L \in 2^{\Sigma^*}</math>
:<math>L \subseteq \Sigma^*</math> eller <math>L \in 2^{\Sigma^*}</math>


Nogle sprog kan formuleres direkte som en mængde af strenge. Et eksempel er:
Nogle sprog kan formuleres direkte som en mængde af strenge. Et eksempel er:

:<math>L = \lbrace\ s \in \Sigma^* \ |\ \mbox{length}(s) < 5 \ \rbrace \quad ,\ \Sigma = \lbrace \mbox{X}, \mbox{Y} \rbrace</math>
:<math>L = \lbrace\ s \in \Sigma^* \ |\ \mbox{length}(s) < 5 \ \rbrace \quad ,\ \Sigma = \lbrace \mbox{X}, \mbox{Y} \rbrace</math>


Her betegner ''L'' det sprog der består af X og Y og hvor alle strenge er kortere end 5 tegn. <math>\Sigma</math> udtrykkes kun eksplicit hvis det ikke fremgår af sammenhængen.
Her betegner ''L'' det sprog der består af X og Y og hvor alle strenge er kortere end 5 tegn. <math>\Sigma</math> udtrykkes kun eksplicit hvis det ikke fremgår af sammenhængen.


== Genkendelse og accept ==
=== Genkendelse og accept ===


Man bruger forskellige beregningsmodeller til at genkende eller acceptere forskellige typer af sprog. Der er følgende muligheder:
Man bruger forskellige beregningsmodeller til at genkende eller acceptere forskellige typer af sprog. Der er følgende muligheder:
* Sproget kan genkendes: For en given streng giver beregningsmodellen svaret Ja eller Nej om den er indeholdt i sproget.

* Sproget kan genkendes: For en given input-streng giver beregningsmodellen svaret Ja eller Nej om den er indeholdt i sproget.
* Sproget kan accepteres: For en given streng giver beregningsmodellen et positivt svar, hvis den er indeholdt i sproget, ellers looper den.{{bør uddybes}}
* Sproget kan accepteres: For en given input-streng giver beregningsmodellen et positivt svar, hvis den er indeholdt i sproget, ellers looper den.
* Sproget kan hverken genkendes eller accepteres. Nogle af disse sprog kan beskrives og andre kan ikke.
* Sproget kan hverken genkendes eller accepteres. Nogle af disse sprog kan beskrives og andre kan ikke.


Det er kendt datalogisk faktum at den sidste gruppe er den største og mængden er overtællelig i modsætning til mængden af sprog der kan accepteres, som er [[Tællelig mængde|tællelig]].
Det går for at være et datalogisk faktum at den sidste gruppe er den største. Mængden af 'sprog' der ikke kan genkendes og accepteres er ''overtællelig'' i modsætning til mængden af sprog der kan accepteres; deres mængde er [[Tællelig mængde|tællelig]].
[[Beregnelighed]]en af enkelte udsagn - også kaldet ''kompabilitetsteori'' - er et emne i [[diskret matematik]].


== Sprogklasser ==
== Sprogklasser ==


En sprogklasse er en mængde af sprog. En sprogklasse kendetegnes oftes ved at den genkendes af en given beregningsmodel. Her er nogle sprogklasser, som hver især er en ægte delmængde af den efterfølgende:
En sprogklasse er en mængde af sprog. En sprogklasse kendetegnes eksempelvis ved at den genkendes af en given prædikerende beregningsmodel. Her er nogle sprogklasser, som hver især er en ægte delmængde af den efterfølgende:


# Regulære sprog, der kan genkendes af en [[endelig automat]]. Disse har relation til [[regulære udtryk]].
# Regulære sprog, der kan genkendes af en [[endelig automat]]. Disse har relation til [[regulære udtryk]].
Linje 29: Linje 33:
# Alle sprog: <math>2^{\Sigma^*}</math>
# Alle sprog: <math>2^{\Sigma^*}</math>


Alle sprog der er rekursive kan genkendes. Sprog som ikke er rekursive, men rekursive enumerable kan kun accepteres. Sprog der ikke er rekursive enumerable kan ikke engang accepteres. Dette er hvad faget [[beregnelighed]] handler om og undersøger i dybden.
Alle sprog der er rekursive kan genkendes. Sprog som ikke er rekursive, men rekursive enumerable kan kun accepteres. Sprog der ikke er rekursive enumerable kan ikke engang accepteres.

== Se også ==
* [[Algebra]] og [[Logisk operator|logiske opratorer]]

== Eksterne links ==
* {{Citation
|first = Lars Marius
|last = Garshol
|date = 2008
|title = BNF and EBNF: What are they and how do they work?
|work = Stuff by Lars M. Garshol
|publisher = garshol.priv.no
|url = http://www.garshol.priv.no/download/text/bnf.html
}}
* {{Citation
|first = Klaus
|last = Thomsen
|date = 2006?
|title = DYNAMIK PÅ CANTOR MÆNGDEN
|work = Personal Web pages at the Department of Mathematics
|publisher = home.math.au.dk
|url = http://home.math.au.dk/matkt/RUC.pdf
}}

{{autoritetsdata}}
{{autoritetsdata}}



[[Kategori:Implementation af programmeringssprog]]
[[Kategori:Lingvistik]]
[[Kategori:Softwareudvikling]]

Versionen fra 5. sep. 2015, 09:47

Formalsprog betegner en abstraktion fra den normale opfattelse af hvad sprog er. Et formalsprog er kendetegnet ved at være en planlagt konstruktion med en bestemt prædikation. Konceptet indgår i lingvistiske og filosofiske terminologier, og anvendes også i datalogi og matematik.

Fastlæggelsen af et formalsprog

Formalsproget er en mængde af endelige strenge - der typisk nok hovedsageligt består af alfabetiske tegn. Et alfabet er i denne sammenhæng simpelthen en defineret tegnrække der ikke nødvendigvis stemmer overens med et naturligt sprogs alfabet.

Mængden af tegn noteres som . Man bruger kleene-operatoren til at fremstille en vilkårlig streng . Et formelt sprog L defineres herefter som:

eller

Nogle sprog kan formuleres direkte som en mængde af strenge. Et eksempel er:

Her betegner L det sprog der består af X og Y og hvor alle strenge er kortere end 5 tegn. udtrykkes kun eksplicit hvis det ikke fremgår af sammenhængen.

Genkendelse og accept

Man bruger forskellige beregningsmodeller til at genkende eller acceptere forskellige typer af sprog. Der er følgende muligheder:

  • Sproget kan genkendes: For en given streng giver beregningsmodellen svaret Ja eller Nej om den er indeholdt i sproget.
  • Sproget kan accepteres: For en given streng giver beregningsmodellen et positivt svar, hvis den er indeholdt i sproget, ellers looper den.[bør uddybes]
  • Sproget kan hverken genkendes eller accepteres. Nogle af disse sprog kan beskrives og andre kan ikke.

Det går for at være et datalogisk faktum at den sidste gruppe er den største. Mængden af 'sprog' der ikke kan genkendes og accepteres er overtællelig i modsætning til mængden af sprog der kan accepteres; deres mængde er tællelig. Beregneligheden af enkelte udsagn - også kaldet kompabilitetsteori - er et emne i diskret matematik.

Sprogklasser

En sprogklasse er en mængde af sprog. En sprogklasse kendetegnes eksempelvis ved at den genkendes af en given prædikerende beregningsmodel. Her er nogle sprogklasser, som hver især er en ægte delmængde af den efterfølgende:

  1. Regulære sprog, der kan genkendes af en endelig automat. Disse har relation til regulære udtryk.
  2. Kontekstfrie grammatikker, der kan genkendes af en push-down automat.
  3. Rekursive sprog, der kan genkendes af en turingmaskine.
  4. Rekursive enumerable sprog, der kan accepteres af en turingmaskine.
  5. Alle sprog:

Alle sprog der er rekursive kan genkendes. Sprog som ikke er rekursive, men rekursive enumerable kan kun accepteres. Sprog der ikke er rekursive enumerable kan ikke engang accepteres.

Se også

Eksterne links

  • Garshol, Lars Marius (2008), "BNF and EBNF: What are they and how do they work?", Stuff by Lars M. Garshol, garshol.priv.no
  • Thomsen, Klaus (2006?), "DYNAMIK PÅ CANTOR MÆNGDEN" (PDF), Personal Web pages at the Department of Mathematics, home.math.au.dk {{citation}}: Tjek datoværdier i: |date= (hjælp)