Lors du test d'algorithmes, une approche courante est le test aléatoire: générer un nombre significatif d'entrées selon une distribution (généralement uniforme), exécuter l'algorithme sur ces derniers et vérifier l'exactitude. Les cadres de test modernes peuvent générer des entrées automatiquement compte tenu de la signature des algorithmes, avec certaines restrictions.
Si les entrées sont des nombres, des listes ou des chaînes, générer de telles entrées de manière simple. Les arbres sont plus difficiles, mais toujours faciles (en utilisant des grammaires stochastiques sans contexte ou des approches similaires).
Comment pouvez-vous générer des graphiques aléatoires (efficacement)? Habituellement, choisir des graphiques de manière uniforme et aléatoire n'est pas ce que vous voulez: ils doivent être connectés, planaires ou sans cycle, ou remplir toute autre propriété. L'échantillonnage de rejet semble sous-optimal, en raison de l'ensemble potentiellement énorme de graphiques indésirables.
Quelles sont les distributions utiles à regarder? Utile ici signifie que
- les graphiques sont susceptibles de bien tester l'algorithme à portée de main et
- ils peuvent être générés de manière efficace et efficiente.
Je sais qu'il existe de nombreux modèles de graphiques aléatoires, donc j'apprécierais un aperçu des meilleurs pour la génération de graphiques à cet égard.
Si "un algorithme" est trop général, veuillez utiliser des algorithmes de recherche de chemin le plus court comme classe concrète d'algorithmes testés. Les graphiques pour les tests doivent être connectés et plutôt denses (avec une probabilité élevée, ou du moins dans l'attente). Pour les tests, la solution optimale serait de créer des graphiques aléatoires autour d'un chemin le plus court afin que nous connaissions le résultat souhaité (sans avoir à utiliser un autre algorithme).