Inscription / Connexion Nouveau Sujet

1 2 +


Niveau maths spé
Partager :

Marche aléatoire : un algorithme pas facile...

Posté par
palind0
14-03-14 à 15:58

Bonjour !

Dans le cadre de mon TIPE j'étudie des marches aléatoires sur des hypercubes en dimension n.
J'explique le principe en dimension 3 pour mieux comprendre : notre cube est repéré par ses 8 points dans l'espace R^3 par les triplets suivants :

(0,0,0)
(1,0,0), (0,1,0), (0,0,1)
(1,1,0), (1,0,1), (0,1,1)
(1,1,1)

On considère alors un point mobile qui à l'instant t=0 se trouve à l'origine, et qui à chaque instant se déplace d'un point à un autre selon une arête de façon aléatoire, et on cherche à savoir au bout de combien de temps il atteint le triplet (1,1,1), c'est-à-dire l'opposé de là où il est parti.
Avec des calculs matriciels et un peu de probabilité, je trouve une espérance de 10, donc en gros si on effectue le procédé un grand nombre de fois, en moyenne on trouvera qu'à partir de 10 itérations il est arrivé là où on voulait.

Du coup, j'aimerais modéliser ça par un algorithme à l'aide de Maple pour " confirmer " les valeurs obtenues mais j'ai bien du mal... J'ai réussi à en faire un pour la dimension 2 mais il est très peu optimisé et pas importable en dimension quelconque.

Par conséquent, j'aimerais savoir comment je pourrais créer un algorithme, ou plutôt une procédure, dans laquelle je n'aurais qu'à rentrer (au mieux !) le nombre de la dimension pour qu'il me ressorte l'espérance voulue.
Sachant que l'algorithme se baserait sur la démarche suivante, que j'explique en dimension 3 :

Grâce à la fonction rand(), Maple me renvoie un nombre à 12 chiffres, que je peux diviser par 10^12 pour obtenir un nombre aléatoire dans l'intervalle [0,1].
On va appeler S le type d'un triplet, où S est le nombre d'arêtes qui séparent le point considéré de l'origine.
A t=0, le mobile est au seul triplet de type 0.
Il va se déplacer selon une arête, or il n'a que trois choix, donc une probabilité 1/3 de se retrouver sur un des trois triplets de type 1. (ici, il faudrait diviser l'intervalle [0,1] en 3 parties et dire : si la variable aléatoire est compris entre 0 et 0.33, il va à tel triplet, entre 0,33 et 0,66, à l'autre, etc)
Une fois sur l'un de ces triplets, le point a une probabilité de 2/3 de se retrouver sur un triplet de type 2, et une probabilité de 1/3 de se retrouver sur le triplet de type 0. (idem, on se sert de la variable aléatoire en divisant l'intervalle voulu)
Enfin, sur un triplet de type 2, il a une probabilité de 1/3 d'aller sur le triplet 3, et donc d'y rester, ou une probabilité 2/3 de revenir sur un type 1.

Il faudrait donc que selon le type du triplet soit définie des probabilités différentes pour le déplacement de mon mobile et c'est ÇA qui me pose problème...

Ensuite, il suffira d'arrêter l'algorithme dès que le point est arrivé au triplet de type 3 et d'afficher le nombre d'itérations. On répète ce procédé 1000 fois, et on regarde la moyenne du nombre d'itérations pour tomber sur le 10 voulu.

Je vous demande donc votre aide pour pouvoir modéliser tous ces triplets et les probabilités qui vont avec sous Maple algorithmiquement, sachant qu'il faudra par la suite que je le fasse en dimension quelconque (si possible !!).

Merci d'avance...

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 18:10

salut

je ne vois pas l'intérêt de distinguer des types de triplet

un sommet de l'hypercube a pour coordonnées un n-uplet constitué uniquement de 0 ou de 1 ...

soit (x1, x2, ...., xn) les coordonnées d'un sommet S fixé

1/ quelles sont les coordonnées d'un sommet adjacent (relié par une arête) à ce sommet ?
2/ combien y en a-t-il ?
3/ comment simuler le passage de ce sommet à un sommet adjacent ?

...

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 19:22

Je ne comprends pas l'intérêt d'une simulation (de type Monte-Carlo) sur un problème où on peut faire un calcul exact.

Pourquoi ne pas simplement propager les probabilités d'un état à l'autre, comme tu l'as probablement fait dans le cas du cube ?

En gros tu pars de ton hypercube initial avec 1 sur la position initiale et 0 partout ailleurs.
Puis tu écris pour chaque sommet la formule de passage permettant de passer de t à t+1 en sommant toutes les contributions en probabilités, de tous sommets voisins du sommet considéré.

En quelques lignes astucieuses c'est plié (surtout en répondant au préalable aux questions indiquées par carpediem)...
Tu te retrouveras avec tous les états de probabilité successifs de l'hypercube (la somme des probabilités de tous les sommets à chaque instant restant bien sûr égale à 1).

