09/06/2013, 05:23
|
| 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, 8 meses 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 |