(Von Neumann a donné un algorithme qui simule une pièce équitable donnant accès à des pièces biaisées identiques. L'algorithme nécessite potentiellement un nombre infini de pièces (bien qu'en attente, un nombre fini suffira). Cette question concerne le cas où le nombre de lancers autorisés est délimité.)
Supposons que nous ayons pièces identiques avec un biais . L'objectif est de simuler un lancer de pièce unique tout en minimisant le biais.
La simulation doit être efficace dans le sens suivant: Un algorithme fonctionnant en temps polynomial regarde bits aléatoires et sort un seul bit. Le biais de l'algorithme est défini comme leoù l'espérance est reprise par la distribution définie par bits iid tels que .
Quel algorithme fonctionnant en temps polynomial a le biais le moins biaisé ?
Cette question me semble très naturelle et il est très probable qu'elle ait été envisagée auparavant.
Que sait-on de ce problème? -on quelque chose quand une classe d'algorithmes plus faible (dans , etc.) est considérée?
Vous ne dites pas si le biais est connu ou inconnu. La magie de l'algorithme de von Neumann est qu'il fonctionne dans les deux cas.
Supposons qu'il soit connu. La meilleure réponse dépend alors de façon critique des caractéristiques théoriques des nombres du biais. Prenons p = 2/3. Lancez la pièce deux fois et mappez HH à 0 et TH et HT à 1, en répétant l'expérience si le résultat est TT. Ensuite, 0 et 1 sont également probables et la probabilité de répétition n'est que de 1/9 au lieu de 5/9 avec l'algorithme de von Neumann. Ou pour le dire selon vos termes, vous ne biaisez l'un des résultats que par 1/9 si votre limite d'itération est de 2.
Tout cela est étroitement lié à la théorie de l'information et à la théorie du codage. Lorsque p est une fraction avec un numérateur et un dénominateur plus compliqués, le meilleur algorithme nécessitera une longueur de bloc plus longue que 2. Vous pouvez utiliser un argument d'existence de style Shannon pour montrer que pour un biais donné, il existe une procédure aussi optimale que vous voulez, mais la longueur du bloc peut devenir très grande.
Peres dans son article Iterating Von Neumann's Procedure for Extracting Random Bits prouve qu'une version de l'algorithme de von Neumann peut approcher arbitrairement la limite de Shannon. Une grande partie du travail dans ce domaine semble avoir été effectuée par des théoriciens de l'information et des statisticiens, donc je ne peux penser à aucun article avec une pente théoriquement complexe qui pourrait vous donner une réponse directe à votre question.
Il y a un problème amusant qui demande le contraire: si vous avez une source de bits équitables, comment générez-vous efficacement une distribution uniforme sur un ensemble sans puissance de deux? La version à itération limitée du problème qui s'apparente à votre question demande de maximiser l'entropie (c'est-à-dire de rendre la distribution aussi uniforme que possible) avec n lancers d'une pièce équitable.
la source
Je préfère penser à la question sous la forme généralisée suivante: nous avons un arbre binaire complet de hauteur n, où chaque nœud est attribué un nombre st somme des nombres est 1. Pouvons-nous partitionner les feuilles en deux ensembles st les sommes de les nombres sont proches?
Si nous avons une pièce biaisée avec le paramètre et , les nœuds auront des valeurs .q = 1 - p p i q n - ip q=1−p piqn−i
Comme indiqué dans d'autres réponses, pour la plupart des fins piratées, la prise de la parité des bits est bonne. Le biais sera .∑i(ni)parity(x)piqn−i=∑i(ni)(−p)iqn−i=(q−p)n
En général, si nous avons suffisamment de ressources informatiques (disons en nombre de bits aléatoires), nous pouvons partitionner les nœuds de la meilleure façon possible.PSpace
EDIT "C'est essentiellement le problème de codage de Shannon." (Merci à Per Vognsen.) FIN DE LA MODIFICATION
D'un autre côté, si nous ne sommes autorisés qu'à utiliser , il n'est pas difficile de montrer que nous ne pouvons pas faire grand-chose à cause du changement de lemme. Le circuit sera bien approché exponentiellement par un CNF et il n'est pas difficile de montrer qu'un CNF ne peut pas calculer une réponse avec un bon biais.AC0
(Cette réponse peut contenir des erreurs, je n'ai pas vérifié les détails.)
la source
Vous pouvez également obtenir de nombreux bits aléatoires avec des pièces biaisées, voir les algorithmes de dérandomisation de Gabizon sous Distributions de produits (http://sites.google.com/site/arielgabizon1/)
la source
Question connexe, site différent: blanchiment d'une séquence de bits aléatoire
la source
Si vous voulez qu'un nombre pair de lancers de pièces soit impartial avec une pièce biaisée, le moyen facile de supprimer le biais est d'inverser le résultat de chaque autre lancer.
la source