Dato un grafico aciclico a più teste di dimensione n dove ogni nodo ha al massimo tre figli e tre genitori, esiste un algoritmo non esponenziale per identificare se esiste un percorso di lunghezza n dove due nodi non condividono lo stesso valore, e ogni valore di un set è rappresentato?Soluzione non esponenziale al problema del labirinto?
Fondamentalmente, ho un labirinto n * n in cui ogni spazio ha un valore casuale (1..n). Devo trovare un percorso (dall'alto verso il basso) di n nodi che includa ogni valore.
In questo momento sto utilizzando una ricerca in profondità, ma è T(n) = 3T(n-1) + O(1)
, che è O(3^n)
, una soluzione non ideale.
O confermando le mie paure, o indicandomi nella giusta direzione, sarebbe molto apprezzato.
Modifica: per rendere questo un po 'più concreto, ecco un labirinto con soluzioni (risolto utilizzando la soluzione di profondità).
1 2 5 5 4 1 5 1 3 5 4 1 2 3 2 5 5 4 4 3 4 2 1 2 4 S3, 5, 1, 3, 4, 2, F4 S3, 5, 1, 3, 4, 2, F2 S3, 5, 1, 3, 4, 2, F4 S3, 5, 3, 2, 4, 1, F3 S3, 5, 3, 2, 4, 1, F3 S3, 5, 3, 2, 4, 1, F3 S4, 5, 3, 2, 4, 1, F3 S4, 5, 3, 2, 4, 1, F3 S4, 5, 3, 2, 4, 1, F3 S4, 5, 1, 3, 4, 2, F4 S4, 5, 1, 3, 4, 2, F2 S4, 5, 1, 3, 4, 2, F4 S5, 4, 3, 2, 5, 1, F3 13 total paths`
dovrebbe essere taggato come compito? –
Non è che sto chiedendo "codice, kthxbye". Come parte di un compito di programmazione più ampio, mi sono imbattuto in un problema, e mi chiedo se ho fatto il miglior lavoro possibile, o se dovrei tenere la testa in CLRS e Knuth per altre poche ore e vedere se Mi manca qualcosa. –
Inoltre, il fraseggio è tutto mio. Ci è stata data la descrizione ingenua che ho sintetizzato nel secondo paragrafo. –