É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.
algorithms
graphs
graph-theory
singhsumit
la source
la source
Réponses:
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.
la source
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 nn ré1, . . . , 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 iKn n vje Kn réje vje vje réje= 0 vje j 1 ≤ j ≤ dje
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+ . . . + dn H H M
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 GM M H 1≤i≤n di vi1,...,vidi ui G
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.373 O(n2ω)
la source