Tengo un árbol en el que a cada borde se le asigna un peso (un número real que puede ser positivo o negativo). Necesito un algoritmo para encontrar un camino simple de peso total máximo (es decir, un camino simple donde la suma de los pesos de los bordes en el camino es máxima). No hay ninguna restricción en cuanto a qué nodo comienza o termina el camino.
Tengo un posible algoritmo, pero no estoy seguro de que funcione y estoy buscando una prueba. Aquí la tiene:
- Seleccione un nodo arbitrario u y ejecutar DFS( u ) para encontrar el camino simple del peso máximo que comienza en u . Dejemos que u , v ) sea este camino.
- Ejecute el DFS( v ) para encontrar el camino simple del peso máximo que comienza en v . Que este camino sea ( v , z ).
Entonces ( v , z ) es un camino simple de peso máximo. Este algoritmo es lineal en el tamaño del gráfico. ¿Alguien puede decirme si funciona, y si es así, dar una prueba?
Nota: El El problema del camino más largo es NP-Duro para un gráfico general con ciclos. Sin embargo, aquí sólo considero los árboles.