vegeta83ssj
19-05-2007, 12:00
Salve a tutti,
devo realizzare un algoritmo euristico per il problema del commesso viaggiatore (ATSP).
I dati di partenza sono una matrice dei costi ("peso" di un arco), il numero di nodi e una rappresentazione a lista di adiacenza del grafo.
Un certo passo dell'algoritmo richiede che io estragga tutti i sottocicli, li memorizzi e di questi vada a selezionare quello col maggior numero di nodi.
Supponendo di avere come lista di adiacenza (già in notazione C, quindi col primo elem=0;)
lista[] = {4,2,3,1,5,6,0}
Abbiamo il ciclo 0->4->5->6->0 di 4 nodi ed il ciclo 1->2->3->1 di 3 nodi.
La mia domanda è:
c'è un qualche algoritmo noto o qualche suggerimento che mi permetta di:
Trovare il ciclo col maggior numero di nodi
Memorizzarlo
Contemporaneamente avere salvare anche gli altri cicli che utilizzerò in seguito insieme al loro numero di nodi
Nel nostro esempio vorrei avere ad esempio:
ciclo uno = {0,4,5,6} con 4 nodi
ciclo due = {1,2,3} con 3 nodi
:help: :help: :help: :help: :help: :help: :help: :help:
devo realizzare un algoritmo euristico per il problema del commesso viaggiatore (ATSP).
I dati di partenza sono una matrice dei costi ("peso" di un arco), il numero di nodi e una rappresentazione a lista di adiacenza del grafo.
Un certo passo dell'algoritmo richiede che io estragga tutti i sottocicli, li memorizzi e di questi vada a selezionare quello col maggior numero di nodi.
Supponendo di avere come lista di adiacenza (già in notazione C, quindi col primo elem=0;)
lista[] = {4,2,3,1,5,6,0}
Abbiamo il ciclo 0->4->5->6->0 di 4 nodi ed il ciclo 1->2->3->1 di 3 nodi.
La mia domanda è:
c'è un qualche algoritmo noto o qualche suggerimento che mi permetta di:
Trovare il ciclo col maggior numero di nodi
Memorizzarlo
Contemporaneamente avere salvare anche gli altri cicli che utilizzerò in seguito insieme al loro numero di nodi
Nel nostro esempio vorrei avere ad esempio:
ciclo uno = {0,4,5,6} con 4 nodi
ciclo due = {1,2,3} con 3 nodi
:help: :help: :help: :help: :help: :help: :help: :help: