Données pour tester les algorithmes de graphe

36

Je cherche une source de jeux de données énormes pour tester l'implémentation d'un algorithme graphique. Veuillez également fournir des informations sur le type / la distribution (par exemple, dirigé / non dirigé, simple / non simple, pondéré / non pondéré) des graphiques de la source s'ils sont connus.

Kaveh
la source
Comment est-ce théorique? :-)
Nils le

Réponses:

17

Je vais essayer de donner une réponse de plus haut niveau que les autres.

Les classes d'entrées suivantes sont souvent utiles pour tester les performances d'un algorithme proposé ou la validité d'une conjecture en théorie des graphes:

  1. Graphes aléatoires : Pour de nombreuses propriétés de graphes, les graphes aléatoires sont extrêmement attendus. Par exemple, le nombre de fois qu'un graphe bipartite complet complet se produit sous la forme d'un sous-graphe est minimisé dans un graphe aléatoire. (C'est une belle conjecture d' Erds-Simonovits et Sidorenko que si est un graphe bipartite, alors le graphe aléatoire avec une densité de contour a dans l'attente le nombre minimum de copies de sur tous les graphes du même ordre et de la densité de contour.) Les distributions spécifiées par des graphes aléatoires sont la source de nombreuses limites inférieures pour les algorithmes de graphes randomisés, selon le principe de minimax de Yao . p HHpH

  2. Graphes structurés : Il s'agit d'une désignation approximative pour une classe de graphes spécialement structurés pour le problème à résoudre. Par exemple, le théorème de Turán dit que le graphe le plus dense sur sommets sans triangle est le graphe complet bipartite ; ce graphique est clairement conçu spécialement pour éviter les triangles.K n / 2 , n / 2nKn/2,n/2

  3. Les graphes "non aléatoires" : ils sont intermédiaires entre être complètement génériques, comme dans les graphes aléatoires, et complètement spécifiques au problème, comme dans les graphes structurés. Par exemple, une telle famille pourrait être des sous-graphes aléatoires de graphes structurés. De tels exemples apparaissent souvent dans la création de variantes plus fortes du lemme de régularité de Szemerédi . Une façon de produire ces exemples consiste à définir le "pseudo-aléatoire" en modélisant les entrées aléatoires, de sorte que pour les entrées pseudo-aléatoires, vous puissiez montrer que votre algorithme ou votre conjecture fonctionne. Ensuite, vous identifiez les obstructions à la pseudo-aléatoire, et les graphes contenant ces obstructions peuvent alors produire une vaste collection de graphes non aléatoires qui sont des contre-exemples. Une discussion plus compliquée de ce principe peut être trouvée àConférence ICM de Terry Tao en 2006 . Ces graphes non aléatoires correspondent approximativement aux "séquences nil" dans certaines de ses œuvres avec Ben Green et d'autres.

arnab
la source
14

Pour générer des graphiques, j'utilise généralement le gengprogramme fourni avec nauty:

http://cs.anu.edu.au/~bdm/nauty/

Ceci produit des graphes non dirigés (également appelés "graphes"). Pour produire des graphiques dirigés, vous pouvez diriger la sortie par directglaquelle vient également nauty.

L'utilisation de geng convient aux scénarios dans lesquels vous souhaitez tester tous les graphiques (par exemple) jusqu'à des nsommets, ou tous les graphiques connectés avec des marêtes ou quelque chose du genre. Si vous avez des exigences plus spécifiques, veuillez les indiquer dans votre question.

Emil
la source
11

La Stanford GraphBase peut vous aider: http://www-cs-staff.stanford.edu/~knuth/sgb.html

Toutefois, il est fort probable que vous souhaitiez générer les graphiques vous-même et que vous souhaitiez probablement que tous les graphiques générés possèdent (ou non) certaines propriétés. Les graphiques aléatoires sont souvent une mauvaise approximation des graphiques sur lesquels un algorithme est réellement utilisé.

Peter Boothe
la source
9

Pas énorme, mais peut-être encore utile, 3054 "graphes nommés standard" de la collection GraphData de Mathematica

Le format est un graphe par ligne, avec le nom et la liste des nœuds adjacents comme ceci

{<nom du graphe>, {{1, 4}, {1, 5}, {1, 6}, {2, 5}, {2, 6}, {3, 6}}

<nom du graphe> peut avoir la forme "AGraph" ou {"Andrasfai", 6}

Yaroslav Bulatov
la source
S'agit-il de graphiques ou de graphiques dirigés?
Emil
3

Le neuvième défi de la mise en œuvre de DIMACS - Shortest Paths a eu lieu en 2005-2006 dans le but de produire "un ensemble standard d'instances et de générateurs de référence, ainsi que des implémentations de référence d'algorithmes bien connus de type chemin le plus court".

La page de téléchargement contient des graphiques de réseau routier américain compressés allant de 2 Mo à 335 Mo, avec la distance et le poids temporel.

http://www.dis.uniroma1.it/challenge9/download.shtml

J'ai trouvé cela utile pour comparer mes propres implémentations de fonctions graphiques de jouets.

infogulch
la source
0

Vous pouvez utiliser Mousquetaire, voir

https://people.cs.clemson.edu/~isafro/musketeer/index.html

Il s’agit d’un générateur de graphes multi-échelles qui accepte un graphe d’entrée et génère un autre graphe qui peut être arbitrairement similaire à l’original. Les paramètres sont suffisamment souples pour générer une nouvelle structure à différentes résolutions à grains grossiers. Voir des exemples dans la galerie. Ce paquet est idéal pour créer des instances expérimentales pour des algorithmes de vérification et d'analyse comparative.

Ilya Safro
la source