我正在开发一个基于一些流行的Python包的开源图形和网络近似算法库。主要目标是包含最新的图形和网络NP完全问题的近似算法。原因在于1)我还没有看到一个很好(现代化的)综合套件来覆盖这个领域,2)它将是一个很好的教学工具,用于学习NP难优化问题上的近似算法。
在构建这个库时,我使用单元测试进行检查(像任何合格的开发者一样)。由于近似算法的本质,我对我的单元测试有些谨慎,因为它们可能无法返回正确的解决方案。目前,我通过手动解决一些小实例,并确保返回结果与之匹配来进行检查,但这不是理想的,在实现方面也不可扩展。
什么是对近似算法进行单元测试的最佳方法?生成随机实例并确保返回的结果小于算法所保证的界限?那似乎会有虚假阳性(测试只是那次运行幸运,不能保证所有实例都在界限以下)。