Algorithm 求顶点由集合定义的图的边数的算法

Algorithm 求顶点由集合定义的图的边数的算法,algorithm,graph,set,edges,Algorithm,Graph,Set,Edges,我有一个定义如下的图: 有一组数字{1,2,3,4,5} 图中的每个顶点可以由原始集合中的任意3个数字组合而成,无需重复。例如,一个有效的顶点是{1,2,3} 边存在于恰好相差1个数的任意两个顶点之间。因此,{1,2,3}和{1,2,4}之间有一条边,{1,2,3}和{2,4,5}之间没有边 如何编写算法来查找此图中的边数?我的算法中有两次边数。我不确定正确的方法是什么。我知道有5个,选择3个顶点。C(5,3)只需10个,所以计算边并不困难 更简单的方法:获取任意组合并查找边数: combina

我有一个定义如下的图:

有一组数字{1,2,3,4,5}

图中的每个顶点可以由原始集合中的任意3个数字组合而成,无需重复。例如,一个有效的顶点是{1,2,3}

边存在于恰好相差1个数的任意两个顶点之间。因此,{1,2,3}和{1,2,4}之间有一条边,{1,2,3}和{2,4,5}之间没有边

如何编写算法来查找此图中的边数?我的算法中有两次边数。我不确定正确的方法是什么。我知道有5个,选择3个顶点。

C(5,3)
只需10个,所以计算边并不困难

更简单的方法:获取任意组合并查找边数:

combination
1  2  3 
subcombinations:
1  2         paired 1 2 4; 1 2 5
1     3      paired 1 3 4; 1 3 5
   2  3      paired 2 3 4; 2 3 5
所以我们有六条来自这个组合顶点的边。但从对称性来看,每个顶点有6条边。这样的图称为6-正则图

因此,边的总数为(除以2以消除每条边的重复计数)

如果您确实需要
C(n,k)
组合的通用解决方案:

p = C(n,k) = n!/(k!*(n-k!)) 
NumEdges = p*k*(n-k)/2

啊,我明白了,我没有意识到每条边都被精确地计算了两次,所以我没有想到将最终结果除以二。我现在明白了,这有点类似于在一个完整的图中求边数的公式。非常感谢。
p = C(n,k) = n!/(k!*(n-k!)) 
NumEdges = p*k*(n-k)/2