Mi dovrei rileggere ricerca operativa a riguardo, sono molto arrugginito. cmq leggevo
http://en.wikipedia.org/wiki/Nearest...bour_algorithm
http://www.itccalo.it/progetti/FACEB...I/Commesso.htm
Puoi scegliere vari algoritmi che tendenizlamente possono darti una soluzione al problema, anche se non ottima (visto che non esiste un algoritmo che ti dia soluzione ottima al problema)
Quindi, come dice wikipedia, una possibile soluzione è
codice:- These are the steps of the algorithm: - stand on an arbitrary vertex as current vertex. - find out the shortest edge connecting current vertex and an unvisited vertex V. - set current vertex to V. - mark V as visited. - if all the vertices in domain are visited, then terminate. - Go to step 2.
poi come leggi nel secondo link, esistono vari algoritmi che dovrebbero risolvere il tuo problema, come
http://en.wikipedia.org/wiki/Kruskal's_algorithm
http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
carina questa sintesi:
http://raffaelemarino.altervista.org...ui%20grafi.htm
e relativi.
Rileggendo poi il tuo post ho notato che non avevi un peso vero e proprio degli archi, ma avevi punti cartesiani, quindi immagino che i primi algoritmi che cito in questa risposta non vadano bene. Invece nell'ultimo link c'è proprio Example 16.5. Implementation for Solving the Traveling-Salesman Problem che prende in input la lista dei vertici, il vertice di partenza, e calcola lo spanning tree minimo per unire tutti i vertici. Dovrebbe essere quello che cerchi.
Le mie conoscenze di teoria dei grafi finiscono qui, mi spiace![]()

Rispondi quotando