Différences et relations entre les algorithmes randomisés et non déterministes?

30

Quelles sont les différences et les relations entre les algorithmes randomisés et les algorithmes non déterministes?

De Wikipédia

Un algorithme randomisé est un algorithme qui utilise un degré d'aléatoire dans le cadre de sa logique. L'algorithme utilise généralement des bits uniformément aléatoires comme entrée auxiliaire pour guider son comportement, dans l'espoir d'obtenir de bonnes performances dans le "cas moyen" sur tous les choix possibles de bits aléatoires. Formellement, les performances de l'algorithme seront une variable aléatoire déterminée par les bits aléatoires; ainsi, soit le temps d'exécution, soit la sortie (ou les deux) sont des variables aléatoires.

Un algorithme non déterministe est un algorithme qui peut présenter différents comportements sur différentes exécutions, par opposition à un algorithme déterministe. Il existe plusieurs façons dont un algorithme peut se comporter différemment d'une exécution à l'autre. Un algorithme simultané peut fonctionner différemment sur différentes courses en raison d'une condition de concurrence . Le comportement d'un algorithme probabiliste dépend d'un générateur de nombres aléatoires. Un algorithme qui résout un problème en temps polynomial non déterministe peut s'exécuter en temps polynomial ou en temps exponentiel selon les choix qu'il fait lors de l'exécution.

Les algorithmes randomisés et les algorithmes probabilistes sont-ils le même concept?

Si oui, les algorithmes randomisés ne sont-ils qu'une sorte d'algorithmes non déterministes?

Tim
la source
Je pense qu'une partie de la confusion vient du fait que "non déterministe" et "non déterministe" sonnent comme s'ils devraient signifier la même chose, mais ils ne le font pas: "déterministe" implique "non aléatoire" et "non non déterministe". Ainsi, "aléatoire" et "non déterministe" sont les deux façons dont un algorithme pourrait être "non déterministe", mais "non déterministe" a une définition technique spécifique, et n'est pas simplement un antonyme pour "déterministe".
Joe
3
Voir aussi Quelle est la différence entre le non-déterminisme et le hasard?
Gilles 'SO- arrête d'être méchant'

Réponses:

24

Les algorithmes non déterministes sont très différents des algorithmes probabilistes.

Les algorithmes probabilistes sont ceux qui utilisent des lancers de pièces et fonctionnent "la plupart du temps". Par exemple, les variantes aléatoires de tri rapide fonctionnent dans le temps dans l'attente (et avec une probabilité élevée), mais si vous n'avez pas de chance, cela pourrait prendre jusqu'à Θ ( n 2 ) . Les algorithmes probabilistes sont pratiques et sont utilisés par exemple par votre ordinateur lors de la génération de clés RSA (pour tester que les deux facteurs de votre clé secrète sont premiers). Un algorithme probabiliste qui n'utilise pas de lancer de pièces est parfois appelé "déterministe".Θ(nbûchen)Θ(n2)

Les algorithmes non déterministes sont ceux qui "ont besoin d'un indice" mais sont toujours corrects: ils ne peuvent pas être trompés en leur donnant un mauvais indice. A titre d'exemple, voici un algorithme non déterministe qui factorise un entier : devinez une factorisation de nnn , et vérifiez que tous les facteurs sont premiers (il existe un algorithme déterministe "rapide en théorie" pour le faire). Cet algorithme est très rapide et rejette les faux indices. La plupart des gens pensent que les algorithmes randomisés ne peuvent pas factoriser les entiers aussi rapidement. De toute évidence, ce modèle de calcul n'est pas réaliste.

Pourquoi nous soucions-nous des algorithmes non déterministes? Il existe une classe de problèmes, connue sous le nom de NP, qui consiste en des problèmes de décision qui ont des algorithmes non déterministes efficaces. La plupart des gens pensent que les problèmes les plus difficiles de cette classe, les problèmes dits NP-complets, n'ont pas d'algorithmes déterministes (ou même aléatoires) efficaces; c'est ce que l'on appelle la question P vs NP. Étant donné que de nombreux problèmes naturels sont NP-complets, il est intéressant de savoir s'ils ne sont pas résolus de manière efficace dans le pire des cas (dans la pratique, souvent les cas qui se présentent dans la pratique sont en fait résolus dans un délai raisonnable).

Yuval Filmus
la source
Merci! (1) Je me souviens que les problèmes NP sont ceux qui peuvent être résolus par un algorithme sur une machine de Turing non déterministe en temps polynomial. Ainsi, "un algorithme sur une machine de Turing non déterministe" et "un algorithme non déterministe sur une machine de Turing déterministe" sont-ils équivalents dans un certain sens? (2) Pensez-vous que l'algorithme probabalistique et l'algorithme randomisé sont le même concept? (3) Pensez-vous également que Wikipedia dit que l'algorithme simultané et l'algorithme probabalistique sont deux types d'algorithmes non déterministes est faux?
Tim
1
Je ne pense pas que la saveur de certificat du non-déterminisme sert à clarifier la différence avec la randomisation.
Raphael
(1) Oui, les deux sont identiques. (2) Ce sont deux noms pour le même concept. (3) Wikipedia donne quelques exemples d'autres types d'algorithmes, bien que la présentation puisse être trompeuse. Les algorithmes parallèles et probabilistes ne sont pas non déterministes.
Yuval Filmus
4
@ShelbyMooreIII Le non-déterminisme a une signification technique très spécifique dans la théorie de la récursivité et l'informatique théorique.
Yuval Filmus
1
Yuval, veuillez signaler les commentaires que vous pensez ne pas être constructifs ou obsolètes; nous les supprimerons alors.
Raphael
15

Un algorithme spécifie une méthode pour passer d'une entrée donnée à une sortie souhaitée qui a une certaine relation avec l'entrée. Nous disons que cet algorithme est déterministe si à tout moment, il est spécifié exactement et sans ambiguïté quelle est la prochaine étape de l'algorithme qui doit être effectuée dans le cadre de cette méthode, potentiellement dépendante de l'entrée ou des données partielles calculées jusqu'à présent, mais toujours unique.

Le non-déterminisme signifie qu'une partie de l'algorithme est laissée sous ou même non spécifiée. Par exemple, "int i = un nombre pair entre 0 et n" est sous-spécifié. Cela signifie qu'aucun comportement unique n'est spécifié à ce stade.

Pour que cette distinction soit utile, vous avez besoin du concept (habituel) de «correction» pour les algorithmes (déterministes), qui est officieusement que «l'algorithme calcule toujours ce que je veux qu'il calcule». Il devient alors intéressant de réfléchir à ce que la correction signifierait pour les algorithmes non déterministes, qui doivent prendre en compte les choix possibles dans des instructions sous-spécifiées.

Il existe deux façons de définir l'exactitude du non-déterminisme. La première est plutôt simple et moins intéressante, pour laquelle la justesse signifie "l'algorithme calcule toujours ce que je veux qu'il calcule, pour toutes les séquences de choix que je suis autorisé à faire". Cela se produit parfois si un auteur d'un peu de pseudocode est trop paresseux pour choisir un nombre et dit "choisir n'importe quel nombre pair entre 0 et n", alors que "choisir 0" aurait rendu l'algorithme déterministe. Essentiellement, en remplaçant tout non-déterminisme par le résultat d'un choix, vous pouvez rendre l'algorithme déterministe.

C'est aussi le «non-déterminisme» dont parle votre deuxième paragraphe. C'est aussi le non-déterminisme des algorithmes parallèles: dans ces algorithmes, vous n'êtes pas sûr de ce à quoi ressemble exactement l'exécution, mais vous savez que cela fonctionnera toujours, quoi qu'il arrive exactement (sinon votre algorithme parallèle serait incorrect).

La définition intéressante de la correction pour l'algorithme non déterministe est "l'algorithme calcule toujours ce que je veux qu'il calcule, pour une séquence de choix que je suis autorisé à faire". Cela signifie qu'il peut y avoir des choix qui sont faux, dans le sens où ils font que l'algorithme produit la mauvaise réponse ou même va dans une boucle infinie. Dans l'exemple "choisissez n'importe quel nombre pair entre 0 et n", peut-être 4 et 16 sont de bons choix, mais tous les autres nombres sont faux, et ces nombres peuvent varier selon l'entrée, les résultats partiels et les choix effectués jusqu'à présent.

Lorsqu'il est utilisé en informatique, le non-déterminisme se limite généralement à choisir de façon non déterministe soit un 0 soit un 1. Cependant, si vous choisissez de nombreux bits non déterministes, vous pouvez générer de longs nombres non déterministes ou d'autres objets, ainsi que faire des choix non déterministes, ce (si jamais) limite son applicabilité - si l'applicabilité est limitée, le non-déterminisme était trop puissant en premier lieu.

Le non-déterminisme est un outil qui est exactement aussi puissant qu'un algorithme déterministe basé sur un certificat, c'est-à-dire un algorithme qui vérifie une propriété donnée une instance et un certificat pour cette propriété. Vous pouvez simplement deviner de manière non déterministe le certificat pour une direction, et vous pouvez donner un certificat qui contient toutes les «bonnes» réponses pour les suppositions non déterministes de 0 et 1 de votre programme pour l'autre direction.

Si nous ajoutons du temps au mixage, les choses deviennent encore plus intéressantes. Le temps d'exécution d'un algorithme non déterministe est généralement considéré comme le minimum sur tous les choix (à droite). Cependant, d'autres choix peuvent entraîner une durée de fonctionnement considérablement pire (qui peut être asymptotiquement pire ou même arbitrairement pire que le minimum), ou même une boucle infinie. C'est pourquoi nous prenons le minimum: nous ne nous soucions pas de ces cas étranges.

Nous arrivons maintenant aux algorithmes randomisés. Les algorithmes aléatoires sont comme des algorithmes non déterministes, mais au lieu de «permettre» le choix entre 0 et 1 à certains points, ce choix est déterminé par un tirage aléatoire au moment où le choix doit être fait (qui peut différer d'une exécution à l'autre) , ou lorsque le même choix doit être refait ultérieurement lors de l'exécution de l'algorithme). Cela signifie que le résultat est 0 ou 1 avec une probabilité égale. L'exactitude devient maintenant "l'algorithme calcule presque toujours ce que je veux qu'il calcule" ou "l'algorithme calcule toujours ce que je veux qu'il calcule" (juste la version déterministe). Dans le second cas, le temps nécessaire à l'algorithme pour calculer sa réponse est généralement «presque toujours rapide», contrastant avec un «toujours rapide» déterministe.

PZPPNP

Alex ten Brink
la source
1
O(|s|)s
14

En bref: le non-déterminisme signifie avoir plusieurs choix, également valables, de continuer un calcul. La randomisation signifie utiliser une source externe de bits (aléatoires) pour guider le calcul.


Afin de comprendre le non-déterminisme, je vous suggère de regarder les automates finis (FA). Pour une FA déterministe (DFA), la fonction de transition est bien une fonction. Étant donné l'état actuel et le prochain symbole d'entrée, l'état suivant est défini de manière unique.

(uneb)(unec)

NFA
[ source ]

une(uneb)(unec)une

Le point clé ici est que l'acceptation est définie comme «accepter s'il y a un cycle d'acceptation» pour NFA. Ce critère d'existence peut être interprété comme «toujours bien deviner», même s'il n'y a pas de supposition réelle.

Notez qu'il n'y a aucune probabilité ici, nulle part. Si vous deviez traduire le non-déterminisme en langages de programmation, vous auriez des instructions qui peuvent provoquer des sauts vers différentes autres instructions avec le même état . Une telle chose n'existe pas, sauf peut-être dans les langages de programmation ésotériques conçus pour vous faire réfléchir.


La randomisation est assez différente. Si nous le décomposons, l'automate / programme n'a pas plusieurs choix pour poursuivre l'exécution. Une fois le ou les bits aléatoires dessinés, l'instruction suivante est définie de manière unique:

if ( rand() > 5 )
  do_stuff();
else
  do_other_stuff();

En termes d'automates finis, considérez ceci:

PFA
[ source ]

{une,b,c}10

Σ×ΠΠ


Une dernière remarque: on peut voir que le non-déterminisme est un concept purement théorique, il ne peut pas être mis en œuvre! Alors pourquoi l'utilisons-nous?

  1. Il permet souvent des représentations plus petites. Vous savez peut-être qu'il existe des NFA pour lesquels le plus petit DFA est exponentiellement aussi grand¹. L'utilisation des plus petits n'est qu'une question de simplification de la conception des automates et des preuves techniques.

  2. La traduction entre les modèles est souvent plus simple si la non-déterminisme est autorisé dans le modèle cible. Considérez, par exemple, la conversion d'expressions régulières en DFA: la manière habituelle (et simple) est de la traduire en NFA et de déterminer celle-ci. Je n'ai pas connaissance d'une construction directe.

  3. Cela peut être une préoccupation académique, mais il est intéressant de noter que le non-déterminisme peut augmenter la puissance d'un appareil. Ce n'est pas le cas pour les automates finis et les machines de Turing, sans doute les appareils de modèles de machines les plus populaires, mais par exemple les automates déterministes à refoulement, les automates Büchi et les automates à arbre descendant peuvent accepter strictement moins de langues que leurs frères et sœurs non déterministes².


  1. Voir cette question sur cstheory.SE pour un exemple.
  2. Voir ici , ici et ici (proposition 1.6.2) , respectivement.
