Cuando se prueban algoritmos, un enfoque común es la prueba aleatoria: generar una cantidad significativa de entradas de acuerdo con alguna distribución (generalmente uniforme), ejecutar el algoritmo en ellas y verificar la corrección. Los marcos de prueba modernos pueden generar entradas automáticamente dada la firma de algoritmos, con algunas restricciones.
Si las entradas son números, listas o cadenas, generar dichas entradas en forma directa. Los árboles son más difíciles, pero aún así fáciles (usando gramáticas estocásticas sin contexto o enfoques similares).
¿Cómo puedes generar gráficos aleatorios (eficientemente)? Por lo general, elegir gráficos al azar de manera uniforme no es lo que desea: deben estar conectados, ser planos, estar libres de ciclos o cumplir con cualquier otra propiedad. El muestreo de rechazo parece subóptimo, debido al conjunto potencialmente enorme de gráficos indeseables.
¿Cuáles son las distribuciones útiles para mirar? Útil aquí significa que
- es probable que los gráficos prueben bien el algoritmo en cuestión y
- se pueden generar de manera efectiva y eficiente.
Sé que hay muchos modelos para gráficos aleatorios, por lo que agradecería una idea de cuáles son los mejores para la generación de gráficos a este respecto.
Si "algún algoritmo" es demasiado general, utilice algoritmos de búsqueda de la ruta más corta como una clase concreta de algoritmos bajo prueba. Los gráficos para las pruebas deben estar conectados y ser bastante densos (con alta probabilidad, o al menos en expectativa). Para las pruebas, la solución óptima sería crear gráficos aleatorios alrededor de una ruta más corta para que sepamos el resultado deseado (sin tener que emplear otro algoritmo).
Respuestas:
Gráficos aleatorios con topología de mundo pequeño.
En gráficos con topología de mundo pequeño. , los nodos están muy agrupados pero la longitud de la ruta entre ellos es pequeña. Una topología como esta puede dificultar los problemas de búsqueda, ya que las decisiones locales se propagan rápidamente a nivel mundial. En otras palabras, los atajos pueden confundir la heurística. Además, se ha demostrado que muchos problemas de búsqueda diferentes tienen una topología mundial pequeña.
El modelo de Watts y Strogatz es algo popular, pero tiene ciertos inconvenientes. Walsh [2] investiga los efectos de la aleatorización y las estrategias de reinicio en los gráficos generados con el modelo. También hay un artículo de Virtanen [3], que cubre otros modelos motivados por la necesidad de modelos realistas de sistemas complejos.
Gráficos planos simples aleatorios
Para una introducción ligera, vea una presentación de Fusy .
[1] DJ Watts y SH Strogatz. Dinámica colectiva de redes de 'mundo pequeño'. Nature, 393: 440-442, 1998 .
[2] Toby Walsh. Busca en un mundo pequeño. Actas de la 16ª Conferencia Internacional Conjunta sobre Inteligencia Artificial (IJCAI-99-Vol2), páginas 1172-1177, 1999 .
[3] Satu Virtanen. Propiedades de los modelos de gráficos aleatorios no uniformes. Informe de investigación A77, Universidad Tecnológica de Helsinki, Laboratorio de Ciencias de la Computación Teórica, 2003 .
[4] O. Giménez y M. Noy. Enumeración asintótica y leyes de límites de gráficos planos, arXiv math.CO/0501269. Un resumen extendido ha aparecido en Discrete Mathematics and Theoretical Computer Science AD (2005), 147-156 .
[5] E. Fusy. Generación cuadrática y lineal de tiempo de gráficos planos, Matemática discreta y Ciencias de la computación teórica AD (2005), 125-138 .
[6] P. Duchon, P. Flajolet, G. Louchard y G. Schaeffer. Muestra de Boltzmann para la generación aleatoria de estructuras combinatorias. Combinatorics, Probability and Computing, 13 (4-5): 577-625, 2004 .
fuente