Les algorithmes randomisés (temps polynomial, résultat booléen) sont dans la classe de complexité de calcul RP, qui est un sous-ensemble de NP où résident des algorithmes non déterministes (temps polynomial, résultat booléen) et un sur-ensemble de P où déterministe (temps polynomial, résultat booléen) les algorithmes résident.
Le sous-ensemble de la complexité consiste à réduire les problèmes d'un ensemble à un autre ensemble. Ainsi, RP ⊆ NP exclut la possibilité d'algorithmes randomisés qui sont également non déterministes car, par définition, un sur-ensemble contient le sous-ensemble. Sous-ensemble signifie que chaque algorithme RP (ou n'importe quel algorithme RP-complet) peut être réduit à un algorithme NP (ou tout algorithme NP-complet). P est un sous-ensemble de RP car chaque problème dans P peut être réduit à un problème dans RP où la quantité d'entropie non contrôlée est de 0.
Tangentiellement, cela est analogue à la façon dont chaque problème en NC (calcul parallèle) peut être réduit à un problème en P en simulant le calcul parallèle en une réduction à un problème série en P mais il n'est pas encore prouvé que l'inverse soit vrai, c'est-à-dire que chaque problème dans P est réductible à un problème dans NC, ni prouvé faux, c'est-à-dire la preuve invraisemblable qu'un problème P-complet n'est pas réductible à un problème dans NC. Il peut être possible qu'il y ait des problèmes qui sont intrinsèquement sériels et ne peuvent pas être calculés en parallèle, mais prouver que prouver P ≠ NC semble peu plausible (pour des raisons trop tangentielles pour être discutées dans cette réponse).
Plus généralement (c'est-à-dire non limité aux types de résultats booléens), les algorithmes randomisés se distinguent des algorithmes déterministes en ce qu'une partie de l'entropie est d'origine externe . Les algorithmes randomisés se distinguent des algorithmes non déterministes car l'entropie est bornée , et il est donc prouvé que les algorithmes randomisés (et non non déterministes) se terminent toujours.
L'imprévisibilité des algorithmes non déterministes est due à l' incapacité d' énumérer toutes les permutations possibles de l'entropie d'entrée (ce qui entraîne une imprévisibilité de la terminaison). L'imprévisibilité d'un algorithme randomisé est due à l' incapacité de contrôlertoute l'entropie d'entrée (ce qui entraîne une imprévisibilité d'un résultat indéterminé, bien que le taux d'imprévisibilité puisse être prévu). Ni l'un ni l'autre de ceux-ci ne sont des déclarations sur l'imprévisibilité de la bonne réponse au problème, mais plutôt l'imprévisibilité se manifeste dans le canal latéral de terminaison et de résultat indéterminé respectivement. Il semble que de nombreux lecteurs confondent l'imprévisibilité dans un domaine avec l'imprévisibilité du résultat correct, ce qui est une confusion que je n'ai jamais écrite (consultez l'historique des modifications).
Il est essentiel de comprendre que le non-déterminisme est toujours (dans toute science ou usage du terme) l'incapacité à énumérer l'entropie universelle (c'est-à-dire sans limite). Alors que la randomisation fait référence à l'accès à une autre source d'entropie (dans des programmes entropiques autres que et donc non contrôlés par les variables d'entrée) qui peut ou non être illimitée.
J'ai ajouté le commentaire suivant ci-dessous la réponse actuellement la plus populaire à l'autre fil qui pose une question similaire.
Toutes les sciences utilisent la même définition du non-déterminisme unifié sur le concept d'entropie illimitée. Les résultats imprévisibles dans toutes les sciences sont dus à l'incapacité d'énumérer a priori toutes les sorties possibles d'un algorithme (ou système) car il accepte des états illimités, c'est-à-dire la classe de complexité NP. Spécifier une entrée particulière pour observer si elle s'arrête et noter que le résultat est idempotent équivaut dans d'autres sciences à maintenir le reste de l'entropie de l'univers constant tout en répétant le même changement d'état. L'informatique permet cet isolement d'entropie, contrairement aux sciences naturelles.
Ajouter certains des meilleurs commentaires pour clarifier mon point de vue sur la seule distinction saillante entre randomisé et non déterministe.
Il est vraiment assez élégant et facile de voir la distinction, une fois que vous arrêtez tous de l'embrouiller en essayant de la décrire d'un point de vue opérationnel plutôt que du point de vue de l'entropie saillante.
@reinierpost tout le monde confond la différence entre randomisé et non déterministe. Cela rend votre commentaire confus. L'algorithme répond à l'interaction de l'entropie d'entrée (variable) et de son entropie interne (invariante) de code source. Le non-déterminisme est une entropie illimitée. L'entropie invariante peut même être illimitée en interne, comme l' expansion des chiffres de π . Randomisé est qu'une partie de l'entropie n'est pas couplée à l'entrée telle que définie (c'est-à-dire qu'elle peut provenir d'un appel système à /dev/random
, ou d'un caractère aléatoire simulé, par exemple NFA ou PRNG).
.
La définition formelle @Raphael de l'automate fini non déterministe (NFA) est l'entropie d'entrée finie (données: le 5-tuple). Ainsi, chaque NFA peut fonctionner sur une machine de Turing déterministe, c'est-à-dire qu'il ne nécessite pas de machine complète de Turing non déterministe. Ainsi, les NFA ne sont pas dans la classe des problèmes non déterministes. La notion de "non-déterminisme" dans NFA est que son déterminisme (bien que clairement présent puisque chaque NFA peut être converti en DFA) n'est pas explicitement développé - pas la même chose que le non-déterminisme du calcul
.
@Raphael le "non-déterminisme" revendiqué dans les NFA est vraiment le hasard est le sens de ma définition de la distinction entre le hasard et le non-déterminisme. Ma définition est que l'aléatoire est une partie de l'entropie qui n'est pas sous le contrôle, la connaissance (ou l'expansion non explicite souhaitée dans le cas d'un NFA) de l'entrée du programme ou de la fonction. Alors que le vrai non-déterminisme est l'incapacité à connaître l'entropie dans tous les cas, car elle est illimitée. C'est précisément ce qui distingue randomisé du non-déterminisme. La NFA devrait donc être un exemple de la première et non de la seconde, comme vous l'avez affirmé.
.
@Raphael comme je l'ai déjà expliqué, la notion de non-déterminisme dans les NFA associe le non-déterministe à l'entropie finie. Ainsi, le non-déterminisme est un concept local de ne pas étendre le déterminisme comme une forme de compression ou de commodité, donc nous ne disons pas que les NFA sont non-déterministes, ils ont plutôt l'apparence de l'aléatoire pour un oracle peu disposé à calculer l'expansion déterministe. Mais tout cela n'est qu'un mirage car il appelle être étendu de façon déterministe car l'entropie n'est pas illimitée, c'est-à-dire finie.
Les dictionnaires sont des outils. Apprenez à les utiliser.
adjectif aléatoire
Statistiques. de ou caractérisant un processus de sélection dans lequel chaque élément d'un ensemble a une probabilité égale d'être choisi.
étant ou se rapportant à un ensemble ou à un élément d'un ensemble dont chacun des éléments a une probabilité d'occurrence égale
Ainsi, la randomisation nécessite seulement qu'une partie de l'entropie d'entrée soit équiprobable, ce qui est donc conforme à ma définition qu'une partie de l'entropie d'entrée ne soit pas contrôlée par l'appelant de la fonction. Notez que la randomisation ne nécessite pas que l'entropie d'entrée soit indécidable par rapport à la terminaison.
En informatique, un algorithme déterministe est un algorithme qui, étant donné une entrée particulière, produira toujours la même sortie, la machine sous-jacente passant toujours par la même séquence d'états.
Formellement, un algorithme déterministe calcule une fonction mathématique; une fonction a une valeur unique pour toute entrée dans son domaine, et l'algorithme est un processus qui produit cette valeur particulière en sortie.
Les algorithmes déterministes peuvent être définis en termes de machine à états: un état décrit ce qu'une machine fait à un instant donné. Les machines à états passent discrètement d'un état à l'autre. Juste après avoir entré l'entrée, la machine est dans son état initial ou dans son état de démarrage. Si la machine est déterministe, cela signifie qu'à partir de ce moment, son état actuel détermine quel sera son prochain état; son parcours à travers l'ensemble des états est prédéterminé. Notez qu'une machine peut être déterministe et ne jamais s'arrêter ou terminer, et donc ne pas fournir de résultat.
Cela nous dit donc que les algorithmes déterministes doivent être complètement déterminés par l'état d'entrée de la fonction, c'est-à-dire que nous devons être en mesure de prouver que la fonction se terminera (ou ne se terminera pas) et que cela ne peut pas être indécidable. Malgré la tentative confuse de Wikipédia de décrire non déterministe, la seule antithèse déterministe telle que définie ci-dessus par Wikipedia, ce sont les algorithmes dont l'état d'entrée (entropie) est mal défini. Et la seule façon dont l'état d'entrée peut être mal défini est lorsqu'il est illimité (il ne peut donc pas être pré-analysé de façon déterministe). C'est précisément ce qui distingue une machine de Turing non déterministe (et de nombreux programmes du monde réel qui sont écrits dans des langages complets de Turing courants tels que C, Java, Javascript, ML, etc.) des MT déterministes et des langages de programmation tels que HTML, les formules de feuille de calcul, Coq, Epigram,
Dans la théorie de la complexité computationnelle, les algorithmes non déterministes sont ceux qui, à chaque étape possible, peuvent permettre de multiples continuations (imaginez un homme marchant sur un chemin dans une forêt et, chaque fois qu'il va plus loin, il doit choisir la fourche de la route qu'il souhaite prendre). Ces algorithmes n'arrivent pas à une solution pour chaque chemin de calcul possible; cependant, ils sont garantis d'arriver à une solution correcte pour un certain chemin (c'est-à-dire que l'homme qui traverse la forêt ne peut trouver sa cabane que s'il choisit une combinaison de chemins "corrects"). Les choix peuvent être interprétés comme des suppositions dans un processus de recherche.
Wikipédia et d'autres tentent de confondre la randomisation avec le non-déterminisme, mais quel est l'intérêt d'avoir les deux concepts si vous ne les distinguez pas avec éloquence?
Il est clair que le déterminisme concerne la capacité de déterminer. Il est clair que la randomisation consiste à rendre une partie de l'entropie équiprobable.
L'inclusion d'entropie aléatoire dans l'état d'un algorithme ne le rend pas nécessairement indéterminable. Par exemple, un PRNG peut avoir la distribution statistique équiprobable requise, mais aussi être entièrement déterministe.
Les concepts orthogonaux contradictoires sont ce que les personnes à faible QI. J'attends mieux que ça de cette communauté!