Język rekurencyjny

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Język rekurencyjny – rodzaj języka formalnego, dla którego z podanymi regułami jego składni da się opracować automatyczny sposób sprawdzania, czy dane słowo jest zbudowane zgodnie z tymi regułami (tzn. czy należy do języka).

W teorii złożoności oznaczana jest literą R[1]. Klasa języków rekurencyjnych nie została uwzględniona w hierarchii Chomskiego.

Definicje formalne

Istnieją dwie równoważne definicje języków rekurencyjnych. Język formalny L nazywa się językiem rekurencyjnym, gdy:

  1. jest on podzbiorem rekurencyjnym zbioru wszystkich słów nad alfabetem tego języka.
  2. istnieje maszyna Turinga ML, która dla każdego słowa x zatrzyma się i da odpowiedzi:
    • Jeśli xL, to ML(x)= tak
    • Jeśli x∉L, to ML(x)= nie

Innymi słowy, język nazywamy rekurencyjnym, jeżeli istnieje dla niego maszyna Turinga jednoznacznie rozstrzygająca, czy słowo x należy do języka czy nie[2].

Właściwości

Ogólne właściwości języków rekurencyjnych:

  1. Każdy język rekurencyjny jest językiem rekurencyjnie przeliczalnym[3].
  2. Język L jest językiem rekurencyjnym wtedy i tylko wtedy, gdy zarówno L, jak i jego dopełnienie L są rekurencyjnie przeliczalne[4].

Języki rekurencyjne są zamknięte ze względu na następujące operacje:

  1. Domknięcie Kleene’ego L*
  2. Homomorfizm ϕ(L) bez przekształceń ϕ(x)=ϵ dla każdego x=ϵ
  3. Konkatenację L1L2
  4. Sumę teoriomnogościową L1L2
  5. Iloczyn teoriomnogościowy L1L2
  6. Dopełnienie L[4]
  7. Różnicę L1L2

Zobacz też

Przypisy

Szablon:Przypisy

Szablon:Języki formalne i gramatyki