¿Cuánto tiempo lleva encontrar un ciclo corto en un gráfico aleatorio?

9

Deje que sea ​​un gráfico aleatorio en bordes. Con una probabilidad muy alta, tiene muchos ciclos. Nuestro objetivo es producir cualquiera de estos ciclos lo más rápido posible.GG(n,n1/2)n3/2G44

Suponiendo que tenemos acceso a en forma de lista de adyacencia, podemos tener éxito con probabilidad constante en el tiempo siguiente manera: seleccione cualquier nodo y comience a generar rutas aleatorias a partir de ; una vez que encontremos dos rutas distintas que comparten un punto final, habremos terminado. Hay puntos finales posibles, y para la paradoja del cumpleaños tendremos éxito con probabilidad constante después de descubrir de ellos.GO(n)v2v2nn

¿Podemos hacerlo mejor? En particular, ¿es posible un algoritmo de tiempo constante que tenga éxito con probabilidad constante?

GMB
fuente
Me parece que este gráfico tiene muy pocos bordes para tener la propiedad que desea, si está utilizando la terminología estándar, es como una muestra conG(n,p)p=(n/C(n,2))=O(n3/2)
kodlu
Gracias, tienes razón en que quise decir (editado). Estos gráficos tendrán s cada vez que dos nodos compartan vecinos, lo que sucede con probabilidad constante por par de nodos. C 42p=n1/2C42
GMB
Estoy usando la terminología aquí ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), donde cada borde se incluye de forma independiente con probabilidad - entonces, aristas en la expectativa. pp(n2)
GMB

Respuestas:

6

No, no puedes superar las consultas de . Explicaré cómo formalizar el bosquejo de prueba de exfret de esto, de una manera que funcione para algoritmos adaptativos. Todo esto se anticipa en la respuesta de exfret; Solo estoy completando algunos de los detalles.Θ(n)

Considere cualquier algoritmo (posiblemente adaptativo) que emita una secuencia de consultas, donde cada consulta es "buscar el borde la lista de adyacencia del vértice " o "probar si los vértices están conectados por un borde". Podemos suponer que no se repite ninguna consulta, ya que cualquier algoritmo que repita una consulta puede transformarse en uno que nunca repita ninguna consulta. Del mismo modo, podemos suponer que el algoritmo nunca realiza una consulta de conectividad en ningún par de vértices que ya se sabe que están conectados por un borde (es decir, probar cuando fue devuelto previamente por una consulta de recuperación en , o era previamente devuelto por una consulta de búsqueda enivv,wv,wwvvw, o previamente probamos la conectividad de ).w,v

Supongamos que denota el evento de que, durante las primeras consultas, más de una consulta de búsqueda no devuelve ningún vértice , y ninguna consulta de búsqueda devuelve un vértice que fue consultado previamente, y que ninguna consulta de prueba de conectividad devuelve "conectado ". Demostraremos que si . De ello se deduce que ningún algoritmo que realice consultas puede tener una probabilidad constante de encontrar un ciclo 4.EkkwPr[Eq]=1o(1)q=o(n)o(n)

¿Cómo probamos esto? Calculemos . Hay dos casos: o bien el ª consulta es una consulta traiga, o se trata de una consulta de prueba de conectividad:Pr[Ek|Ek1]k

  1. Si el ª consulta es una zona de alcance consulta en el vértice , hay vértices mencionados entre los primeros consultas, y si los ª consulta devuelve uno de los que entonces tendremos , de lo contrario tendremos . Ahora la respuesta a la ésimo consulta es uniformemente distribuida sobre un conjunto de vértices, donde contiene todos los vértices que no han sido devueltos por fetch consultas previas sobre , por lo que la respuesta a la ésimo consulta se distribuye uniformemente en un conjunto de tamaño al menoskv2(k1)k1k¬EkEkkSSvknk+1. La probabilidad de golpear al menos uno de estos es , por lo que en este caso, .2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. Si la ésima consulta es una consulta de prueba de conectividad, entonces .kPr[Ek|Ek1]11/n

En cualquier caso, si tenemosq=o(n)

Pr[Ek|Ek1]12(k1)(nk+1).

Ahora,

Pr[Eq]=k=1qPr[Ek|Eq1].

Si , entonceskqn

Pr[Ek|Ek1]12qnq,

entonces

Pr[Eq](12qnq)q.

El lado derecho es aproximadamente . Cuando , esto es .exp{2q2/(nq)}q=o(n)1o(1)

En conclusión: cuando . De ello se deduce que necesita para tener una probabilidad constante de encontrar cualquier ciclo (y mucho menos un ciclo de 4).Pr[Eq]=1o(1)q=o(n)Ω(n)

DW
fuente
"Si la kth consulta es una consulta de prueba de conectividad, entonces ". Estoy pensando ? (Incluso si es así, la conclusión sigue clara, por supuesto)Pr[Ek|Ek1]11/n11/n
Usul
@ usul, oops, sí, gracias! Fijo.
DW
5

Supongamos que solo podemos consultar el borde de la lista de adyacencia de un vértice dado (que supongo que no está ordenado) o si dos vértices dados son adyacentes. En este caso, debería tomar consultas incluso para encontrar un ciclo. Esto se debe a que existe una probabilidad de que todas nuestras consultas del primer tipo devuelvan vértices diferentes y que todas nuestras consultas del segundo tipo devuelvan que los dos vértices no están conectados.in1o(1)

Corríjame si estoy equivocado en algún lugar o si no entiendo el problema.

exfret
fuente
1
Este boceto de prueba me parece que solo funciona para algoritmos no adaptativos (es decir, consultas resueltas de antemano).
usul
@usul ¿Por qué sería ese el caso? De todos modos, solo estamos usando una rama del árbol de decisión.
exfret
Quizás debería aclararlo. Debe quedar claro que si recibimos respuestas a nuestras consultas según lo prescrito, entonces no podemos generar un ciclo de 4 ciclos con probabilidad constante. Sin embargo, para cualquier árbol de decisión de profundidad hay una posibilidad de que se nos envíe una rama de este tipo. o(n)1o(1)
exfret
¡Gracias! Acepté (algo arbitrariamente) la otra versión desarrollada, pero parece que la tienes. Agradezco la respuesta.
GMB
1
@GMB Creo que tomaste la decisión correcta; la otra es una respuesta de mayor calidad y merece ser vista primero por otros.
exfret