En un gráfico , hacemos el siguiente proceso:
- Inicialmente, todos los nodos en son incoloros.
- Si bien hay nodos sin color en , cada nodo sin color hace lo siguiente:
- Selecciona un número real aleatorio y lo envía a todos sus vecinos;
- Compara su número con el número de sus vecinos; Si su propio número es estrictamente más pequeño, el vecino se pinta de rojo y notifica a todos sus vecinos.
- Si un vecino se volvió rojo, entonces este nodo se pinta de negro.
Por ejemplo:
- Supongamos que el gráfico es una ruta: abcde.
- Supongamos que los números en el primer paso son: 1-2-0-3-4.
- Los nodos a y c están pintados de rojo; los nodos byd están pintados de negro.
- En el segundo paso, solo el nodo e permanece sin color; es trivialmente mínimo, por lo que se pinta de rojo.
MI PREGUNTA ES: ¿cuál es el número promedio de pasos que toma este proceso antes de que se coloreen todos los nodos?
Mi cálculo actual me lleva a una estimación de , que parece demasiado buena para ser verdad. Aquí está el cálculo:
Considere un nodo con vecinos. La probabilidad de que sea el más pequeño entre sus vecinos es . Si esto sucede, entonces y todos sus vecinos serán coloreados. Entonces, el número esperado de vértices coloreados en cada paso es por nodo . Por lo tanto, el número total esperado de vértices coloreados en cada paso es , por lo que en el tiempo todos los nodos serán coloreados.
Si este análisis es incorrecto (que probablemente sea el caso), ¿cuál es el número real de pasos?
EDITAR: Como señaló @JukkaSuomela, el algoritmo descrito anteriormente se debe a Metivier et al, 2011 y se explica y analiza en estas notas de clase . Prueban que el tiempo de ejecución es .
Pero todavía no estoy convencido de que este análisis sea estricto. En todos los gráficos que verifiqué, parece que el algoritmo se completa en tiempo esperado.
Mi pregunta ahora es: ¿cuál es el peor gráfico en el que este algoritmo realmente requiere pasos en promedio?