From: Lars H. <Lar...@re...> - 2009-06-27 14:38:04
|
Michał Antoniewski skrev: > - for each Gi^2 we seek for maximum independent set Mi. Just to clear: > finding maximal is of course NP hard, we seek for maximum set. You've got maximum and maximal the wrong way round here. Finding one maximal (w.r.t set inclusion) independent set is easy (add vertices until you've covered the graph). Finding one that achieves the maximum cardinality is hard. But now that I think about it... is this really what you want? The next steps being > - let the j be the min index, such that |Mj| <= k. > > - return Mj. it would seem more natural to seek a set which is somehow minimum here (as that would make it easier to meet this condition) than to pick the maximum. Indeed, given that > The goal is to find such S, that |S| = k, and maxv { connect(v,S) } is as > small as possible. it seems more like you're after a minimal covering than a maximal independent set. Going to the square complicates the picture somewhat, but it still looks to me as though your algorithm won't work. Consider the case that Gi is the path u--v--w. The square of this is the complete graph on these vertices, so a maximal independent set contains one vertex. If you pick u or w, then you won't cover all of Gi, which seems bad (it can be argued that connect(w,{u}) is infinite). Also, there is the brute force approach of simply iterating over all k-subsets S of V, computing maxv { connect(v,S) } for all. For small fixed k this seems faster than what you're about to do, so it might be considered as an alternative algorithm for solving the problem as stated. (It could of course be that this range of parameters if fairly uninteresting.) Lars Hellström |