En sommant n * p(final), tu auras le calcul de l'espérance cherchée, en espérant qu'elle veuille bien converger...

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 19:28

effectivement faire une simulation sur une expérience qui ne converge pas (me semble-t-il) pour estimer l'espérance semble peu raisonnable ....

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 19:37

C'est possible que ça converge...
Lentement, mais sûrement.

Au bout d'un moment, le cube de probabilité doit s'homogénéiser...
Et dans ce cas, la probabilité de t à t+1 sera du genre géométrique avec une raison très proche de 1 mais inférieure à 1. Donc l'espérance devrait converger (avec le "truc" de la dérivée...). Je ne sais pas si c'est "clair", mais bon ...

Pour des dimensions de cube importante, un calcul direct demandera déjà pas mal de calculs à itérer un grand nombre de fois...

Alors pour une simulation, autant dire que c'est mal engagé...
Et puis surtout c'est mal venu de traiter par simulation un problème qu'on peut calculer exactement...

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 19:40

Je m'aperçois que j'ai imaginé pire qu'un cube : un truc avec plusieurs sommets par arête...
Donc les dimensions seront peut-être moins explosives que je ne l'ai suggéré.

N'en reste pas moins qu'utiliser du Monte-Carlo sur un problème directement calculable... c'est être un peu joueur ...

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 19:48

il me semble que dans le meilleur des cas pour passer du sommet (0, ..., 0) au sommet (1, ..., 1) il faut au minimum n étapes .....

pour n = 3 tu trouves une approximation de 10 > 32 ... si par hasard cela se généralise ... va falloir faire chauffer les puces pour pouvoir se servir des résultats d'une simulation ....

effectivement une étude théorique serait préférable ... même si cela reste un excellent exercice d'algorithmique ....

Posté par
palind0
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 19:49

Merci pour ces reponses si rapides ! Je nai malheureusement pas le temps ce soir de my pencher, je tacherai dapprofondir les resultats ou pistes que vous mavez donnees.
Mais sinon, jai fait une espece de graphe avec le nombre de sommets et les probabilites de passer de lun a lautre en dimension n.
Ce que je desirerais en fait, ce serait de connaitre cette esperance en dimension quelconque, pensez vous quil existe une formule ? Enfin, je suppose, car un exo non corrigé demande de verifier le resultat de lesperance en dimension 47...
Merci de vos reponses.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 14-03-14 à 22:39

