精确算法中使用的近似算法


11

近似算法可能会给输出带来一定的恒定因子。这比精确算法要令人满意的多。

但是,时间复杂度忽略了恒定因素。

所以我想如果下面的诀窍是可能的,或者使用,解决了一些问题,BA

  1. 使用近似算法求解问题以得到常数因子之内的解SAS
  2. 使用精确的算法来解决问题,其运行时间取决于S的权重,但是只要S是正确的解决方案就可以使用。BSS

这样,近似值是精确算法的“子过程”,并且在步骤2中吞噬了在步骤1中丢失的常数因子。



你会清楚你的意思是什么和的重量小号BAS
冈本

A,BABA

答案将是一个集合。因此,我认为使其成为社区Wiki更合适。
冈本

添加big-list标签就足够了,无需使其成为社区Wiki IMHO。
Gopi

Answers:


12

从参数化的复杂性的一个例子是一个核心化顶点覆盖问题使用Nemhauser和羊蹄的定理。

在最小顶点覆盖问题中,我们得到了无向图G,我们需要找到最小大小为G的顶点覆盖。无向图的顶点覆盖是接触所有边缘的顶点子集。

这是在第一阶段使用近似值的精确算法。

阶段1:建立最小顶点覆盖问题的整数线性规划公式。众所周知(或容易显示),线性规划松弛的基本最佳解决方案是半积分(即,每个坐标为0、1或1/2)。可以通过用于线性规划的常规多项式时间算法找到这种基本的最佳解决方案(或者在这种特殊情况下,我们可以将其表达为网络流量问题,因此可以在多项式时间内组合求解)。有了这样一个基本的最优解,我们将其四舍五入以获得原始整数线性规划问题的可行解。令S为对应的顶点子集。值得注意的是,S是给定的最小顶点覆盖实例的2近似值。

阶段2:在由S引起的子图中找到最小顶点覆盖(例如,穷举搜索)。Nemhauser和Trotter的一个定理指出,该子图包含原始输入图的最优解。因此,遵循了这种方法的正确性。

您可以参考Niedermeier撰写的有关固定参数算法的书


11

一个例子与树分解小树宽图有关。

B

BA

AAAAB


BA

BAAB


虽然树宽示例在原则上有效,但实际上很难执行,因为很难很好地估算出树宽(因为您可以近似得出集团)
Suresh Venkat

8

收敛到精确解的近似算法的一个示例是用于求解LP的Ellipsoid算法-如果系数是有理数,则可以计算可行多义形的两个顶点之间的最小距离。现在,椭球算法反复计算越来越小的椭球,它必须包含最优解。一旦椭球小到只包含一个顶点,就可以找到最佳顶点。这就是为什么LP是弱多项式的原因。

k

最后,进一步探讨一个领域-遵循变更技术的许多算法(获取随机样本-然后进行一些修正以获得所需的内容)都落入了这样的框架。一个可爱的例子是使用随机采样计算中位数的算法(请参阅Motwani和Raghavan的书)。有很多这样的例子-可以说,计算几何中的许多随机增量算法都属于该框架。


4

许多对输出敏感的算法都采用这种技术。例如,这是一个可以使用此技术的简单问题:

问题。你将得到一个数组A [1 ... Ñ ],其中每个元素是atmost ķ位置从它会一直在如果A被排序的位置离开。

例如,下面显示的A [1..7]可能是k = 2 的输入数组。

假设k未知, 设计一种算法以O(n log k)时间对数组排序。

问题来源:Algo Muse存档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.