Raphael
la source
Donc, comme en programmation, on ne peut pas faire plusieurs "sinon" avec la même condition, est-ce pour cela que la probabilité / poids est parfois incorporé à la condition?
kate
@kate Je ne sais pas ce que tu veux dire par là. Langages de programmation - diable, les ordinateurs! - sont intrinsèquement déterministes. Nous pouvons créer l'illusion du hasard en utilisant des PRNG et des entrées aléatoires (quoi que cela signifie).
Raphael
14

Vous devez savoir qu'il existe deux définitions différentes du non-déterminisme qui sont lancées ici.

  1. Comme wikipedia le définit, à peu près "pas de déterminisme", c'est-à-dire tout algorithme qui n'a pas toujours le même comportement sur les mêmes entrées. Les algorithmes randomisés sont un cas particulier des algorithmes "non déterministes", car ils correspondent à la définition que je viens de donner.

  2. Les modèles de calcul non déterministes (comme les machines de turing non déterministes) sont des modèles théoriques de calcul. Ils peuvent avoir plusieurs chemins d'exécution possibles et ils "acceptent" si l'un de ces chemins accepte. Vous devez noter qu'ils ne sont pas réels. Il n'y a aucun moyen d'exécuter physiquement un algorithme qui n'est pas déterministe dans ce sens, bien que vous puissiez le simuler avec un algorithme aléatoire ou déterministe.

En CS, le non-déterminisme signifie généralement (2), donc la définition de Wikipedia que vous avez donnée (qui est (1)) est trompeuse. La plupart des réponses données jusqu'à présent expliquent (2), pas (1).

usul
la source
Selon 1), Quicksort randomisé est un algorithme déterministe; Je ne suis pas sûr que ce soit une terminologie utile. Je suppose que 1) pourrait être décrit comme une vue "boîte noire" tandis que 2) inspecte réellement l'algorithme / la machine à portée de main. On peut dire que CS est tout environ 2); J'attribuerais le point de vue 1) à l'ingénierie logicielle (modulaire).
Raphael
@Raphael, Bon point, je devrais corriger (1) pour dire "avoir le même comportement sur les mêmes entrées". Convenu de préférer (2) à (1).
usul
"Comportement" est ambigu, exactement de la manière boîte noire vs boîte blanche. :)
Raphael
Bien sûr, mais je suppose que je considère la distinction importante entre une machine de Turing non déterministe formelle et précisément définie (2) et un "non déterminisme" vague / ambigu (1), qui pourrait inclure le hasard (contrairement à une MNT). C'est tout ce que je voulais dire ...
usul
L'exécution d'un algorithme non déterministe n'a rien d'irréel, cela signifie simplement que lors de l'exécution, des choix doivent être faits pour lesquels le résultat n'est pas déterminé par l'algorithme. La seule différence entre 1 et 2 est qu'en 1 vous n'avez pas dit quand l'algorithme est considéré comme "réussi", alors qu'en 2 l'algorithme doit être du type qui dit toujours "oui" ou "non" à la fin de une exécution et vous avez un problème de décision et vous définissez la réponse de l'algorithme au problème comme «oui» si et seulement si l'une de ses exécutions possibles répond «oui». Donc 2 n'est qu'un cas spécial de 1.
reinierpost
1

Revisiter cela en raison de certaines recherches connexes que je fais, le désaccord entre moi-même et certains des autres qui ont répondu, peut être assimilé à une compréhension holistique dans laquelle nous avions tous raison. Mais l'OMI, la terminologie informatique adoptée «non-déterminisme borné» est un oxymore incorrect (ce que je voulais dire auparavant).

Leur point clé est de faire la distinction entre le non-déterminisme borné et non borné. [1]

Les machines de Turing non déterministes (alias «NTM») ont un non-déterminisme borné en ce que chaque transition d'état a un nombre limité de possibilités, c'est-à-dire que le nombre de programmes (alias «configurations») est fini. La bande reste illimitée, donc la preuve de résiliation reste indécidable. Mais pour toute entrée donnée qui s'arrête, la sortie est déterministe et limitée dans le temps, c'est-à-dire que pour toute entrée, le résultat est déterministe ou ne se termine pas. Les NTM exécutent également toutes les configurations possibles en parallèle, de sorte qu'ils s'exécutent exponentiellement plus rapidement que l'émulation des NTM sur les machines déterministes de Turing (alias «DTM»). [2]

Il n'y a vraiment pas de relation non déterministe entre les entrées et les résultats dans les MNT parce que le résultat est toujours le même pour n'importe quelle entrée ou état initial, ce qui est évident parce qu'ils peuvent être émulés par des MNT sans aléa supplémentaire. [2] Indécidable n'est pas l'antithèse du déterministe, car ne pas s'arrêter est aussi un résultat déterministe. Les machines déterministes ont toujours le même résultat pour une entrée donnée, même lorsque ce résultat ne doit pas s'arrêter. Le non-déterminisme localisé des NTM est dans chaque transition d'état de l'algorithme d'exécution. Il est a priori indécidable quel chemin de l'arborescence pourrait se terminer en fournissant l'état de sortie. Mais l'indécidabilité n'est pas du non-déterminisme. Ainsi, le terme «non-déterminisme borné» est destiné à décrire l'indétermination localisée au sein de la machine à états mais pas la relation des entrées aux résultats, d'où le concept de «délimité». Je pense toujours que le terme «non-déterminisme borné» est un oxymore et il aurait pu être décrit avec plus de précision comme une machine de Turing à «transition d'état parallélisée».

Alors que, pour toute entrée ou état initial donné, le non- déterminisme illimité (alias «indéterminisme») a un nombre illimité d'états possibles. Le non-déterminisme illimité implique non seulement le nombre de configurations possibles de programmes, mais également un état externe illimité qui ne fait pas partie de l’entrée ou de l’état initial, comme les retards illimités. Et ainsi les résultats peuvent varier lors d'exécutions répétées pour la même entrée ou condition initiale; il n'y a donc pas de relation déterministe entre les intrants et les résultats. [3]

Les algorithmes aléatoires et probabilistes utilisent un certain non-déterminisme, c'est-à-dire la sélection aléatoire de configurations possibles éventuellement limitées en nombre de configurations, mais ils n'exécutent pas toutes les configurations possibles comme le font les MNT. Ainsi, ils ne sont déterministes que si le caractère aléatoire est déterministe (par exemple PRNG) et si l'état initial de l'entropie pour le caractère aléatoire est considéré comme faisant partie de l'entrée.

[1] https://en.wikipedia.org/w/index.php?title=Unbounded_nondeterminism&oldid=710628370#Nondeterministic_automata

[2] https://en.wikipedia.org/w/index.php?title=Non-deterministic_Turing_machine&oldid=754212081#Equivalence_with_DTMs

[3] Hewitt, Meijer et Szyperski: The Actor Model (tout ce que vous vouliez savoir ...) . Sautez à 17:44 minutes.

Shelby Moore III
la source
1
Je ne vois pas comment cela répond à la question.
adrianN
1
@adrianN la réponse explique ce qu'est vraiment le non-déterminisme. Et explique ensuite comment les algorithmes randomisés sont liés. La question demande de relier les deux. Bingo. Réponse à la question.
Shelby Moore III
0

Outre toutes les réponses qui expliquent la différence, j'ai un exemple qui peut vous aider à obtenir la chose qu'ils veulent dire.
Considérons une pile ou face, vous obtenez soit un H ou T . Si la pièce est toss au hasard, il est très probable que de 1000 lancers de pièces, 500 serait H et il est tout à fait improbable que 999 d'entre eux serait H . Mais si le tirage au sort n'est pas déterministe, nous ne pouvons pas dire que l'obtention de 999 H serait hautement improbable.

Priyanshu
la source
Je pense que votre message sert de commentaire, en plus il ne tente pas de résoudre la question principale randomisée vs les algorithmes non déterministes et de plus il nous ramène à différents types de non-déterminisme.
Evil
-6

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é!

Shelby Moore III
la source
4
Ce n'est pas ce que le non-déterminisme signifie en informatique. Les algorithmes non déterministes ne sont pas «imprévisibles».
David Richerby
4
Je réponds que cela n'a rien à voir avec la façon dont le non-déterminisme est défini dans les automates resp. théorie de la calculabilité. Shelby, tu devrais arrêter de flamber et te procurer un manuel. Si vous ne comprenez pas les autres réponses, je ne pense pas que nous puissions vous aider dans un commentaire.
Raphael
3
@ShelbyMooreIII Vous avez complètement mal compris ce que signifie le non-déterminisme en informatique. Cela n'a rien à voir avec l'entropie. Cela ne signifie pas ce que vous pensez que cela signifie: c'est pourquoi vous pensez que toutes les autres réponses sont fausses. Peut-être que le nom a été mal choisi, mais ce n'est pas la question. Il a une signification particulière en informatique, différente de celle qu'il a dans d'autres sciences. Vous essayez d'utiliser une mauvaise définition, et c'est pourquoi tout vous semble complètement faux.
David Richerby
4
"L'utilisation du terme non-déterminisme quand on parle de théorie de la complexité computationnelle [...] est clairement une question d'entropie" - non, ce n'est pas le cas.
Raphael
3
Nous pouvons en convenir: veuillez cesser d'essayer de nous "enseigner", cela n'aide personne.
Raphael