【发布时间】:2012-03-24 14:32:51
【问题描述】:
我一直在阅读 Cormen 等人的《算法简介》的部分内容,并且已经实现了一些算法。
为了测试我的实现,我编写了一些胶水代码来执行文件 io,然后手动输入了一些示例输入,并通过编写生成示例输入的程序进行了更多示例输入。
但是我对自己的样本输入的质量持怀疑态度——极端案例;我可能错过了更有趣的可能性;我可能算错了正确的输出;等等
是否有一组用于在 Internet 上收集的各种算法的测试输入和输出,以便我可以测试我的代码?我正在寻找针对特定算法的合理特定的测试数据,而不是经常涉及问题解决组件的竞赛问题。
我知道我可能必须根据收集输入的格式来调整我的代码(例如输入的各种约束;对于图形算法,图形的表示;等等)虽然,我希望我必须做出的改变是相当微不足道的。
编辑:
我目前正在寻找的一些特定数据集是:
- 号码列表
- 倾斜,导致快速排序性能不佳。
- 偏斜以使斐波那契堆在特定操作中表现得特别好或特别差。
- 图表(High Performance Mark 提供了许多有趣的参考资料)
- 稀疏图(边数有特定界限),
- 密集图,
因为,我还在研究这本书,如果你和我有类似的情况,或者你只是觉得列表可以改进,请随时编辑列表——很快,我可能会来需要类似于您正在寻找的数据集。我不完全确定编辑权限是如何工作的,但如果我对此有任何发言权,我会尝试批准它。
【问题讨论】:
-
您使用什么语言?某些语言具有可以自动生成测试数据的库。例如,haskell 的快速检查。更多信息请参见news.ycombinator.com/item?id=3020132
-
@andrewcooke 我正在使用 Python。 QuickCheck 和这样的库听起来很有趣——我一定会看一看。
-
另一个有趣的测试工具是 Korat(详细信息在 stanford.edu/class/cs295/papers/issta02.pdf),它实际上会检查您的代码,以便在少量输入上为它构建详尽的测试用例。同样,不是测试集合或 Python,但仍然是一个很酷的工具。
标签: algorithm