algorithm - 浅析凸包的格雷厄姆扫描算法

标签 algorithm computational-geometry testcase

我编写了一个代码来实现凸包的格雷厄姆扫描算法。我通过生成一些测试用例来测试程序。在所有情况下,它都会给出准确的结果。但我的问题是,当程序可能无法给出完美的凸包作为输出时,是否有可能生成一些棘手的测试用例?产生这种情况的过程是怎样的?

最佳答案

正如 Sascha 在评论中回答的那样,如果不知道您是如何实现算法的,就不可能帮助您生成棘手的测试用例或知道这是否可行。

算法本身当然被证明是正确的并且能够解决问题。因此,这只是关于测试您的实现是否按照算法所说的那样进行。

我建议尝试向自己证明您的实现 - 证明您得到的起点是正确的,证明您为排序所做的计算为什么按角度给出正确的排序顺序,证明计算所依据的决定丢一分或继续是基于等价于(或直接算出)右转或左转的问题,并证明算法的每一步都在你的实现中执行。

所有这些证明都可以进行两次 - 理论上进行一次,然后使用针对特定问题的测试代码以及​​为它们构建的测试用例(例如检查右转/左转计算是否正确完成你不需要算法的其余部分 - 只需针对已知的正确结果测试许多可能的星座的 3 点集,以测试您使用的计算是否给出正确答案)。

关于algorithm - 浅析凸包的格雷厄姆扫描算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552200/

相关文章:

algorithm - 如何计算沿线的镜像点?

c - 测试用例未在 C 程序中运行

python - Django 单元测试在登录时提供匿名用户

java - 使用特殊符号的单词变体集合

c# - 从列表中查找最小值

algorithm - 在没有已知方程的图中找到最近点的有效算法

math - 检测钻石点击

java - 为 JUnit 创建接口(interface)

javascript - 设置范围 slider 的最小处理程序值

algorithm - 用于分类的哈希函数