Inscription / Connexion Nouveau Sujet
Niveau énigmes
Partager :

S'arreter avant le rattrapage du retard

Posté par
Vassillia
22-11-21 à 01:01

Bonjour à tous,

Le titre est une private joke pour GBZM mais l'exercice n'est pas du tout évident et en tout cas je n'ai pas tous les éléments de réponses.

Dans une urne, on sait qu'il y a exactement n boules vertes et n boules rouge. On va pouvoir effectuer des tirages sans remise à l'aveugle donc on peut considérer que chaque boule encore dans l'urne a autant de chance d'être choisie.
On gagne 1 euro si on tire une boule verte et on perd 1 euro si on tire une boule rouge. On peut arrêter de tirer des boules quand on veut ou continuer jusqu'à vider l'urne.

Quelle sera votre stratégie préférée et quelle sera l'espérance de gain correspondant ? Il est formellement interdit de regarder dans l'urne, de repeindre les boules... enfin de tricher !

Posté par
ty59847
re : S'arreter avant le rattrapage du retard 22-11-21 à 08:12

Ca dépend de mes finances !
Si j'ai absolument besoin de 10€, pour rembourser un mafieux à qui je dois ces 10€, je vais tenter la chance, et jouer jusqu'à gagner10€, ou mourir.

Sinon, dans des circonstances normales, dès que je suis positif (+1€), j'ai intérêt à m'arrêter.

Posté par
dpi
re : S'arreter avant le rattrapage du retard 22-11-21 à 08:17

Bonjour,ce n'est pas ma spécialité...

 Cliquez pour afficher

Posté par
LittleFox
re : S'arreter avant le rattrapage du retard 22-11-21 à 13:01


Il y a pourtant moyen d'avoir une espérance positive!

Par exemple pour n=1000, on a une espérance d'environ 13.5 avec la stratégie: je m'arrête quand j'ai gagné 22.


Voici la courbe de l'espérance de gain pour la startégie "je m'arrête quand j'ai atteint x" avec x en abscisse:
S\'arreter avant le rattrapage du retard

Posté par
Vassillia
re : S'arreter avant le rattrapage du retard 22-11-21 à 14:08

Merci de votre participation et bien joué LittleFox
On commence à trouver des résultats intéressants sur l'espérance.
On peut donc se demander quel seuil d'arrêt choisir en fonction de n pour maximiser l'espérance  ? Je suis d'accord pour n=1000 choisir 22 me parait cohérent.
On peut aussi se demander s'il n'y a pas encore une stratégie meilleure ? On ne tient pas compte des boules restantes dans cette stratégie et on sent bien que c'est dommage si on veut vraiment optimiser.

Posté par
LittleFox
re : S'arreter avant le rattrapage du retard 23-11-21 à 08:39


On peut calculer l'espérance maximale pour  v boules vertes et r boules rouges de la façon suivante:

E(v, r) = \begin{cases} r & \text{ si } v = 0 \\ 0 & \text{ si } r = 0 \\ max(r-v; \frac{v E(v-1, r)+rE(v,r-1)}{v+r}) & \text{ sinon } \end{cases}

Dans le cas où E(v, r) est égal à r-v, il faut s'arrêter. Sinon, il faut jouer.
E(v, r) se calcule facilement dans un tableau.

Je ne sais pas si on peut en sortir une règle sans devoir calculer tout le tableau.

E(100,100) est plus grand que 5.19 > 0-0, on a donc tout intérêt à jouer

Posté par
LittleFox
re : S'arreter avant le rattrapage du retard 23-11-21 à 08:50

Avec cette stratégie, j'ai une espérance d'environ 16.49 pour n = 1000. Ce qui est mieux que la stratégie "je m'arrête à 22" (~13.5).

Mais j'ai dû calculer un million de valeurs.

Posté par
Vassillia
re : S'arreter avant le rattrapage du retard 23-11-21 à 17:37

Alors là vraiment bravo LittleFox ! Tu sais faire travailler ton ordinateur, il n'y a pas à dire. Meilleure stratégie possible

