Un automate est un modèle abstrait d'un ordinateur numérique. Les ordinateurs numériques sont complètement déterministes; leur état à tout moment est uniquement prévisible à partir de l'entrée et de l'état initial.
Lorsque nous essayons de modéliser des systèmes réels, pourquoi inclure le non-déterminisme dans la théorie des automates?
Réponses:
Oui, vous avez raison, les ordinateurs sont automatisés déterministes. Les modèles non déterministes sont plus utiles à des fins théoriques, parfois la solution déterministe n'est pas aussi évidente pour la définition (ou dire l'énoncé du problème) et si peu difficile à trouver. Ensuite, une approche consiste à concevoir d'abord un modèle non déterministe qui peut être relativement facile à concevoir, puis à essayer de le convertir en un modèle déterministe. Ci-dessous, j'ai essayé de démontrer ce que je veux dire avec un exemple. Considérez l'expression régulière:
Supposons maintenant, si vous êtes invité à dessiner DFA pour la langue générée par RE ci-dessus.
Avec ma connaissance de la conception autorités fédérales, je sais que (1) lorsqu'un
*
présent dans l' expression régulière a indiqué que je besoin de boucle correspondante FA (2) opérations concaténer commea.b
moyen quelque chose comme: .(q0)─a→(q1)─b→(q2)
Donc, à ma première tentative, je dessinerais un NFA comme:
Pensé que ce n'est pas une solution déterministe mais semble très simple FA qui peut être facilement conçu en utilisant l'expression régulière donnée. Mon genre d'analogie pour montrer la similitude entre l'expression régulière ci-dessus et mon NFA est comme ci-dessous:
(01)*
01
(après(01)*
) donne(q0)─0→(q1)─1→(q2)
(0 + 1)*
donne une boucle automatique à l'état q 2 pour l'étiquette 0, 1Selon mon analogie, je pense que la FA que j'ai dessinée ci-dessus est relativement simple à tirer d'une RE donnée. Et heureusement, dans la classe des automates finis, chaque modèle non déterministe peut être converti en un modèle déterministe équivalent. Nous avons une méthode algorithmique pour convertir un NFA en DFA . Je peux donc facilement convertir au-dessus de NFA en DFA:
Une autre partie est malheureusement que ce n'est pas toujours possible de convertir un modèle non déterministe en un modèle déterministe, par exemple la classe pour l'automatisme push-down déterministe est un sous-ensemble de la classe de l'automate push-down déterministe "check venn diagram " et vous ne pouvez pas toujours convertir un NPDA dans un PDA.
Habituellement, lorsqu'il n'est pas possible de convertir une solution non déterministe en solution déterministe, à l'aide d'une solution non déterministe, nous définissons la solution déterministe dans un sous-domaine (ou, disons, un domaine partiel) au lieu d'un domaine complet. Ou nous définissons la solution d'une autre manière (par exemple une approche gourmande) qui bien sûr peut ne pas vous donner une solution optimale .
Parfois, le non-déterminisme est un mécanisme efficace pour décrire avec précision et efficacité certains problèmes / solutions complexes, par exemple, des machines non déterministes peuvent servir de modèle d'algorithme de recherche et de retour en arrière (lire: Comment le processus de chaîne dans un modèle non déterministe en utilisant le retour arrière) ). Des modèles déterministes opposés représentent mieux des solutions efficaces, minimisées et moins redondantes.
Ici, je voudrais également citer de Wikipedia Utilisation de l'algorithme non déterministe :
Comme @keshlam l'a également mentionné dans son commentaire : «Le non-déterminisme» est en pratique utilisé pour désigner toute imprévisibilité dans l'issue d'un processus. Par exemple, les programmes simultanés présentent un comportement non déterministe - deux exécutions du même programme avec la même entrée peuvent produire des résultats différents (si le mécanisme de contrôle de concurrence n'est pas appliqué). En savoir plus à ce sujet dans "Utilité du non-déterminisme" .
Je vous suggère également de lire les liens suivants:
1. Quelle est la différence entre le non-déterminisme et le hasard?
2. 9.2.2 Modèles non déterministes et probabilistes: (a). Non déterministe: je n'ai aucune idée de ce que la nature fera. (b). Probabiliste: J'ai observé la nature et collecté des statistiques.
3. Programmation non déterministe
la source
C'est plutôt l'inverse: les automates sont apparus en premier, sous forme de modèles mathématiques. Et le non-déterminisme est tout à fait naturel, vous avez souvent plusieurs voies ouvertes devant vous. Au lieu d'une façon désordonnée de spécifier que tous les chemins doivent être suivis jusqu'à la fin dans un certain ordre, et peut-être s'enliser dans des branches infinies, et ... utilisez simplement le non-déterminisme.
Et bien que les langages de programmation non déterministes ne soient pas courants, ils ont une histoire illustre, commençant peut-être par le GCL de Dijkstra . Alors que les machines utilisent de plus en plus de cœurs (processeurs indépendants), une certaine forme de non-déterminisme s'infiltre dans toute la programmation.
la source
Les NFA peuvent être utilisés dans la pratique, consultez cette réponse sur stackexchange. La raison en est que la construction du jeu de puissance peut être simulée à la volée, pour ainsi dire. Afin de simuler un NFA sur un ordinateur déterministe, nous gardons simplement une trace des états possibles dans lesquels le NFA pourrait être. Typiquement, ce nombre serait petit, et donc la simulation serait rapide. C'est beaucoup plus pratique que d'exécuter la construction réelle du jeu de puissance: l'automate résultant pourrait être très grand, même si en pratique la plupart des ensembles seraient rarement atteints.
Le non-déterminisme est également important pour la complexité du calcul, où il est utilisé pour définir la classe NP. (La classe NP a également d'autres définitions équivalentes, par exemple en utilisant des témoins.)
la source
Vous déclarez correctement que les automates sont des modèles, il y a donc deux parties d'utilisation que le non-déterminisme peut avoir:
Utilisation dans la modélisation de problèmes réels.
De plus, les automates non déterministes peuvent fournir des représentations plus compactes des langues. Par exemple, il est bien connu qu'il existe des NFA dont le DFA équivalent minimal est exponentiellement plus grand.
Utilisation en théorie.
L'utilisation du non-déterminisme peut simplifier les preuves, voir par exemple la conversion d'expressions régulières en automates finis.
la source
(Il s'agit d'une reformulation de certaines des autres réponses, mais je les publierai quand même :)
Vous écrivez: Un automate est un modèle abstrait d'un ordinateur numérique.
Je ne suis pas d'accord! Les automates modélisent la façon dont nous, les humains, spécifions le calcul, pas seulement la façon dont les ordinateurs l'exécutent. Le non-déterminisme est exactement la différence. Nos spécifications sont souvent non déterministes.
Par exemple, prenez le tri par fusion . Le tri par fusion consiste à trier les éléments à trier en deux moitiés de taille à peu près égale, à trier chaque moitié à l'aide du tri par fusion et à fusionner les résultats triés. Cela spécifie complètement l'idée du tri par fusion, mais ce n'est pas déterministe: cela ne spécifie pas un ordre dans lequel trier les moitiés (pour tout ce qui nous intéresse, cela peut être fait simultanément), ni ne spécifie un moyen exact de déterminer la scission. Ces détails devront être remplis afin d'arriver à une version déterministe et séquentielle du tri par fusion qui peut être implémentée par un programme informatique à un seul thread, mais je dirais qu'ils font partie d'une façon particulière de faire un tri par fusion, non l'idée de fusion se trie.
La même chose est vraie pour les algorithmes en général - par exemple les recettes de livres de cuisine. Certaines personnes définissent les algorithmes comme étant déterministes, auquel cas cette notion plus générale et à mon avis plus naturelle d '«algorithme» a besoin d'un nom différent.
L'idée de travailler avec des spécifications non déterministes a été formalisée par la méthode de programmation de Dijkstra, qui commence par des spécifications qui ne donnent que des pré- et postconditions à respecter par le programme, et développe systématiquement un programme déterministe et impératif à partir de celles-ci. Dijkstra aurait probablement dit: le tri est le problème, la relation entre les pré- et post-conditions que nous essayons d'établir; tri par fusionest une approche pour le faire, quelque part à mi-chemin entre la spécification du problème et une solution déterministe; un algorithme de tri de fusion déterministe particulier est une solution déterministe concrète. Mais la même approche générale peut être utilisée pour développer des programmes simultanés, dans lesquels le programme éventuel n'est toujours pas déterministe. De tels programmes peuvent par exemple être exécutés dans des environnements informatiques distribués.
la source
Vous avez raison, nous ne pouvons PAS construire une machine non déterministe. Par conséquent, l'objectif n'est pas d'utiliser le concept pour construire de meilleures machines. Au contraire, le non-déterminisme est un concept utile lorsque l'on essaie de comprendre le calcul. Par exemple, nous savons maintenant que, du point de vue de la calculabilité, le non-déterminisme n'est pas quelque chose de plus puissant que le déterminisme, ce qui signifie que nous pouvons simuler une machine non déterministe en utilisant une machine déterministe. Cependant, du point de vue de la complexité, le non-déterminisme nous permet, par exemple, de raisonner et d'essayer de comprendre la relation entre la difficulté de trouver une solution efficace à un problème et la difficulté de vérifier une solution (qui est le fameux problème P versus NP) . Etc. Par conséquent, la principale raison d'étudier le non-déterminisme est théorique.
la source
l'invention de la machine de Turing a été en 1936 par Turing. Des modèles de type FSM ont été introduits par McCulloch et Pitts , deux neurophysiologistes, comme modèle d'activité neurobiologique en 1943. à partir de la page d'histoire de Stanford CS :
pas un historien CS, mais soupçonne que le modèle McCulloch-Pitts n'incluait pas le non-déterminisme et le modèle Mealy - Moore l' a fait, dans une généralisation / abstraction naturelle du concept formel / théorique. notons que les DFA et les NFA ont le même pouvoir de représentation, de sorte que si l'on souhaite modéliser des systèmes réels, il y a le choix entre les deux. une différence fondamentale est qu'un NFA peut être beaucoup plus petit qu'un DFA équivalent (il existe donc par exemple un élément naturel de compression des données / informations). il y a aussi des aspects / analogues naturels du parallélisme dans l'étude NFA.
la source
Tout d'abord, je tiens à remercier toutes les personnes qui ont répondu à la question.Toutes les réponses sont importantes et ajoutent des informations utiles.Mais comme c'est une question délicate pour les débutants et qui a besoin de suffisamment de temps pour bien la comprendre, je essaierait de résumer ce que j'ai gagné de toutes les réponses et de certains livres:
En fait, j'avais une confusion qui concernait le mécanisme du modèle non déterministe. Je me suis toujours interrogé sur la machine non déterministe car c'est une machine non mécanique qui n'existe pas dans le monde réel. J'ai toujours comparé Automata avec nos ordinateurs actuels qui sont de nature complètement déterministe, et je ne comprenais pas bien le modèle non déterministe. Maintenant, je pense que je comprends assez bien le modèle non terminologique: une machine non déterministe est une machine qui suit toujours ce chemin d'exécution qui conduit à l'acceptation de la chaîne (sans retour arrière), mais comment cela peut-il être possible dans la vie réelle? : Il est absolument impossible pour un ordinateur actuel d'être aussi intelligent pour prédire l'avenir. Alors pourquoi le non-déterminisme du tout?. La réponse à cette question est assez délicate, ce que j'ai conclu à ce sujet, c'est que: La théorie des automates existait lorsque les ordinateurs n'existaient pas (première théorie puis pratique). Il s'agit d'un sujet purement théorique et le concept de non-déterminisme est venu intuitivement. Le motif du sujet «Théorie des automates» n'était pas de traiter des ordinateurs pratiques. Mais lorsque pratiquement l'ordinateur arrive, alors en utilisant la théorie des automates, nous sommes en mesure de définir précisément les ordinateurs pratiques: quelles sont les limites des ordinateurs actuels.qui le problème algorithmique est très complexe pour les ordinateurs et si peu pratique (ici, le rôle du non-terminisme est très crucial pour lequel nous peut distinguer deux classes de complexité P et NP) .Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme. Il s'agit d'un sujet purement théorique et le concept de non-déterminisme est venu intuitivement. Le motif du sujet «Théorie des automates» n'était pas de traiter des ordinateurs pratiques. Mais lorsque pratiquement l'ordinateur arrive, alors en utilisant la théorie des automates, nous sommes en mesure de définir précisément les ordinateurs pratiques: quelles sont les limites des ordinateurs actuels.qui le problème algorithmique est très complexe pour les ordinateurs et si peu pratique (ici, le rôle du non-terminisme est très crucial pour lequel nous peut distinguer deux classes de complexité P et NP) .Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme. Il s'agit d'un sujet purement théorique et le concept de non-déterminisme est venu intuitivement. Le motif du sujet «Théorie des automates» n'était pas de traiter des ordinateurs pratiques. Mais lorsque pratiquement l'ordinateur arrive, alors en utilisant la théorie des automates, nous sommes en mesure de définir précisément les ordinateurs pratiques: quelles sont les limites des ordinateurs actuels.qui le problème algorithmique est très complexe pour les ordinateurs et si peu pratique (ici, le rôle du non-terminisme est très crucial pour lequel nous peut distinguer deux classes de complexité P et NP) .Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme. Mais lorsque pratiquement l'ordinateur arrive, alors en utilisant la théorie des automates, nous sommes en mesure de définir précisément les ordinateurs pratiques: quelles sont les limites des ordinateurs actuels.qui le problème algorithmique est très complexe pour les ordinateurs et si peu pratique (ici, le rôle du non-terminisme est très crucial pour lequel nous peut distinguer deux classes de complexité P et NP) .Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme. Mais lorsque pratiquement l'ordinateur arrive, alors en utilisant la théorie des automates, nous sommes en mesure de définir précisément les ordinateurs pratiques: quelles sont les limites des ordinateurs actuels.qui le problème algorithmique est très complexe pour les ordinateurs et si peu pratique (ici, le rôle du non-terminisme est très crucial pour lequel nous peut distinguer deux classes de complexité P et NP) .Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme. Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme. Quelles sont les solutions à ces problèmes impraticables par lesquelles il peut être exécuté relativement plus rapidement.etc. C'est l'utilité du non-déterminisme.
Veuillez me corriger s'il y a un problème.
la source
le non-déterminisme est utile car il vous aide à comprendre le déterminisme, mais pas l'inverse. On pourrait dire que le non-déterminisme est l'idée la plus importante. Une machine de Turing déterministe est un cas particulier d'une machine non déterministe. - Le non-déterminisme peut nous aider à comprendre pourquoi, sur les plateformes d'aujourd'hui, certains problèmes sont difficiles à cerner. Il existe un certain nombre de problèmes de calcul qui n'ont pas de solution efficace sur une plate-forme informatique déterministe, mais nous comprenons qu'il peut y avoir des solutions efficaces sur des plates-formes non déterministes. ... état, encodage, non-déterminisme, ils sont tous liés http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf
Dans une machine de Turing déterministe, l'ensemble de règles prescrit au plus une action à effectuer pour une situation donnée. Une machine de Turing non déterministe (NTM), en revanche, peut avoir un ensemble de règles qui prescrivent plus d'une action pour une situation donnée. http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine Si vous pouvez créer une boîte logicielle qui gère si bien les transitions d'état qu'elle peut gérer plus d'une action, vous pouvez obtenir des performances au-delà des machines déterministes.
la source
Le déterminisme a une forte tendance à briser les symétries. Cette tendance est encore plus forte pour le déterminisme séquentiel, mais la notion de graphe orienté acyclique et un ordre topologique d'un tel graphe permet d'ignorer la différence entre déterminisme et déterminisme séquentiel. Le non-déterminisme est un sur-ensemble du déterminisme, qui permet de conserver plus de symétries. Lors de la conception de la solution d'un problème, commencer par la solution non déterministe permet de conserver des symétries utiles, et qui maintient la description de la solution petite et compacte. La rupture des symétries peut ensuite être déléguée à un stade ultérieur lors de la mise en œuvre, tout en convertissant la solution non déterministe en solution déterministe.
Souvent, le non-déterminisme signifie que la notion de fonction partielle est remplacée par la notion de relation. Dans ce cas, une machine non déterministe peut fonctionner à la fois en avant et en arrière dans le temps, ce qui n'est généralement pas possible pour une machine déterministe. Si nous travaillons avec des fonctions totales pour le déterminisme et des fonctions totales à valeurs multiples pour le non-déterminisme à la place, la symétrie n'est plus aussi agréable, mais elle peut toujours fonctionner.
la source