Ver Mensaje Individual
  #40 (permalink)  
Antiguo 09/06/2013, 05:23
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Buscar el camino mas largo

Eso no es tener "razón", ya que no había nada en el planteamiento inicial, que "razonablemente" llevara a suponer que los datos iniciales formaran un árbol. Bulter hizo una presuposición que casualmente coincide con el problema que ves.

Ese código que pegas en C#, no devuelve la distancia máxima entre dos hojas, basada en el peso de los nodos.Devuelve la profundidad máxima del árbol (la mayor distancia en nodos del root, a una de sus hojas), independientemente del peso.

Ni devuelve el coste (suma del valor de los nodos), ni el path (nodos recorridos).La función recursiva sólo usa de cada nodo, la propiedad Children, y Children.Count. En ninún lado usa el "id" que pasa en el constructor de los nodos, que se supone que es el peso.En ningún lado hay una suma.

Mira la función recursiva "FindLongestPath".
Ahora, imaginate que estás en el nodo "8" de tu ejemplo.
La función FindLongestPath, para el nodo "8", devuelve 1.
El valor 1, ni es el peso de los nodos (debería ser 7 o 15, dependiendo de la estrategia), ni el camino (array(7) o array(7,8) , dependiendo de la estrategia).

Última edición por dashtrash; 09/06/2013 a las 05:29