Je n'arrive pas non plus à exprimer l'espérance en fonction de n donc je ne sais pas à quoi ça va ressembler lorsque n tend vers l'infini

Par contre pour ta stratégie précédente (choisir le meilleur seuil qu'on doit atteindre pour s'arrêter), on devrait pouvoir se débrouiller avec le principe de réflexion mais malheureusement ce ne sera pas optimal comme tu viens de le montrer.

Posté par
LittleFox
re : S'arreter avant le rattrapage du retard 24-11-21 à 19:18


J'ai fais un petit programme pour aller plus loin.

D'abord un changement de variable: N = r+v et d = r-v de sorte que:

E_N(d) = \begin{cases} 0 & \text{ si } d = -N \\ N & \text{ si } d = +N \\ max(d; \frac{(N-d)E_{N-1}(d+1) + (N+d)E_{N-1}(d-1)}{2N})& \text{ sinon } \end{cases}

Ainsi on peut calculer E_N à partir de E_{N-1} libérant de la mémoire et permettant d'utiliser numpy.

Voici le code:

from matplotlib import pyplot
import numpy


def main(max_n=1001):

    e = numpy.full(1, 0.)
    middle = [0]
    factor = []
    for n in range(1, max_n):
        e_ = numpy.full(n+1, 0.)
        e_[n] = n
        e_[0] = 0
        d = numpy.linspace(-n, n, n+1)
        e_[1:-1] = numpy.maximum((e[1:]*(n-d[1:-1]) + e[:-1]*(n+d[1:-1])) / (2*n), d[1:-1])

        e = e_

        pyplot.plot(d/n, e/n, '-')
        if n % 2 == 0:
            middle.append(e[n//2])
            factor.append(e[n//2]**2/(n/2))

    print(middle[-1])
    pyplot.show()

    # Trying to analyze E_N(d)
    d = numpy.linspace(-1, 1, len(e))
    pyplot.plot(d, e/(max_n-1))
    pyplot.show()

    middle = numpy.array(middle)
    pyplot.plot(middle)
    pyplot.show()

    ns = numpy.arange((max_n+1)//2)
    pyplot.plot(ns[1:], factor)
    pyplot.show()

    pyplot.plot(ns, middle**2/factor[-1] - ns)
    pyplot.show()


if __name__ == "__main__":
    main()


Traçant les courbes de \frac{E_N(d)}{N} en fonction de \frac{d}{N} (mise à l'échelle pour que les graphes soit dans [-1,1]x[0,1]) on obtient:
S\'arreter avant le rattrapage du retard
On voit bien les deux asymptotes E_N(d) = 0 quand d<0 et E_N(d)=d quand d>0. Mais entre les deux on a une courbe douce et donc E_N(0) \ne 0

Traçant la courbe de E_N(0) en fonction de N, obtient:
S\'arreter avant le rattrapage du retard

C'est une belle racine carrée.
En effet, E_n(0) \approx \sqrt{0.2724n}. Je n'ai pas trouvé le pourquoi de cette constante 0.2724 (c'est un minorant), peut-être aurez-vous plus d'idées?

Résultat: il est plus avantageux de jouer de nombreuses parties avec peu de boules qu'une seule avec toutes les boules

Posté par
Vassillia
re : S'arreter avant le rattrapage du retard 24-11-21 à 23:25

Pas la moindre idée mais je trouve super intéressant de visualiser ce qui se passe. Merci LittleFox de l'avoir mis en évidence.
Petit bonus, j'arrive à comprendre ton code, je vais finir par prendre de bonnes habitudes grâce à toi à force

Posté par
dpi
re : S'arreter avant le rattrapage du retard 25-11-21 à 07:46

Bonjour,
Je n'ai pas participé mais j'admire le travail de Littlefox  en plus
de son job que j'espère passionnant pour lui

Posté par
LittleFox
re : S'arreter avant le rattrapage du retard 25-11-21 à 13:23


Je suis en congé parental le mercredi



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !