Tous les langages sans contexte et réguliers sont-ils décidables de manière efficace?


12

Je suis tombé sur cette figure qui montre que les langages sans contexte et réguliers sont des sous-ensembles (appropriés) de problèmes efficaces (supposément ). Je comprends parfaitement que les problèmes efficaces sont un sous-ensemble de tous les problèmes décidables car nous pouvons les résoudre, mais cela peut prendre très longtemps.P

Pourquoi tous les langages sans contexte et réguliers sont-ils décidables efficacement? Est-ce que cela signifie que les résoudre ne prendra pas longtemps (je veux dire que nous le savons sans plus de contexte)?

entrez la description de l'image ici


3
Par curiosité, où avez-vous trouvé cette figure? Il peut être utile d'avoir un contexte à expliquer, car «efficace» n'est pas une notion formelle et différentes personnes peuvent l'utiliser pour signifier des choses différentes.
Gilles 'SO- arrête d'être méchant'

2
PP

@Raphael: Dans ce contexte, efficace est une classe de langages décidables en temps polynomial. J'ai utilisé "cela pourrait prendre très longtemps" pour les problèmes décidables par opposition aux problèmes indécidables pour lesquels nous ne pouvons pas trouver de solutions dans un laps de temps limité.
Gigili

la bonne façon technique de dire ceci est que déterminer si w∈L où w est un mot et L est une langue est en P. ie / aka "reconnaissance de la langue"
vzn

Réponses:


15

O(n)

O(n3)

PEXPTIMEP


2
Vous voudrez peut-être mentionner l'algorithme de multiplication matricielle pour les grammes sans contexte qui a un meilleur temps d'exécution, et que cet algorithme fonctionne très efficacement (linéairement) sur à peu près n'importe quelle grammaire sans contexte pratique: sciencedirect.com/science/article/pii / 030439759190180A
Alex ten Brink

@AlextenBrink Je ne pense pas que cette question demande une granularité plus fine que "polynomial or not".
Raphael

1
O(n)

1
En fait, pour les langues régulières, vous n'avez même pas besoin explicitement d'automates déterministes. Vous simulez tous les calculs en parallèle en gardant une trace de tous les états de cette manière en imitant la construction du jeu de puissance.
Hendrik Jan

1
@Dave: linéaire dans la longueur de la chaîne d'entrée, pour un langage régulier fixe, comme les autres complexités données ici.
Hendrik Jan

1

Affinement / "petits caractères" sur réponse de DC: tous les CFL sous forme de Chomsky Normal Form peuvent être analysés efficacement avec l'algorithme CYK et tous les CFL peuvent être convertis en CNF. Cependant, la conversion d' un CFL arbitraire en CNF peut prendre de l'espace exponentiel dans le pire des cas en fonction de certains algorithmes. (Je ne connais pas d'algorithme garantissant la conversion du temps P ici, est-ce quelqu'un d'autre? Il faut considérer tous les cas extrêmes / pires tels que les LFC non déterministes ou ambiguës .) Wikipédia déclare dans la section CNF Ordre des transformations

|G|222|G|

Il semble donc qu'il puisse exister des LFC qui ne sont pas efficacement analysables. La plupart des langages de programmation sont efficacement convertibles en CNF (ou peut-être principalement définis en CNF ou presque CNF), donc l'analyse syntaxique CFL pour les langages "typiques" est "pratiquement" en P. trouver des articles récents sur la recherche rapide). Par exemple, ce document de recherche plus ancien (1973) de Greibach semble également indiquer que les performances dans le pire des cas peuvent ne pas être limitées par P. voir par exemple.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.