Je ne sais pas comment résumer les termes efficacement, mais nous pouvons nous arrêter chaque fois que le nombre total de rouleaux et le nombre total de succès sont tels que est égal puisque nous pouvons partitionner les différents ordonnances que nous aurions pu atteindre et en deux groupes de probabilité égale correspondant chacun à une étiquette de sortie différente. Nous devons faire attention à ne pas nous être déjà arrêtés pour ces éléments, c'est-à-dire qu'aucun élément n'a un préfixe de longueur avec succès tel que soit pair. Je ne sais pas comment transformer cela en un nombre attendu de flips.tnt(nt)ntn′t′(n′t′)
Pour illustrer:
Nous pouvons nous arrêter à TH ou HT car ceux-ci ont une probabilité égale. En descendant dans le triangle de Pascal, les termes pairs suivants sont dans la quatrième ligne: 4, 6, 4. Cela signifie que nous pouvons nous arrêter après les lancers si une tête est apparue car nous pouvons créer une correspondance bipartite: HHHT avec HHTH, et techniquement HTHH avec THHH bien que nous nous serions déjà arrêtés pour ceux-là. De même, donne le HHTT correspondant à TTHH (le reste, nous aurions déjà arrêté avant de les atteindre).(42)
Pour , toutes les séquences ont des préfixes arrêtés. Cela devient un peu plus intéressant dans où nous associons FFFFTTFT à FFFFTTTF.(52)(83)
Pour après 8 lancers, la chance de ne pas avoir arrêté est avec un nombre attendu de lancers si nous avons arrêté de . Pour la solution où nous continuons à rouler les paires jusqu'à ce qu'elles diffèrent, la chance de ne pas s'arrêter est avec un nombre attendu de rouleaux si nous nous sommes arrêtés à 4. Par récursion, une borne supérieure sur les flips attendus pour l'algorithme présenté est . p=1211285316116128127⋅5316=424127<4
J'ai écrit un programme Python pour imprimer les points d'arrêt:
import scipy.misc
from collections import defaultdict
bins = defaultdict(list)
def go(depth, seq=[], k=0):
n = len(seq)
if scipy.misc.comb(n, k, True) % 2 == 0:
bins[(n,k)].append("".join("T" if x else "F"
for x in seq))
return
if n < depth:
for i in range(2):
seq.append(i)
go(depth, seq, k+i)
seq.pop()
go(8)
for key, value in sorted(bins.items()):
for i, v in enumerate(value):
print(v, "->", "F" if i < len(value) // 2 else "T")
print()
impressions:
FT -> F
TF -> T
FFFT -> F
FFTF -> T
FFTT -> F
TTFF -> T
TTFT -> F
TTTF -> T
FFFFFT -> F
FFFFTF -> T
TTTTFT -> F
TTTTTF -> T
FFFFFFFT -> F
FFFFFFTF -> T
FFFFFFTT -> F
FFFFTTFF -> T
FFFFTTFT -> F
FFFFTTTF -> T
FFFFTTTT -> F
TTTTFFFF -> T
TTTTFFFT -> F
TTTTFFTF -> T
TTTTFFTT -> F
TTTTTTFF -> T
TTTTTTFT -> F
TTTTTTTF -> T