Come trovare il tempo di esecuzione di un algoritmo che coinvolge l'euristica

0

Sto lavorando con l'algoritmo A *, in cui ho una griglia 2D e dati due punti, trova la distanza più breve tra di loro, pur senza imbattersi in alcun ostacolo.

Ora, per ogni cella, trovo la distanza dalla sorgente e calcola la distanza dalla destinazione. Aggiungi le due quantità e quella che ha il valore minimo, quella cella è considerata successiva.

Ora, come faccio a calcolare il tempo di esecuzione di tale algoritmo, dal momento che non saprò mai quante volte questo processo verrà ripetuto. Quante celle dovrò lavorare con, prima di raggiungere la mia destinazione. Gentilmente aiuto.

Sto cercando il limite superiore del tempo di esecuzione. In termini di lunghezza del lato della griglia, cioè N

Grazie.

    
posta Kraken 25.04.2013 - 11:25
fonte

1 risposta

2

La tua griglia 2D ha ovviamente N ^ 2 punti.

Il caso peggiore in assoluto è che l'euristica indirizza sempre erroneamente l'algoritmo, quindi l'algoritmo evita il punto di destinazione. Con A *, ciò può accadere con una serie estremamente complessa di ostacoli, in modo che il tentativo di spostarsi verso l'obiettivo sia generalmente una strategia di ricerca non valida.

È possibile costruire una mappa in cui l'unica via verso il target visita ogni singola cellula non bersaglio prima del raggiungimento della destinazione. Avendo costruito quella mappa, puoi rimuovere le barriere che non influenzano in realtà il modo in cui l'algoritmo cerca (l'algoritmo fa ancora la stessa ricerca anche con quelle barriere rimosse) per consentire superficialmente più libertà, tuttavia quella libertà non è mai sfruttata.

Fondamentalmente, ciò significa che il caso peggiore è quadratico - l'algoritmo può cercare ognuna di quelle cellule N ^ 2 prima di trovare il bersaglio.

Un modo per migliorare l'algoritmo è usare una misura della distanza che è sensibile alle barriere - non solo come le mosche-corvo. Ovviamente se l'unica rotta verso il target richiede la visita di ogni cellula che non fa differenza, ma l'euristica è molto meno probabile che indirizzi male la ricerca se c'è una certa libertà di scelta.

Il problema è che ottenere una misura perfetta della distanza è tanto complesso quanto trovare comunque il percorso perfetto verso l'obiettivo. Tuttavia, puoi precomportare una distanza minima possibile per ogni cella se il bersaglio si trova sempre nello stesso punto e utilizzarlo come tabella di ricerca più tardi.

    
risposta data 25.04.2013 - 11:47
fonte

Leggi altre domande sui tag