Passeggiate casuali

Con memoria, a passo costante in tre direzioni ortogonali, autoevitanti.

Analizziamo il caso in cui l’ubriaco si muove, con passo costante e uguale probabilità di seguire una delle due direzioni ortogonali, in un verso o quello opposto, ma evitando le posizioni in cui è già stato (Self-Avoiding Random Walks in 3D Wolfram Demonstrations Project).

Per creare una lista di queste scelte con Javascript occorre memorizzare le posizioni via via occupate. esempio attraverso una matrice inizializzata

P = [[0,0,0]]; [x,y,z] = [0,0,0]; for (var i=0; i < n; i++) { scelta = [[x+1,y,z],[x,y+1,z],[x-1,y,z],[x,y-1,z],[x,y,z+1],[x,y,z-1]].filter(([x,y,z])=> ! P.some(([x0,y0,y0]) => x==x0 && y==y0 && z==z0)); if (scelta.length>0){ [x,y,z] = scelta[Math.floor(Math.random()*scelta.length)]; P.push([x,y,z]) }else break }

Così ad esempio per passi si ottiene:


Si osservi che in una passeggiata tridimensionale è decisamente più improbabile di quanto accade per quelle bidimensionali di terminarla prima di completare il numero di passi stabilito quando tutte le posizioni vicine sono già state precedentemente occupate.

❮❮