查找具有给定节点数和边数的图的算法

Algorithm to find a graph with given number of nodes and edges

我有很多节点,每个节点都有很多边。 例如节点 A 有 3 条边,B 有 2 条边,C 有 2 条边,D 有 1 条边。我正在寻找一种算法,以找到两个节点之间没有多条边的可能无向图。 这个简单示例的可能解决方案是:

   A
  /|\
 / | \
B--C  D

所以A与其他3个节点相连,因为它有3个连接,B与A和C相连,D与A相连。 必须满足所有节点的所有边。 另一个例子:

A(3), B(3), C(2), D(1), E(1)

解决方案:

     A-----D       OR:       A-----E
    / \                     / \
   /   \                   /   \
  C-----B-----E           C-----B-----D

所以,有时会有多种解决方案。但这也是可能的,因为没有解决方案,例如 A(2), B(2), C(1)

无法用这 3 个节点及其给定的边数制作图。

现在,我正在寻找一种算法来为这个问题找到可能的解决方案。是否可能已经存在这样的已知问题? 我很乐意提供任何帮助或提示。

这被称为 Graph Realization Problem

Erdős–Gallai theorem gives an easily-coded criterion for deciding when it is solvable and the Havel–Hakimi algorithm 给出了构造这种图的递归方法。我最喜欢的图论书籍之一,Harsfield 和 Ringel 合着的 "Pearls in Graph Theory" 对 Havel–Hakimi 算法进行了很好的讨论。