Język formalny: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
Usunięta treść Dodana treść
drobne redakcyjne |
m drobne redakcyjne |
||
Linia 1:
{{Dopracować|źródła=2013-09
'''Język formalny''' – [[podzbiór]] [[zbiór|zbioru]] wszystkich słów nad skończonym alfabetem. Język formalny jest kluczowym pojęciem w [[informatyka|informatyce]], [[logika matematyczna|logice matematycznej]] i [[językoznawstwo|językoznawstwie]]. Język formalny nie jest uściśleniem pojęcia [[język (mowa)|języka naturalnego]] i nie powinien być z nim mylony.
Linia 24:
Alfabetami nie mogą być:
* zbiór pusty
* zbiory [[nieskończoność|nieskończone]], np. zbiór wszystkich [[liczby naturalne|liczb naturalnych]]
=== Słowo ===
Słowami są dowolne skończone ciągi symboli. Przykładowe słowa to:
* [[słowo|słowa]] języka naturalnego, np.
* słowo puste (nad dowolnym alfabetem), oznaczane <math>\epsilon</math>,
* [[liczba]] zapisana w systemie [[dziesiętny system liczbowy|dziesiętnym]] (jeśli alfabet obejmuje cyfry arabskie) lub [[rzymski system zapisywania liczb|rzymskim]] (jeśli alfabet obejmuje znaki I, V, X, L, C, M, D),
Linia 36:
Słowami nie są:
* ciągi o nieskończonej długości, np. reprezentacje [[liczby niewymierne|liczb niewymiernych]] w systemie dziesiętnym
* nieuporządkowane zbiory symboli, np. zbiór samogłosek.
Linia 42:
W niektórych zastosowaniach, przydatne jest operowanie na ciągach elementów z nieskończonego zbioru, np. zbioru liczb naturalnych. Zbiór takich ciągów nie jest językiem, ale to ograniczenie można obejść, jeśli tylko zbiór używanych elementów jest przeliczalny. Wtedy te elementy można przedstawić jako słowa nad skończonym alfabetem.
Przykładowo, aby operować na ciągach liczb naturalnych, zapisuje się te liczby w sposób pozycyjny. Np. ciąg
== Metody definiowania języków ==
Dla każdego alfabetu (nawet jednoelementowego), liczba słów nad tym alfabetem jest '''nieskończona''' i [[zbiór przeliczalny|przeliczalna]] (oznaczana <math>\aleph_0</math>). Liczba zbiorów słów (liczba języków), jest zatem [[zbiór nieprzeliczalny|nieprzeliczalna]]. Ponieważ każda metoda opisania może objąć tylko przeliczalną liczbę elementów, nie istnieje metoda opisania wszystkich języków nad żadnym niepustym alfabetem. Dlatego opisuje się jedynie wybrane klasy języków. Przykładowo [[hierarchia
=== Gramatyki formalne ===
Linia 82:
=== Należenie słowa do języka ===
Nie istnieje ogólna metoda, która dla danej gramatyki
Przykładowo, [[hierarchia
* [[Gramatyka regularna|Gramatyki regularne]] – rozpoznawalne przez [[automat skończony|automaty skończone]],
* [[Gramatyka bezkontekstowa|Gramatyki bezkontekstowe]] – rozpoznawalne przez [[automat ze stosem|automaty ze stosem]],
Linia 92:
== Języki formalne a języki naturalne ==
{{Osobny artykuł|tłumaczenie automatyczne}}
Języki formalne są używane do opisu języków naturalnych, choć nie jest to łatwe. Od 1956 roku stosowane są np. tzw. [[gramatyka generatywna|gramatyki generatywne]]
Aktualnie istnieje wiele systemów komercyjnych przetwarzających język naturalny. Tłumaczenie wolnego tekstu jest bardzo niedokładne, pozwala jednak zrozumieć treść i wspomaga pracę tłumaczy (przyspieszenie nawet 4 razy){{fakt|data=2011-01}}. Lepsze wyniki zostały osiągnięte w tłumaczeniu tekstów specjalistycznych.
== Linki zewnętrzne ==
* [http://wazniak.mimuw.edu.pl/index.php?title=J%C4%99zyki%2C_automaty_i_obliczenia Języki, automaty i obliczenia] (materiały dydaktyczne [[Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego|MIMUW]] na studia informatyczne I stopnia)
* [http://wazniak.mimuw.edu.pl/index.php?title=Semantyka_i_weryfikacja_program%C3%B3w Semantyka i weryfikacja programów] (materiały dydaktyczne [[Wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego|MIMUW]] na studia informatyczne II stopnia)
[[Kategoria:Języki formalne|*]]
|