6 votos

Algoritmo de la teoría de los gráficos

Tengo un interesante problema de teoría gráfica. Me dan un árbol $T$ con $n$ nodos y un conjunto de aristas. $T$ es, por supuesto, no dirigida. Cada arista tiene un peso que indica cuántas veces (como mínimo) tiene que ser visitada. Estamos paseando de nodo a nodo usando aristas y la tarea es encontrar el mínimo número de pasos necesarios para satisfacer las condiciones anteriores. Puedo empezar desde cualquier nodo.

Por ejemplo, este árbol (peso de la arista a lo largo de la arista):

Mathematica graphics

necesitamos $8$ pasos para recorrer este árbol. Que son, por ejemplo: $4\to5\to6\to5\to3\to5\to3\to2\to1$

No sé cómo enfocar este algoritmo. ¿Es posible encontrar este recorrido óptimo o podemos encontrar este número mínimo no directamente?

4voto

rrirower Puntos 230

Sin duda se puede hacer un algoritmo que lo haga en tiempo polinómico. Así es como puedes hacerlo: primero, resuelve el problema para árboles enraizados. Es decir, suponga que su árbol está rooteado y que su camino tiene que empezar desde el vértice raíz. Si tienes un algoritmo que resuelve el problema para árboles enraizados, entonces puedes encontrar la respuesta al problema original simplemente probando cada vértice como raíz.

En el caso de los árboles enraizados, esto se puede resolver de forma recursiva. No te daré la solución completa (es larga). En su lugar, te daré una pista.

En primer lugar, he aquí cómo sería normalmente el primer intento de solución recursiva. Para un árbol rooteado $T$ con raíz $r$ Llamemos a $f(T)$ la longitud mínima de un camino que comienza en $r$ y visita cada borde tantas veces como sea necesario. Ahora, si suponemos que $f$ puede implementarse como una función recursiva, entonces debería haber una forma de calcular de alguna manera $f(T)$ utilizando valores $f(T_1),\,f(T_2),\,\ldots,\,f(T_k)$ que se calcularon recursivamente para los subárboles $T_i$ cuyas raíces son hijos de $r$ . Pero no hay una forma obvia de hacerlo, y es ahí donde uno suele abandonar el enfoque recursivo.

Pero todavía se puede hacer si se enfoca de forma inteligente, utilizando esta idea: en lugar de calcular sólo $f$ como función recursiva, calcular simultáneamente $f$ y $g$ , donde $g(T)$ es la longitud mínima de un camino que visita cada arista de $T$ la cantidad requerida de veces, comienza en $r$ y también termina en $r$ . Yo digo que $g(T)$ puede calcularse recursivamente a partir de los valores $g(T_i)$ y $f(T)$ también puede calcularse recursivamente a partir de los valores $f(T_i)$ y $g(T_i)$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X