Buenas, como va gente ? Soy nuevo en el foro y queria saber si me podian ayudar a inventar un algortimo.
El codigo en cuestion tendria que hacer lo siguiente: dado un punto P cualquiera, y un conjunto de nodos o puntos N, el algoritmo debe hallar el camino mas corto o de menor costo, tomando como punto de inicio a P, que pase por todos los puntos del conjunto N.
Estuve probando diferentes cosas, pero todavia no llegue a mucho. Lei los algoritmos de Dijkstra (camino mas corto entre dos puntos), Prim / Kruskal (arboles de expansion minima), pero ninguno es lo que necesito.
Estoy programando en C# pero cualquier ayuda me viene bien 

 . Esto es lo que tengo hasta ahora:
public Point[] EncontrarCamino(List<Point> PuntosAVisitar, Point PuntoDeInicio)
{
       int cantNodos = PuntosAVisitar.Count;
       Point[] ret = new Point[cantNodos];
       int[,] TablaCostos = new int[cantNodos, cantNodos];
       for (int i = 0; i < cantNodos; i++)
{
            for (int j = 0; j < cantNodos; j++)
             {
                 if (i == j)
                  {
                      TablaCostos[i, j] = 0;
                  }
                  else
                  {
                      TablaCostos[i, j] = ObtenerCosto(i, j);
                  }
             }
         }
}
Ese cacho de codigo genera una matriz con la tabla de costos desde un punto a otro. 
Desde ya muchas gracias !