Estoy practicando la solución de problemas de programación. Aquí tengo algunos problemas:
Nos han dado un grafo dirigido $G$ $n\le 100$ nodos y $m\le 1000$ bordes, que son los bordes marcados (las etiquetas son también) con las palabras más corto de $1000$ personajes. Para una palabra dada $s$ ($|s|\le 10^5$) decidir si existe un camino (borde repeticiones están permitidos) $e_1,...,e_n$$G$, de tal manera que después de concatenar las palabras de los bordes $e_1,...,e_n$ (en este orden), llegamos a la palabra $s$.
Por ejemplo, $n=3, m=4$ y bordes: $1\xrightarrow{abc} 2, \ 2\xrightarrow{a} 1, \ 1\xrightarrow{aaa} 2, \ 2\xrightarrow{xyz} 3$, podemos crear la palabra $abcaaaaxyz$
Pero para $n=2, \ m=3$ y bordes: $1\xrightarrow{aa} 2, 2\xrightarrow{aa} 1, 1\xrightarrow{aa} 2$, no podemos crear la palabra $aaaaa$.
Yo estaba pensando acerca de este problema durante mucho tiempo y no sé cómo abordarlo. $G$ parece ser muy pequeño, pero cada recta solución de fuerza bruta será de curso muy lento creo que (la comparación de las palabras, recordando a los estados en la recursivo caminar a través de $G$). Realmente quiero saber cómo resolverlo. Alguien puede ayudar?