具有一定密度的最大点子集

时间:2016-04-21 14:03:40

标签: algorithm graph-algorithm np

假设在2D平面中有一组点S,如何从S中移除最小点数,使得任意两个剩余点之间的距离不小于常数R.

我想这可能是NP难的。有谁能建议快速近似解决方案?谢谢!

2 个答案:

答案 0 :(得分:1)

我的朋友建议合理的解决方案:

构造一个图G,其中所有边都小于R.要删除的点集与图G的最小顶点覆盖相同。顶点覆盖的近似是多项式时间。

答案 1 :(得分:0)

这个很快但不是最小点数。请记住,循环应处理在删除或禁用点时设置S的更改。

$string = '&OrigPlacedDate=41759.7128&';
$origPlacedDate = '/&OrigPlacedDate=([0-9]+\.[0-9]+)&/';
preg_match($origPlacedDate, $string, $origPlacedDateMatches);
echo $origPlacedDateMatches[1];

为了最低限度但价格昂贵:

 For each Point P1 in S
 {
       For each Point P2 after P1 in S 
       {
             If (square(P1.x - P2.x) + square(P1.y - P2.y) < square(R) )
             {
                   remove (P2)
             }
       }
 }
相关问题