仅使用现有图 G 中的边有效地生成具有最大度 K 的随机子图 (Gs)

计算科学 matlab Python 图论
2021-12-09 18:42:18

我正在寻找一种有效生成随机无向子图的方法GsN顶点,使用来自现有无向图的边的子集G, 大小也一样N, 其中子图只有度数的节点kkmax.

换句话说,我想创建一个具有相同顶点数的新随机图,但具有一组随机的原始边G删除,使得新图的最大度数小于某个阈值。

我已经开发了一种工作算法(MATLAB),它从具有度数的节点中随机修剪边缘k>kmax直到满足这个条件 - 但是我觉得它远非最佳。重要的是新的随机子图具有相同数量的顶点并保持无向(对称)。断开的顶点(不允许输入/输出边)。

理想情况下都是原始图G和新的随机子图Gs应该导致稀疏矩阵(即边缘列表),但是完整的邻接矩阵就足够了。

谢谢!!

1个回答

好的,这是一个有效但部分解决方案:随机选择一个顶点,并从中创建最小生成树这将确保您以最小的度数选择每个顶点和关联的边。当然,该图不太可能包含任何断开的顶点。因此,如果它们存在于原始图中,只需将它们包括在内。如果您想对 MST 施加度数限制,可以在此处查看

在这个阶段,建立一个最小图。然后,您可以从原始图中选择一些随机边并添加它们,直到满足您的学位标准。我将此称为部分解决方案,因为该图将是伪随机的,即唯一的随机源源于初始顶点的选择,以及随后添加的随机边。但这可能仍然对您有用。