algo : déplacement aléatoire

algo : déplacement aléatoire - Aide aux devoirs - Emploi & Etudes

Marsh Posté le 11-11-2008 à 17:20:38    

Bonjour,
je suis en train de faire un algorithme dont le sujet est le suivant :
 
Une blatte ivre est placée sur un carré au milieu d'un sol carrelé dans une pièce rectangulaire de taille n*m carreaux. L'insecte erre (à la recherche d'un aspirine) aléatoirement de carreau en carreau dans la pièce. En supposant qu'il puisse aller du carreau courant sur chacun des huit carreaux environnants (à moins qu'il ne soit devant un mur)  avec une probabilité équivalente, combien de temps lui faudra-t-il pour toucher chaque carreau sur le sol au moins une fois.
 
Ce problème est difficile à résoudre en utilisant les techniques de probabilité pure mais est beaucoup plus simple à résoudre avec un ordinateur. La technique employée est appelée simulation. Cette technique est largement utilisée dans l'industrie pour prévoir les flux de trafic, contrôle d'inventaire, etc. Le problème peut être simulé en utilisant la méthode suivante:
 
Un tableau count de n*m est utilisé pour représenter le nombre de fois que notre blatte atteint chaque carreau sur le sol. Toutes les cellules de ce tableau sont initialisée à zéro. La position de l'insecte sur le sol est représentée par les coordonnées (ibug, jbug). Les huit déplacements possibles de l'insecte sont représentés par les carreaux localisés dans:
 
(ibug + imove[k], jbug + jmove[k]) où 0=< k =< 7 et
imove[0] = -1  jmove[0] = 1
imove[1] = 0  jmove[1] = 1
imove[2] = 1  jmove[2] = 1
imove[3] = 1  jmove[3] = 0
imove[4] = 1  jmove[4] = -1
imove[5] = 0  jmove[5] = -1
imove[6] = -1  jmove[6] = -1
imove[7] = -1  jmove[7] = 0
 
Un déplacement aléatoire sur chacun des huit carreaux voisins est simulé en générant une valeur aléatoire pour k entre 0 et 7. Bien sûr, l'insecte ne peut pas aller en dehors de la pièce, donc les coordonnées traversant un mur doivent être ignorées, et une nouvelle valeur doit être générée. Chaque fois qu'un carreau est rencontré, le compte de ce carreau est incrémenté de sorte qu'une entrée non nulle montre le nombre de fois que l'insecte atterri sur le carreau. Quand chaque carreau a été traversé au moins une fois, l'expérience  est terminée.
 
A/ Traiter toutes les valeurs de n et m, 2=< n =<40 et 2=< m =<20
 
Je décompose le programme en procédure.

Code :
  1. Debut
  2.      procedure choix_taille
  3.      procedure initialiser_tableau
  4.      procedure incrementer_cases    //procedure qui fait déplacer la blatte de manière aléatoire
  5. Fin


       

Code :
  1. procedure choix_taille
  2.         entier : n, m
  3.      
  4. Tant que m<2 ou m>20 faire
  5.  afficher "saisissez la taille m du tableau:"
  6.  entrer m
  7. Refaire
  8. Tant que n<2 ou >40 faire
  9.  afficher "saisissez la taille n du tableau:"
  10.  entrer n
  11. Refaire
  12. finproc


 
 
       

Code :
  1. procedure initialiser_tableau (dr Tab : tableau[2..n][2..m] d'entier)
  2. entier : i,n,j,m
  3. Pour i depuis 2 jusqu' à n faire
  4.  Pour j depuis 2 jusqu'à m faire
  5.   Tab[i,j]=0
  6.  Finpour
  7. Finpour
  8.        finproc


 
 
 

Code :
  1. procedure incrementer_cases
  2. entier : ibug, imove, jbug, jmove
  3. Comment récupérer la taille du tableau choisis par l'utilisateur dans la première procédure?
  4. Comment faire pour ne pas sortir du tableau?
  5.            Comment faire déplacer la blatte de manière aléatoire tout en respectant les contraintes (les murs et la blatte se déplace sur 1 des 8 carreaux qui entoure sa position)?
  6. Comment parcourir le tableau jusqu'à ce que toutes les cellules aient une valeur supérieure à 0?
  7. Finproc


 
Merci à ceux qui m'aideront.
 
Cordialement.


Message édité par slr56 le 11-11-2008 à 17:24:50
Reply

Marsh Posté le 11-11-2008 à 17:20:38   

Reply

Marsh Posté le 11-11-2008 à 20:58:30    

up svp

Reply

Marsh Posté le 12-11-2008 à 14:24:41    

up svp je bloque

Reply

Marsh Posté le 12-11-2008 à 14:26:50    

comment une blatte peut elle prendre de l'aspirine ?

Reply

Marsh Posté le 12-11-2008 à 14:58:38    

capitaineigloo a écrit :

comment une blatte peut elle prendre de l'aspirine ?

C'est juste pour transformer le sujet en "histoire"...  
 

Reply

Marsh Posté le 12-11-2008 à 15:15:29    

c'est quoi qui te bloque exatcement ? montre nous tes pistes de recherche on pourra t aider


---------------
une qui prend chére :/ -> http://fr.youtube.com/watch?v=jn9cQd57FVE
Reply

Marsh Posté le 25-11-2008 à 14:37:08    

meringue7 a écrit :

c'est quoi qui te bloque exatcement ? montre nous tes pistes de recherche on pourra t aider

salut, désolé de répondre que maintenant mais avec tous les projets que j'ai en ce moment, j'ai du laissé ce programme de côté durant quelques temps.
 
Ce qui me bloque c'est comment dire en langage que je dois me déplacer de cellule en cellule sans sortir du tableau et ce jusqu'à ce que toutes les cellules aient une valeur>0. (1 passage : valeur_cellule=valeur_cellule+1).
 
Donc j'ai pensé à faire quelque chose de la manière suivante :

Code :
  1. Pour i depuis 1 jusqu'à n faire
  2.             Pour j depuis 1 jusqu'à m faire
  3.                 Tant que "toutes les valeurs du tableau ne sont pas>0" faire
  4.                        tab[i,j]=tab[i,j]+1
  5.                 refaire
  6.            finpour
  7.        finpour


 
Mais comment traduire "toutes les valeurs du tableau ne sont pas>0" ?
 
 


Message édité par slr56 le 25-11-2008 à 14:38:18
Reply

Marsh Posté le 25-11-2008 à 17:06:25    

up

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed