Je lis " Concaténation des langues régulières et complexité descriptive " par Galina Jiraskova, 2009 sur la complexité de l'état résultant de la concaténation de deux langues régulières (par Galina Jiraskova), mais je ne comprends pas quelles seraient les implications pratiques de la complexité de l'état. . La première pensée triviale qui m'a frappé était qu'une complexité plus élevée nécessiterait plus de temps et d'espace pour la machine. Est-ce correct? Y a-t-il également d'autres endroits où la complexité de l'État est pertinente et significative?
Edit: La complexité d'état d'une langue régulière est le plus petit nombre d'états dans n'importe quel automate fini déterministe (dfa) acceptant la langue. La complexité d'état non déterministe d'une langue régulière est définie comme le plus petit nombre d'états dans un automate fini non déterministe (nfa) pour la langue.
Réponses:
La complexité des états est vraiment une description concise d'un objet (dans ce cas, un langage normal), pas une complexité de calcul. Le sujet général est appelé «complexité descriptive» dans la littérature et s'inspire, en partie, de l'article classique de Meyer et Fischer de 1971 intitulé «Economy of Expression by Automata, Grammars, and Formal Systems» (voir http: // people .csail.mit.edu / meyer / économie-de-description.pdf ). Il s'agit toujours d'un domaine actif, avec une conférence annuelle (DCFS - Descriptional Complexity of Formal Systems).
En ce qui concerne les applications, tout endroit où votre programme repose essentiellement sur une machine à états finis (par exemple, des analyseurs), il sera bon d'avoir cette machine à états finis aussi petite que possible.
la source
Permettez-moi d'ajouter un exemple concret à l'excellente réponse de Jeffrey Shallit.
Supposons que vous souhaitiez créer un dictionnaire Scrabble (TM). Vous pouvez penser à plusieurs façons de représenter votre dictionnaire, comme une liste de mots, des essais (arbres de lettres) ou des automates déterministes. Selon [1], minimiser un trie à un dawg [= DFA] produit une économie d'espace incroyable; le nombre de nœuds est réduit de 117 150 à 19 853. Le lexique représenté comme une liste de mots bruts prend environ 780 kilo-octets, tandis que notre dawg peut être représenté en 175 kilo-octets.
Comme vous pouvez le voir, la complexité de l'état importe vraiment dans ce cas, surtout si vous voulez écrire un programme efficace comme l'ont fait les auteurs.
[1] Appel et Jacobson Le programme de scrabble le plus rapide au monde , Communications de l'ACM 31 , 572-578 (1988).
la source
La preuve qu'il est possible de déterminer si une grammaire arbitraire sans contexte déterministe (ou de manière équivalente un automate déterministe pushdown) a un automate à états finis équivalent décrivant le même langage est essentiellement une preuve de la complexité des états des automates finis décrivant des langages sans contexte déterministes: la limite de la taille de ces automates finis en termes d'automates déterministes donne des limites sur la durée de la procédure de décision.
Pour plus de détails, voir « Régularité et problèmes associés pour les automates déterministes à refoulement » par Leslie G. Valiant.
la source