ACM_第5章_回溯法.ppt

ACM_第5章_回溯法课案

解向量:(x1, x2, … , xn)表示顶点i所着颜色x[i] 可行性约束函数:顶点i与已着色的相邻顶点颜色不重复。 void Color::Backtrack(int t) { if (tn) { sum++; for (int i=1; i=n; i++) cout x[i] ; cout endl; } else for (int i=1;i=m;i++) { x[t]=i; if (Ok(t)) Backtrack(t+1); } } bool Color::Ok(int k) {// 检查颜色可用性 for (int j=1;j=n;j++) if ((a[k][j]==1)(x[j]==x[k])) return false; return true; } 复杂度分析 图m可着色问题的解空间树中内结点个数是 对于每一个内结点,在最坏情况下,用ok检查当前扩展结点的每一个儿子所相应的颜色可用性需耗时O(mn)。因此,回溯法总的时间耗费是 * 圆排列问题 给定n个大小不等的圆c1,c2,…,cn,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,

文档评论(0)

1亿VIP精品文档

相关文档