Per risolvere un algoritmo di routing sotto forma di Problema del Commesso Viaggiatore sono arrivato ad una soluzione "vicino più vicino" filtrando cioè solo le connessioni tra nodi (coordinate x,y) adiacenti.
Più nel dettaglio ho ottenuto un'array bidimensionale di nodi dove la chiave primaria è il nodo di partenza, la chiave secondaria il nodo di destinazione ed il valore il peso dell'arco:
Così, seguendo questo esempio...
Il nodo [124,106] è collegato ai nodi [124,110] e [128,106].Codice PHP:array (
[124,106] => Array (
[124,110] => 4
[128,106] => 4
)
[124,110] => Array (
[124,106] => 4
[128,110] => 4
[124,114] => 4
)
[124,114] => Array (
[128,114] => 4
[124,118] => 4
[124,110] => 4
)
[124,118] => Array (
[128,118] => 4
[124,114] => 4
)
[125,102] => Array (
[127,100] => 2.8284271247462
)
[126,122] => Array (
[128,123] => 2.2360679774998
)
)
A sua volta il nodo [124,110] è collegato al nodo sorgente (che dovrà risultare "visitato" e quindi da ignorare) ed ai nodi [128,110] e [124,114] "da visitare".
Ogni "collegamento" (o arco) ha un peso ed il mio scopo è costruire un array multidimensionale e ricorsivo calcolando tutte le possibilità di intersezione e (possibilmente) avente come ultimo valore la somma di tutti gli archi per raggiungerlo.
E' fattibile? Da dove inizio?Codice PHP:array (
[124,106] => Array (
[124,110] => Array (
[128,110] => Array (
[...]
)
[124,114] => Array (
[128,114] => Array (
[...]
)
[124,118] => Array (
[...]
)
[124,110] => Array (
[...] = Array (
[...] = $somma_degli_archi
)
)
(...)
)
Anticipatamente grato a chiunque mi potrà esser d'aiuto.
Ste

Rispondi quotando