以前做研究写论文,总爱用高性能这一词来形容所提的算法,有点王婆卖瓜的感觉。当然,所研究的算法的性能是不错的,但是否是高性能,自己不敢说一定。最近翻读Vazirani的《Approximate Algorithms》一书,仔细重读了他的前言,发现他给出了高性能算法的一个定义,即高性能算法的解与最优解的误差只有2%或5%。2%的误差要求可能有点高,但5%应该还是不错的。如果以此为衡量,先前所做的算法少部分能达到这个要求,因为所做的算法大都在10%以内。但博士论文里的工作还是达到了5%的要求,主要是采用了改良的技术。多说一句,为了提高2%,花费了无数的日日夜夜的调试与总结,没办法,启发式的方法都带有这个特征,很多好的性质都是通过实验观察总结得到的。
另外,先前研究看不上所谓的带有固定近似比的算法,因为大多数近似比都在2或3/2左右,甚至有的是O(logN),因而人为不值深入研究。看了Vaziranni的解释,自己深感羞愧和无知,其实固定近似比的算法是值得研究的,具体的原因,可以看看Varizani如何理解的。
“对于寻找高性能算法的实践者来说,在最优解的因子2或者更坏的因子O(logn)以内的算法能有多好?更进一步,由此看来,近似保证的改进(比如从因子2到3/2)能有用到何种程度?
我们讨论一下这两个问题并指出这些论断中的一些谬误。近似保证仅仅反映算法关于大部分病态实例的性能。或许把近似保证看成促使我们更深入地研究问题的组合结构并发现利用这个结构的更强有力工具的一种度量更合适。已经注意到当得到有更好保证的算法的时候,构造紧例子的困难性明显增大。实际上,对于一些今年来的算法,得到紧例子已经独立成为一篇论文。实验已证实这些算法和其它复杂算法对于典型事例能达到想要的2%到5%量级的误差界限,虽然它们最坏情形误差界限要高得多。另外,应将已被理论证明的算法看成核心算法思想,这个思想需要很好地融入特定应用中所产生的事例。”
大师的见解入木三分。正所谓偏见比无知离真理更远,为自己以前的偏见深感惭愧。其实,固定近似比算法能让我们更好地认识和了解问题的结构和特点,这才是固定近似比算法的重要性。从自己的研究经历来看,基于固定近似比算法开发的一些算法实际效果也不错,最明显的就是并行机调度里面的WSPT算法。
做研究时,不能一路往前跑,有时需要停下来看看自己曾经走过的路。