造价通

反馈
取消

热门搜词

造价通

取消 发送 反馈意见

最大完备子图C 算法示例

2022/07/16186 作者:佚名
导读:回溯算法可作为类AdjacencyGraph的一个成员来实现,为此首先要在该类中加入私有静态成员x(整型数组,用于存储到当前节点的路径),b e s t x(整型数组,保存目前的最优解),b e s t n(b e s t x中点的数量),c n(x中点的数量)。所以类AdjacencyGraph的所有实例都能共享这些变量。 函数maxClique是类AdjacencyGraph的一个私有成员,而

回溯算法可作为类AdjacencyGraph的一个成员来实现,为此首先要在该类中加入私有静态成员x(整型数组,用于存储到当前节点的路径),b e s t x(整型数组,保存目前的最优解),b e s t n(b e s t x中点的数量),c n(x中点的数量)。所以类AdjacencyGraph的所有实例都能共享这些变量。

函数maxClique是类AdjacencyGraph的一个私有成员,而MaxClique是一个共享成员。函数maxClique对解空间树进行搜索,而MaxClique初始化必要的变量。MaxClique( v )的执行返回最大完备子图的尺寸,同时它也设置整型数组v,当且仅当顶点i不是所找到的最大完备子图的一个成员时,v [ i ] = 0。

最大完备子图

voidAdjacencyGraph::maxClique(inti)
{//计算最大完备子图的回溯代码
if(i>n){//在叶子上
//找到一个更大的完备子图,更新
for(intj=1;j<=n;j  )
bestx[j]=x[j];
bestn=cn;
return;}
//在当前完备子图中检查顶点i是否与其它顶点相连
intOK=1;
for(intj=1;j
 
  bestn){//尝试x[i]=0
x[i]=0;
maxClique(i 1);}
}
intAdjacencyGraph::MaxClique(intv[])
{//返回最大完备子图的大小
//完备子图的顶点放入v[1:n]
//初始化
x=newint[n 1];
cn=0;
bestn=0;
bestx=v;
//寻找最大完备子图
maxClique(1);
delete[]x;
returnbestn;
}

 

*文章为作者独立观点,不代表造价通立场,除来源是“造价通”外。
关注微信公众号造价通(zjtcn_Largedata),获取建设行业第一手资讯

热门推荐

相关阅读