Per questa griglia 2d (il quadrato nero non è penetrabile, il quadrato bianco è):
Vogliotrovareilpercorsocheconsentedispostareunoggettosuunpuntoiniziale(x:18,y:18)suunpuntofinale(x:1,y:1),quadratoperquadrato.Immaginachequestooggettosiaunaformicaounrobot,quindi:
Puòsoloconoscereladirezionedelsuoobiettivo,ladistanzadalsuoobiettivoeseintorno(1quadrato)ilquadratoèpenetrabileomeno.L'oggettopuòconservarelamemoriadelsuopercorso,seèbypassatoperchéprecedentementebloccato,ecc...
- A(x:18,y:18),ladirezioneantXè(x:-1,y:-1)vettore,ladistanzadaXè18square,vector(x:-1,y:-1)èpenetrabile).
- A(x:17,y:17),ladirezioneantXè(x:-1,y:-1)vettore,ladistanzadaXè17square,vector(x:-1,y:-1)èpenetrabile).
- ...
- A(x:11,y:11),ladirezioneantXè(x:-1,y:-1)vettoriale,ladistanzadaXè11square,vector(x:-1,y:-1)ènotpenetrable).
Manonpuòsaperealtrecose.QuindinonpossiamousarequiunalgoritmoA*ol'algoritmodiDijkstra.Immaginachel'oggettosiaunrobotnellatuacasa.Puòtestareogniposizionecomel'algoritmodiDijkstra,macivorrannoduesettimaneperbypassareunasedia.
QualealgoritmopuòessereutilizzatopertrovareilpercorsodaSaXsenza"camminare" su un quadrato nero, in base alle limitazioni "ant" / "robot"?
Ne scrivo alcuni, ma con alcuni problemi come la difficoltà a seguire "wall" e
gira in tondo ...
UPDATE : dopo la risposta di Karl Bielefeldt, scrivo alogithm disponibile qui e procuding: MODIFICA : Finalmente non uso l'ispirazione A *, ma "segui l'ispirazione del muro"
Sei libero di puntare e suggerire miglioramenti!