k-center问题
问题描述
给定一个无向图G(V,E),定义c(v,S)为v到S中点的 c o s t cost cost值当中的最小值,并记为v到S的 c o s t cost cost值。
k-center问题就是找出一个大小为k的点集S,要求所有不在S中的点到S的 c o s t m a x cost_{max} costmax最小。
引申:如果 c o s t cost cost值满足三角不等式,那么该问题就转变成Metric k-center问题。
k-center问题和Metric k-center问题都是NP-hard。
解决思路
首先引入三个概念:最小统治集、最大独立集、极大独立集。
最小统治集:给定一个无向图G(V,E),找出一个最小的点集S,其他所有点都和点集S中的点相邻。NP困难
最大独立集:给定一个无向图G(V,E),找出一个最大的点集S,S中的每个点都互不相邻。NP困难
极大独立集:给定一个无向图G(V,E),找出一个点集S,S中的每个点都互不相邻,且不在S中的点都和点集S中的点相邻。
由定义可知:最大独立集一定是极大的,极大独立集一定是统治集。
Metric k-center问题可以这样解决:
因为 c o s t m a x cost_{max} costmax必定是某条边的长度,可以先猜一个 c o s t m a x cost_{max} costmax,即挑选一条边。
剪去代价大于 c o s t m a x cost_{max} costmax的边,剩下的图称为 G i G_i Gi。
找出 G i G_i Gi的最小统治集 S d o m S_{dom} Sdom。
如果 ∣ S d o m ∣ > k |S_{dom}|>k ∣Sdom∣>k,说明k个点无法覆盖 G i G_i Gi