Encontrar un ciclo de cualquiera , incluso de longitud se pueden encontrar en $O(n^2)$ del tiempo, que es menos conocida obligado en $O(M(n))$. Por ejemplo, un ciclo de longitud cuatro se encuentran en $O(n^2)$ momento a través del siguiente procedimiento:
Suponga que el conjunto de vértices es $\{1,...,n\}$. Preparar un $n$ x $n$ matriz $A$ que es principio de todos los ceros. Para todos los vértices $i$ y todos los pares de vértices $j, k$ que son vecinos a $i$, compruebe $A[j,k]$$1$. Si tiene un $1$, la salida de ciclo de cuatro, de lo contrario, establezca $A[j,k]$$1$. Cuando este bucle termina, la salida de ningún ciclo de cuatro.
El algoritmo anterior se ejecuta en la mayoría de los $O(n^2)$ tiempo, ya que para cada triple $i,j,k$ podemos mover de un tirón un $0$$1$$A$, o nos detenemos. (Suponemos que el gráfico está en la lista de adyacencia de la representación, por lo que es fácil para seleccionar pares de vecinos de un vértice.)
El caso general es tratada por Raphy Yuster, y Uri Zwick en el papel:
Rafael Yuster, Uri Zwick: Encontrar Ciclos Incluso Más Rápido. SIAM J. la Matemática Discreta. 10(2): 209-222 (1997)
Como para buscar los ciclos de longitud impar, es igual de David Eppstein dice: no hay nada mejor que se conoce de $O(M(n))$, incluyendo el caso en que $k=3$.
Sin embargo, si usted desea detectar caminos de longitud $k$ en lugar de ciclos, de hecho, puede usted conseguir $O(m+n)$ el tiempo, donde el $m$ es el número de aristas. No estoy seguro de si el original de la codificación de colores de papel puede proporcionar esta limitada en el tiempo, pero sí sé que el siguiente trabajo por algún azar de la auto-citando nerd obtiene:
Ryan Williams: la Búsqueda de caminos de longitud k en S*(2^k) tiempo. Inf. Proceso. Lett. 109(6): 315-318 (2009)