给定一个无向图,使用贪心算法划分其节点,希望集合数目越来越少。
矛盾:贪心算法总是局部最优,对于整个问题的求解不一定是最优的。
想法:使用韦尔奇鲍威尔算法来求解该问题。
鲍威尔算法:把图的节点按度的降序排列,第一种颜色对第一点着色,按照着色顺序把非临阶点着色;然后是第二种。。。。。。直到全部上色。
对于节点集合按照度的降序排列,使用sort方法。
sort(begin,end)表示比较从begin到end的数据,默认是升序
int a[20]
sort(a,a+10);
把数组a的前11个元素升序排列。
实现sort的降序排列需要自己写比较函数
int a[20];
bool compare(int a,int b)
{
return a>b;//降序排列
}
sort(a,a+20,compare);