Reconstruire des graphiques à partir de la distribution des degrés

12

Étant donné une distribution des degrés, à quelle vitesse pouvons-nous construire un graphique qui suit la distribution des degrés donnée? Un lien ou un croquis d'algorithme serait bien. L'algorithme doit signaler un "non" car aucun graphique ne peut être construit et n'importe quel exemple si plusieurs graphiques peuvent être construits.

singhsumit
la source
Bienvenue! Comment est donnée la "distribution des diplômes"? Comme distribution stochastique, comme liste de degrés, ...?
Raphael
1
Voir l'exercice 2.6 ici . Un algorithme pour créer un graphique à partir d'une séquence de degrés donnée est donné.
utdiscant
2
Pour clarifier le commentaire de Raphaël, quand je lis la distribution des degrés , je pense à une distribution probabiliste sur les degrés. Comme le mentionne utdiscant, la séquence des degrés est probablement ce que vous voulez. Si vous voulez dire le sens probabiliste, vous cherchez probablement un algorithme de construction aléatoire qui essaie «d'approximer» la distribution. Cela n'a pas beaucoup de sens pour moi de «signaler un non» dans ce paramètre, cependant, parce que je pense que la plupart des graphiques seront des valeurs aberrantes?
Lucas Cook
Et si vous voulez réellement générer un graphique avec une distribution de degrés donnée, alors cet article semble avoir l'astuce. Il semble que l'algorithme décrit dans mon commentaire précédent soit en fait l'algorithme de Havel-Hakimi dans la réponse de Wu Yin.
utdiscant

Réponses:

9

Si vous voulez savoir comment construire un graphe aussi simple (pas de boucles auto ni de bords parallèles), peut-être que le théorème de Havel-Hakimi est ce que vous cherchez. Vous pouvez le google vous-même, et la page wikipedia Degré (théorie des graphes) est également utile.

Wu Yin
la source
Merci. oui la page wiki est utile dans ce cas ..
singhsumit
11

Si la distribution des degrés est donnée sous forme de liste de degrés, vous pouvez effectuer les opérations suivantes, étant donné nœuds de degrés :D 1 , . . . , d nnd1,...,dn

Créez un graphe complet sur -vertices. Pour chaque sommet dans , copies . Diviser ici signifie, créer un certain nombre de copies avec des bords sur chaque sommet a un bord, mais aucun bord sur les autres copies de . Si supprimez simplement le sommet. Dans le nouveau graphique, appelez ces sommets pour . n v i K n d i v i v i d i = 0 v i j 1 j d iKnnviKndivividi=0vij1jdi

Une fois que vous avez terminé, vous avez un graphe très dense sur sommets; appeler ce graphe . Choisissez votre algorithme préféré pour la correspondance maximum (puisque le graphe est si dense, vous devriez probablement utiliser l' un des algorithmes à base de matrice multiplication rapide) et l' exécuter sur . Cela renverra un correspondant . Si l'appariement n'est pas parfait (c'est-à-dire s'il ne couvre pas tous les sommets) alors votre distribution de degrés était impossible; alors retournez non . H H MN=d1+...+dnHHM

Si vous avez un parfait , supprimez toutes les arêtes qui ne sont pas dans de , puis pour chaque fusionnez les plusieurs sommets en un seul sommet . La fusion de deux sommets signifie les combiner en un seul, de sorte que le sommet résultant a des bords pour chaque sommet dont au moins un de l'original avait un bord. Appelez le graphe résultant ; il a la distribution des degrés souhaitée.M H 1 i n avais i Iv i 1 , . . . , v i d i u i GMMH1indivi1,...,vidiuiG

Le temps d'exécution résultant est où est la constante de l'algorithme de multiplication matricielle le plus rapide (qui au moment de l'écriture est d'environ ). En termes de nombre de sommets dans le graphe résultant, dans le pire des cas, la distribution des degrés étant dense, nous avons .ω 2,373 O ( n 2 ω )O(Nω)ω2.373O(n2ω)

Artem Kaznatcheev
la source
D'après votre explication (assez claire), il n'est pas du tout clair pourquoi la multiplication matricielle entre dans l'équation.
Raphael
2
O(|V||E|)O(N2.5)H