求一个图的最大完全子图的算法?

2025-06-21 01:58:00
推荐回答(1个)
回答1:

最大完全子图,超超的地址我打不开
用度的方法是不行的,因为完全子图可能每一个结点的度都不一样

我想能不能这样:
从某一个结点开始深度优先遍历,同时用一个路径数组记录下遍历走过的每一个结点,每进入遍历结点,先看看该结点的邻接点是否包含已知路径上的所有结点,若是,则把该结点加入路径数组,继续从新结点遍历;若不是,回溯到上一结点;这样直到无法回溯(另外设置一个访问状态数组VisitIN[],起始结点的所有邻接点VisitIN值为1就无法回溯了)就找到一个完全子图

把起始结点访问状态Visit[]改为1,继续从下一结点出发重复上述过程,直到找到最大的完全子图。(算法的关键是判断某一结点的邻接点是否包含路径数组的所有结点)

不过这样做复杂度是高的了,我还没想到更好的方法。

各点度不一样不要紧,可以降低一级,再查。如下图中,最大度数为3,先找是否有另外3个3度点且都1-1相连,发现没有,就降为寻找有否3个2度点相互都1-1相连,这样就找到了。

2
*
/ \
/ \
*-----*----*----*
2 3 2 1