Tu peux schématiquement traiter l'espérance à trois niveaux :
1. Simulation stochastique.
2. Calcul numérique direct approché (parce qu'en temps fini Tmax).
3. Calcul complet, avec passage à la limite (temps infini).

1 et 2 sont très similaires dans la programmation.
A la limite, la 1ère peut être rigolote à titre "expérimentale".
Mais la 2 est indispensable pour une valeur fiable.
Et elle est en fait plus simple que la simulation (qui requiert la répétition d'expériences et la synthèse des résultats).

Le calcul complet (3) est balaise à mon avis.
Il revient à élever une matrice à la puissance n...

Pour les 3 méthodes, la formule de passage est assez simple :

P_{t+1}(X) = \Sum_{X' \in V(X)} \dfrac 1 n.P_{t}(X')

V(X) = voisinage direct de X : Sommet distant de plus ou moins un vecteur unitaire...
... c'est à dire requérant un déplacement avec un 1 et n-1 zéros

Le vecteur P(t=0) vaut 1 pour la position initiale X=(0,0,0,...0) et 0 pour toutes les autres positions.
Les vecteurs P(t) se calculent de proche en proche.

NB: adapter la formule de passage pour qu'une fois en position finale, on y reste...

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 09:19

tout simplement les n voisins de P(x_1, x_2, ...,x_n) s'obtiennent en remplaçant l'une des coordonnées x_i par |x_i - 1| il me semble ... ou non ...

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 12:06

Oui.
Et c'est exactement la même chose qu'effectuer un "déplacement" de 1 sur une des coordonnées.
M' = M + U,   avec U vecteur unitaire.  
... Comme ça on sait à la fois ce qu'il faut faire... et pourquoi on le fait .

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 13:22

Citation :
Ce que je desirerais en fait, ce serait de connaitre cette esperance en dimension quelconque, pensez vous quil existe une formule ? Enfin, je suppose, car un exo non corrigé demande de verifier le resultat de lesperance en dimension 47...

Pour un N donné (par exemple N=47), tu peux calculer directement une valeur approchée assez valable, par la méthode 2, en propageant les probabilités sur une durée suffisante Tmax pour voir l'espérance se stabiliser.

Tu peux éventuellement trouver par démonstration à quel temps Tmax la méthode 2 donne une estimation proche de la valeur réelle (T infini).

Tu peux même à la rigueur tenter de reconstituer empiriquement la formule qui donne l'espérance en fonction de N.

Mais trouver la limite exacte par démonstration, pour tout N... ça me semble vraiment compliqué.
Il faut élever la matrice de passage N x N à la puissance Tmax.
Ou ce qui revient au même, il faut résoudre un système de N² suites définies entre elles par récurrence (avec N suites au plus impliquées par chaque récurrence)...

La matrice a une configuration particulière alors il y a peut-être une approche astucieuse pour l'élever à la puissance Tmax.
Mais c'est chaud quand même...

A la rigueur tu peux le faire pour N=2 et N=3, voire pour N=4...
Histoire de voir à quoi ça ressemble... et pour étayer ton exposé.

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 19:01

Bonsoir,
j'ai fait un calcul, un peu rapide, mais j'ai l'impression qu'il sera difficile de faire une simulation pour n=47.
Pour n=10 l'espérance, sauf erreur de ma part, est supérieure à 1186 et j'ai l'impression qu'elle est plus grande que 2n pour tout n.

Sinon j'ai calculé directement les espérances, mais avec des sommes que je n'ai pas simplifiées.

Le tout sans aucune garantie, car griffonné en regardant le tournoi des 6 nations.
J'y retourne.

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 19:36

ha ces français qui jouent sans génie ... je bous !!!!  

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 20:32

Car le génie est «sans bouillir».
Ceci étant ce n'est pas le lieu pour une discussion de ce type.

Je viens de regarder pour n=4, en utilisant les puissances de matrices, mes résultats ont l'air cohérents.

J'ai donc la nette impression que palind0 ne pourra pas vérifier le résultat pour n=47 avec une simulation.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 23:43

Pour recoupement voici ce que je trouve :

Pour n=2   E(T) = 4
Pour n=3   E(T) = 8
Pour n=4   E(T) = 64/3

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 23:51

Pour n=3 je trouve E(T)=10.
Sinon mes résultats sont identiques.
Pour n=5, je trouve E(T)=128/3.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 15-03-14 à 23:58

Oups, erreur de retranscription : c'est bel et bien 10 que je trouve aussi pour n=3.

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 00:02

- On prend un tableau de n cases.
- On initialise les n cases à zéro.

Repeat
- On prend une case au hasard
- On y met "1" si elle vaut "0" et "0" si elle vaut 1
- Incrémentation d'un compteur
Until toutes les cases valent "1"

- On lit le compteur.

C'est ça qu'il faut faire ?

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 00:14

En gros oui, si on veut faire une simulation.
Après, il y a quelques problèmes pratiques.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 01:04

Citation :
- On prend un tableau de n cases.
- On initialise les n cases à zéro.

Repeat
- On prend une case au hasard
- On y met "1" si elle vaut "0" et "0" si elle vaut 1
- Incrémentation d'un compteur
Until toutes les cases valent "1"

- On lit le compteur.
C'est ça qu'il faut faire ?

Je vois mal comment tu penses résoudre le problème de cette manière.

On a un hypercube de dimension n.
On part du sommet 000...000 et on passe aléatoirement à un sommet voisin.
Et on recommence des sauts aléatoires...
... jusqu'à ce qu'on atteigne le point extrême 111...111

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 09:56

C'est pour ça que je demandais si c'était ce qu'il faut faire. Au delà de la dimension 3, je ne visualise plus. Comment le passage d'un sommet à un autre se traduit-il dans les coordonnées en dimension n ? J'ai pensé que cela se traduisait par le passage de l'une des n coordonnées (cases) d'un état "1" à un état "0" ou inversement. Le procédé se fait autrement ? Comment ?

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 10:36

allez en dimension 10 ::

quels sont les voisins de (0, 0, 0, 0, 1, 0, 0, 0, 0, 0) ?

en dimension 3 quels sont les voisins de (0, 0, 1) ?

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 10:42

(1;0;1) , (0;1;1) , (0;0;0). En dimension 10, comme je viens de l'écrire, je ne sais pas. Mais si ça fonctionne comme en dimension 3, je ne vois pas où est l'erreur dans mon algorithme.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 13:09

Citation :
Pour N=10, quels sont les voisins de (0, 0, 0, 0, 1, 0, 0, 0, 0, 0) ?


Les N=10 sommets qui diffèrent exactement d'une seule coordonnée :


(0, 0, 0, 0, 1, 0, 0, 0, 0, 0)

(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
(1, 0, 0, 0, 1, 0, 0, 0, 0, 0)
(0, 1, 0, 0, 1, 0, 0, 0, 0, 0)
(0, 0, 1, 0, 1, 0, 0, 0, 0, 0)
(0, 0, 0, 1, 1, 0, 0, 0, 0, 0)
(0, 0, 0, 0, 1, 1, 0, 0, 0, 0)
(0, 0, 0, 0, 1, 0, 1, 0, 0, 0)
(0, 0, 0, 0, 1, 0, 0, 1, 0, 0)
(0, 0, 0, 0, 1, 0, 0, 0, 1, 0)
(0, 0, 0, 0, 1, 0, 0, 0, 0, 1)

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 13:23

Oui, c'est donc bien comme ça que je le voyais. Donc, en quoi mon algorithme ne convient-il pas ?

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 13:26

Citation :
Mais si ça fonctionne comme en dimension 3, je ne vois pas où est l'erreur dans mon algorithme.

OK.
Je n'avais pas compris ce que tu cherchais à faire.
Ton algorithme est impeccable.
Simple, sobre, élégant.
Pour un calcul de simulation.

Pour ma part j'étais orienté sur un algorithme de propagation EXACTE des probabilités.
Autrement dit on part d'un cube de probabilité avec 1 au sommet d'entrée et zéro partout ailleurs.
Puis on calcule le cube des probabilités EXACTES d'être sur chaque sommet après T=1 déplacement, puis T=2, ... etc jusqu'à Tmax.

On reconstitue ensuite l'espérance en pondérant par T la probabilité d'arriver au sommet de sortie au temps T.
Le calcul est exact, à condition d'aller à T infini... ce qui est impossible.
A défaut, on doit pouvoir trouver un majorant de l'erreur pour un temps Tmax suffisamment supérieur à l'espérance calculée en continue.
Donc on peut en principe obtenir une valeur aussi approchée qu'on le souhaite.

Vu la simplicité de l'algorithme stochastique que tu proposes, ça vaut le coup de le tester pour comparer avec l'algorithme de deuxième type.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 13:30

Finalement, l'algorithme STOCHASTIQUE peut s'avérer très intéressant.
Il est très possible qu'il fournisse une valeur approchée de E(T) plus rapidement que l'algorithme par PROBABILITES EXACTES (tronqué à Tmax), parce qu'il est bien plus rapide sur chaque itération.

En revanche, il peinera à fournir une valeur proche.

Posté par
carpediem
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 13:48

ha je comprends mieux ... je me demandais ce que tu ne comprenais pas ...

par contre comme je l'ai dit plus haut et verdurin a proposé encore mieux, si l'espérance est supérieure à 2n alors pour en avoir une "bonne" approximation il va falloir proposer un TMAX assez conséquent si n = 47 par exemple .... pour pouvoir faire une simulation qui conduise à un résultat acceptable ....

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 15:37

Pour n=47 je trouve E(T)= 42371436350940931526480650829824 / 294362129962575675 1.43943231952e+14.

Pour le calcul j'ai considéré les ensembles de sommets S_k pour k\in \{0,\dots n\} un sommet étant dans S_k quand il a k composantes égales à 1.
Quand on est sur un sommet de S_k toutes les arêtes conduisent soit à un sommet dans S_{k+1} (avec une probabilité de \frac{n-k}{n}), soit à un sommet dans S_{k-1} (avec une probabilité de \frac{k}{n}).
Ensuite on peut trouver une relation de récurrence pour déterminer l'espérance du nombre de mouvements permettant de passer de S_{k} à S_{k+1}.

Après il reste à faire faire l'addition par un machine.

Dans tous les cas que j'ai regardé il faut, en moyenne, 2^n-1 mouvements pour passer de S_{n-1} à S_{n}, c'est à dire pour arriver au sommet final à partir d'un sommet voisin.

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 16:31

Bon, j'ai tenté de faire un algo en turbo pascal. Pour n=3, je retrouve bien E(T) = 10 et pour n=5 E(T) = 42.66 (mais il faut faire 1 000 000 de simulation pour arriver à ce résultat de façon stable).
Pour n=35, il faut jusqu'à 9 minutes à la machine pour faire UNE simulation. J'ai trouvé une valeur de 1.47*10^10 itérations. Pour n=47, je suppose qu'il faudrait au moins 2 jours pour parvenir au résultat d'UNE simulation.

Des premiers résultats que j'ai obtenus, E(T) semble suivre une loi exponentielle en fonction de n.

Pour n=47, je trouve alors une estimation pour E(T) = 9.8*10^13 ce qui est proche du résultat de Verdurin.

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 16:34

Estimation réalisée sur Excel, je précise.

Posté par
palind0
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 18:07

verdurin, ton algorithme de calcul m'intéresse. (celui qui t'a mené au résultat de la dimension 47)

Comme un idiot, j'ai laissé les papiers qui traitent du sujet dans mon appartement, je ne pourrais les consulter qu'à partir de demain. C'est parfaitement de cette méthode dont il était question sur le papier pour calculer les espérances pour d quelconque, je me souviens l'avoir lu, mais ne pas l'avoir compris... Car on nous dit de démontrer des formules à la suite (raisonnement assez compliqué) qui mènent à un résultat, qui permet de calculer donc l'espérance pour d quelconque. Je vais tâcher de mettre demain soir les différentes démonstrations qui mènent à la formule (en fait ça se fait en 3 étapes).

Peux-tu préciser la phrase " Ensuite on peut trouver une relation de récurrence pour déterminer l'espérance du nombre de mouvements permettant de passer de Sk à Sk+1. " ?

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 18:32

Il s'agit de calculer l'espérance a_k du nombre de mouvements pour arriver en S_{k+1} en partant de S_k.

On a a_0 = 1 de façon évidente : en partant de (0..0) on arrive forcément sur un sommet ayant une seule coordonnée égale à 1, donc dans S_1.

Ensuite, on peut exprimer a_k en fonction de a_{k-1} (ainsi que k et n).
Après on peut calculer numériquement les a_k et donner l'espérance du nombre de mouvements pour aller de (0...0) à (1...1) en faisant la somme de 0 à n-1 des a_k.

Il est peut-être possible de donner une formule pour le résultat, mais je n'ai rien vu (et pas beaucoup cherché).

Posté par
palind0
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 18:48

En fait j'ai retrouvé la feuille. Voilà ce qui y est exposé, et qui permet donc de trouver la formule générale :

1. On considère la marche aléatoire sur un carré, on note T la matrice de transition.
Montrer que la probabilité que, partant du sommet a, le marcheur ne passe pas par b a avant le temps N vaut :
Pa[mb > N] = (T*N)ca (la somme s'effectue sur les c)
où T* est la matrice T privée de sa b ième ligne et de sa b ième colonne.
En déduire que, partant d'un sommet du carré, le temps moyen <m> nécessaire pour atteindre le sommet opposé vaut exactement 4.

Bon, rien que cette formule à démontrer me pose déjà problème, j'ai du mal à comprendre ne serait-ce que le terme (T*N)ca ...

Ensuite :

2. On généralise l'exercice précédent en dimension d en réduisant le problème à une marche sur des graphes.
Les noeuds des graphes sont numérotés de 0 à d, le noeud k désignant, dans le d cube correspondant, la collection Sk des sommets ayant k coordonnées égales à  1 et d-k coordonnées nulles ( |Sk| = k parmi d). Chaque sommet de Sk est relié à k sommets de Sk-1 et à d-k sommets de Sk+1. Par conséquent, les probabilités de transition rapportées sur le graphe linéaire comportant d+1 noeuds valent :

(Td)k'k = p(k->k') = (k/d)k',k-1 + [(d-k)/d]k',k+1.

Là encore, je ne comprends pas la formule ni les notations... Si quelqu'un y est habitué je veux bien qu'il m'explique...

3. La question 1 demandait de calculer la moyenne du premier temps de passage au noeud d en partant du noeud 0, que nous notons <md>0, mais on peut aussi bien s'intéresser à <md>k (départ du noeud k < d).
Pour calculer ces quantités, on utilisera la formule de la question 1, ou la relation de récurrence suivante (adaptée à la situation présente) :

Pk[md=N] = (Td)k'kPk'[md= N-1] (la somme s'effectue sur k')

avec Pk[md=0]=k,d et Pd[md=N]=N,0

et on en tirera ensuite le système linéaire :

<md>k=1+(Td)k'k<md>k' (somme sur k'<d) avec k<d.

4. Vérifier qu'avec d=4,5,6,7 on a <md>0= (64/3), (128/3), (416/5), (2416/15).
Etablir finalement une formule aussi générale que possible pour <md>k en termes de k<d et d. Montrer par exemple que <md>d-1 = 2d-1


Voilà donc le problème un peu éclairci, mais pour ma part ça ne l'est pas puisque je ne comprends pas la plupart des formules exposées...

verdurin, les quelques formules exposées sont les mêmes que tu as mises en oeuvre tout à l'heure. C'est rassurant...

Posté par
palind0
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 18:58

Excuse-moi d'être aussi peu à l'aise dans les probabilités, je vais tenter d'appliquer ta méthode, mais quelle est la formule à appliquer pour calculer l'espérance ?
Je vais déjà regarder pour d=2,3,4 et essayer de trouver une formule de récurrence.

Dans le carré, l'espérance a0 pour passer de S0 à S1 est de 1, mais quelle est l'espérance a1 de passer de S1 à S2 ?

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 16-03-14 à 22:07

Sans aucune garantie, car je ne connais pas ces notations.

Je pense que (T*N)ca désigne la somme de la colonne correspondant au point a dans la matrice T* élevée à la puissance N.
En tous cas ça donne bien la probabilité cherchée.

(Td)k'k = p(k->k') = (k/d)k',k-1 + [(d-k)/d]k',k+1 dit que la probabilité de transition entre Sk et Sk' vaut
     k/d si k'= k-1
     (d-k)/d si k'=k+1
     0 sinon
le est le symbole de Kronecker (voir )
ce qui me semble une façon très pédante de s'exprimer.

Sur ce, je vais dormir.
En espérant t'avoir au moins un peu aidé.
À demain, peut-être.

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 17-03-14 à 11:01

Pendant que j'y pense je rajoute un résultat utile, que tu ne connais peut-être pas :
Soit X  une variable aléatoire à valeurs dans \N

\text{E}(X)=\sum_{k\in\N}k\cdot\text{P}(X=k)=\sum_{k\in\N}\text{P}(X>k)


En ce qui concerne la récurrence, je te donnes mon calcul.

Je note a_k l'espérance de la variable aléatoire qui donne le nombre de mouvements pour aboutir à S_{k+1} en partant de S_k, p_k=\frac{n-k}{n} la probabilité de la transition T_{k,k+1} et q_k=\frac{k}{n} la probabilité de la transition T_{k,k-1}


a_k=p_k\cdot1 + q_k\cdot(1+a_{k-1}+a_k) par linéarité de l'espérance.

Il en découle immédiatement a_k=\dfrac{1+q_k a_{k-1}}{p_k}=\dfrac{n+k a_{k-1}}{n-k}

Posté par Profil Dlzlogicre : Marche aléatoire : un algorithme pas facile... 17-03-14 à 14:01

Bonjour,
Je trouve ce problème vraiment intéressant.
D'abord, petit commentaire perso, l'expression "valeur exacte" m'étonne toujours, sauf s'il s'agit de nombre entiers.

Je me suis amusé à "construire" un hypercube. C'est pas vraiment facile, mais c'est intéressant. Chaque sommet a un numéro et je décris le graphe. A mon avis cela ferait un bel exercice d'informatique.

A partir de la dimension 16, ma machine trouve que c'est suffisant.
L'évaluation pour 47, je trouve 1.080 10^14.

La méthode de Nombrilist est vraiment astucieuse, elle est plus rapide que la mienne et j'ai pu aller jusqu'à la dimension 20.
L'évaluation pour 47, je trouve 1.3085 10^14.

Concernant le nombre de simulations et la méthode de Monté-Carlo en général.
A mon avis, 1000 est suffisant pour obtenir une valeur satisfaisante. C'est la limite que j'ai adoptée. Le principe de la méthode est que l'on converge vite, d'où son intérêt.

Enfin, pour l'estimation à la dimension 47, c'est une très bonne application des méthodes de régression. Dans les deux cas, le coefficient de régression R² est 0.999, ce qui autorise à extrapoler.

Posté par
jandri Correcteur
re : Marche aléatoire : un algorithme pas facile... 17-03-14 à 22:39

Bonsoir,

Je confirme le résultat donné par Verdurin:
Pour n=47, E(T_n)=\dfrac{ 42371436350940931526480650829824}{294362129962575675}.

Il existe des formules (mais avec un sigma) pour E(T_n) :
E(T_n)=2^{n-1}\sum_{k=0}^{n-1}\dfrac1{{n-1\choose k}}=n\sum_{k=0}^{n-1}\dfrac{2^k}{k+1}

Il y a quelques informations avec la suite A3149:

Il existe même un développement asymptotique remarquable à tout ordre p (quand n tend vers l'infini):
E(T_n)=2^n(\sum_{k=0}^p\dfrac{a_k}{n^k}+o(\frac1{n^p}))
a_k désigne le nombre de classements de k personnes en admettant des ex-aequos, suite A670: (1,1,3,13,75,541,...) .

Posté par Profil Dlzlogicre : Marche aléatoire : un algorithme pas facile... 17-03-14 à 22:58

Désolé d'être l'empêcheur de tourner en rond, mais à part l'intérêt intellectuel de l'exercice, quel peut être l'intérêt d'un résultat numérique "exact" ?
De toute façon, bien malin celui qui pourra vérifier réellement le résultat !
Petit ajout, dans le monde réel, un résultat à 5 chiffres significatifs, c'est déjà pas mal.

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 17-03-14 à 23:09

@ Dlzlogic
C'est un exercice de math, pas de physique.
Et, pour n=47, quand tu donnes 1.3085 10^14, il n'y a pas 5 chiffres significatifs, mais un seul.

Posté par Profil Dlzlogicre : Marche aléatoire : un algorithme pas facile... 17-03-14 à 23:43

@ Verdurin
Apparemment, le demandeur est dans une école d'ingénieur. Donc, il semble que toutes les études sont centrées sur les notions du monde réel.
Cela n'empêche pas de faire des exercices dans un monde théoriques, les hypercubes, fort intéressants par ailleurs, mais la question posée était très précise, trouver un algorithme qui vérifie ses calculs.
La solution proposée par Nombriliste est tout à fait intéressante, et à l'évidence, cela constitue la meilleure réponse, bien qu'elle soit un peu difficile à comprendre.
Le nombre défini par 1.3085 10^'n'importe quoi' a 5 chiffres significatifs, c'est la définition des chiffres significatifs, on appelle ça aussi "mantisse".
C'est un peu dommage que la discussion ne s'oriente pas plutôt sur la méthode de Nombriliste, de Monté-Carlo, des régressions, c'est à dire de choses plus positives, donc plus intéressantes.    

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 18-03-14 à 00:14

Citation :
Le nombre défini par 1.3085 10^'n'importe quoi' a 5 chiffres significatifs

Dont quatre sont faux, dans le cas qui nous intéresse.

Tu ne comprends vraiment rien à ce qu'est un problème mathématique.

J'ai déjà quitté un forum pour ne plus te croiser.

J'aimerais vraiment que tu ailles répandre ailleurs ta suffisance.
Si il y a encore des des gens pour te supporter.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 18-03-14 à 00:18

Citation :
Apparemment, le demandeur est dans une école d'ingénieur.
Pas tout à fait. Il est en spé et il aspire à entrer dans une école ...

Citation :
Donc, il semble que toutes les études sont centrées sur les notions du monde réel.
Oui si tu veux. J'espère que tu ne revendiques aucun "monopole" sur le réel .

Citation :
Cela n'empêche pas de faire des exercices dans un monde théoriques, les hypercubes, fort intéressants par ailleurs,
Non pas "par ailleurs". Ils sont au centre du sujet.
Il serait absurde de tenter d'aborder le sujet en se tenant à l'écart de la réalité mathématique abordée.

La question posée est fondamentalement mathématique

Citation :
mais la question posée était très précise, trouver un algorithme qui vérifie ses calculs.

Je ne crois pas qu'elle se réduisait à ça.
Mais quand bien même : je suis certain qu'on pourrait tous s'épargner ce débat stérile et futile sur le bien fondé de telle ou telle forme de réponse.

Surtout quand les réponses sont de cette qualité.
Je suis certain que tu en conviendras.

Surtout que si tu es de formation scientifique, tu devrais être le premier à concevoir tout l'intérêt qu'il y a, en particulier pour un étudiant, à aborder un problème par plusieurs facettes.

Citation :
La solution proposée par Nombriliste est tout à fait intéressante, et à l'évidence, cela constitue la meilleure réponse,
Certainement pas.
Pour plein de raisons diverses.
C'est une réponse très intéressante qui mérite d'être creusée et exploitée.
Et comparée avec profit avec d'autres approches.

Dire que c'est "la meilleure" me parait très étonnant.
Dire que c'est une évidence me semble carrément incongru.

Mais encore une fois : si on peut s'épargner un débat idiot tout le monde y gagnerait.

Citation :
Le nombre défini par 1.3085 10^'n'importe quoi' a 5 chiffres significatifs, c'est la définition des chiffres significatifs, on appelle ça aussi "mantisse".
Verdurin sait ça parfaitement.
Ce qu'il a cherché à te dire, c'est que ton estimation n'a qu'un seul chiffre significatif (les autres sont faux). Si tu avais lu avec plus d'attention, tu aurais compris je pense.

Citation :
C'est un peu dommage que la discussion ne s'oriente pas plutôt sur la méthode de Nombriliste, de Monté-Carlo,

Absolument RIEN ni PERSONNE ne t'empêche d'orienter la discussion comme tu le souhaites.
Alors pourquoi et au nom de quoi veux-tu empêcher les autres d'aborder le sujet comme ils l'estiment juste ?

Citation :
des régressions, c'est à dire de choses plus positives, donc plus intéressantes

... j'hallucine tellement en lisant ça que je ne sais même pas quoi répondre.

Posté par
verdurin
re : Marche aléatoire : un algorithme pas facile... 18-03-14 à 00:33

@ LeDino

\large\color{red}\text{ Contre la bêtise, les dieux eux mêmes luttent en vain.}

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 18-03-14 à 00:54

Bonsoir verdurin ,

J'avoue que j'ai du mal à comprendre une intervention aussi stérile que peu à propos.

Si Dlzogic a des trucs intéressants à dire qu'il les dise et chacun le lira avec intérêt.
Mais là je ne comprends pas ce besoin de diriger l'échange.
Surtout avec une contribution aussi maigre et après un tel niveau de réponse des participants antérieurs.

Et le pire c'est qu'il se revendique de palind0... qui a pourtant clairement exprimé son intérêt pour les pistes que tu lui as ouvertes.

C'est totalement incompréhensible.
Et je n'aime pas ne pas comprendre ...

Posté par
nombrilist
re : Marche aléatoire : un algorithme pas facile... 18-03-14 à 07:47

Ma réponse est évidemment l'une des moins bonnes. Elle n'est que bricolée. La meilleure réponse est celle qui donne le résultat vrai. De toute façon, je n'avais pas le niveau en maths pour trouver ce résultat, mais l'approche algorithmique m'a plu, donc je me suis permis. Peut-être qu'en programmant avec quelque chose de plus puissant que TP, j'aurais pu aller un peu plus loin que n=35 en 9 minutes ? Je ne sais même pas ça.

Posté par Profil Dlzlogicre : Marche aléatoire : un algorithme pas facile... 18-03-14 à 12:46

Bonjour,
Je n'ai pas l'intention d'envenimer le débat.

@ Verdurin : je me disais bien que je t'avais déjà croisé, mais je n'ai pas situé où. Par exemple, est-ce toi qui a introduit dans une discussion un générateur nommé GenRand, ou au contraire, as-tu répondu à un calcul d'une chaîne devant s'écarter d'un axe par force centrifuge ? Peux-tu me donner un indice.  

@ LeDino,
Pour en être sûr, j'ai relu l'ensemble des réponses, y compris les tiennes.
Je ne suis pas intervenu avant d'avoir terminé mes simulations.
Mais avoue que ceci

Citation :

Je ne comprends pas l'intérêt d'une simulation (de type Monte-Carlo) sur un problème où on peut faire un calcul exact.
aurait mérité une réaction.

C'est curieux que tu n'aies pas compris le sens de mon intervention : les "valeurs exactes" pour une espérance du nombre de coups pour atteindre le sommet opposé me parait un peu "poétique".
Par contre, la méthode pour le calculer est intéressante, mais je laisse ça à ceux qui savent le faire.    
Une vérification par une méthode de simulation présente ici tout son intérêt, c'est seulement ce que je voulais signaler.

Posté par
LeDino
re : Marche aléatoire : un algorithme pas facile... 18-03-14 à 13:33

Citation :

Mais avoue que ceci
Citation :
Je ne comprends pas l'intérêt d'une simulation (de type Monte-Carlo) sur un problème où on peut faire un calcul exact.

aurait mérité une réaction.

C'est curieux que tu n'aies pas compris le sens de mon intervention : les "valeurs exactes" pour une espérance du nombre de coups pour atteindre le sommet opposé me parait un peu "poétique".
Par contre, la méthode pour le calculer est intéressante, mais je laisse ça à ceux qui savent le faire.    
Une vérification par une méthode de simulation présente ici tout son intérêt, c'est seulement ce que je voulais signaler.

Bonjour Dlzlogic,

Je n'ai rien à "avouer" .
Tu me poses la question : je te répond.
Ta question est parfaitement légitime et me donne l'occasion de préciser ma pensée, donc pas de souci.

Quand je dis que Monte-Carlo ne présente pas d'intérêt ici, c'est au plan mathématique.
Il existe en effet une approche basée sur l'élévation à la puissance n (infinie) de la matrice de transfert des probabilités.
Cette approche fournit un calcul exact au sens des probabilités.

Si le calcul est conduit littéralement avec un calcul de limite, comme verdurin a entrepris de le faire (avec un certain courage et un talent indiscutable, parce que c'est costaud...), il fournira une réponse exacte.

Pour quelqu'un qui se contenterait d'une solution approchée, cette méthode "exacte" au départ dans son écriture, peut être tronquée en considérant une sommation s'arrêtant au bout d'un temps fini Tmax laissant le temps à l'espérance E(T) de converger.

Au passage, l'approche matricielle peut répondre à une question essentielle, qui est la convergence de cette espérance, ce que Monte-Carlo ne peut pas faire avec la même rigueur. Elle peut aussi fournir une indication sur l'erreur commise sur E(T) pour un Tmax donné, ce qui permet de calculer E(T) à la précision voulue (en allant jusqu'au Tmax garantissant une erreur inférieure au seuil qu'on se fixe).

Pour revenir à Monte-Carlo ma première intervention avait surtout pour but d'alerter palind0 sur le fait qu'il ne pouvait en aucun cas traiter son sujet intégralement avec Monte-Carlo, sans au minimum mentionner le calcul de probabilité matriciel. J'aurais pu le dire différemment, j'en conviens.

Mais si tu as lu correctement mes posts, tu y auras vu que je suis le premier à avoir dans un second temps dit que la méthode pouvait être intéressante à mentionner comme variante à comparer. Personnellement j'aime beaucoup Monte-Carlo. Je l'ai très souvent appliquée dans des tas de situations trop complexes pour offrir des approches directes.

J'ai même dit par ailleurs qu'au vu de la formulation très élégante de nombrilist, Monte-Carlo pouvait éventuellement apporter quelque chose pour une première approximation, avec des performances intéressantes. Je n'ai pas développé ce point mais mon idée est que ce que j'ai appelé algorithme "exact" mais tronqué, requiert la manipulation d'une matrice de probabilité qui peut devenir assez volumineuse.

Donc au plan informatique, on a en balance une méthode de Monte-Carlo dont il serait intéressant d'évaluer les performances, à comparer avec une approche matricielle (tronquée), plus directe, mais traitant de plus gros volumes.
Et quand je parle de comparaison, ce n'est pas pour déterminer un "gagnant".
Pour moi l'ensemble de ces méthodes représente un tout cohérent, qu'il est intéressant d'appréhender globalement.


Voila, si tu veux d'autres précisions, tu n'as qu'a simplement demander.
Et évite le ton polémique. personnellement, ça ne me dérange pas de me faire traiter de "poète", je prendrais plutôt ça pour un compliment .
Mais pour se comprendre, ça ne facilite pas les choses.

Ici tout le monde est de bonne volonté, donc tu n'as pas de raison d'introduire une pollution inutile par des interventions mal dosées.

Et si tu as d'autres points à approfondir : ce sera avec plaisir .

1 2 +




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

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

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 !