我正在尝试构建路由优化软件,我正在使用openstreetmaps作为接口。我在后端实现了节约算法,这有助于确定进行一系列交付的最佳路径。
我遇到的问题是,在地图上点击的地方返回的某些坐标是错误的。假设我必须在两个不同的地方交货。那些2个地方的坐标加上我开始的地方和我完成时的回归应该形成一个三角形。有时候返回的坐标可能是错误的,三角不等式定理被违反了。
我一直在阅读Skiena的算法设计手册,并且想知道,如果给出一对错误的坐标,可以使用所讨论的任何技术(凸壳,Voronoi图,Delaunay三角剖分等)来确定什么是最可能是正确的坐标,以致三角不等式定理没有被违反?
谢谢
答案 0 :(得分:0)
总的来说,(据我所知),有4种方法可以解决这个问题:
前两个是部分尝试,但它们远不是实用的解决问题的自动方法。例如,有几个关于2D中的快照舍入方法的出版物,但不是3D。应用快照舍入可能很容易,但您必须能够理解生成的拓扑,最重要的是,软件必须变得健壮。
接受大致相等的浮点值属于Ad-hoc类别。由此产生的软件几乎总是不完全健壮 - 一个打破稳健性的输入案例就在那里等待被喂食。此外,代码的细微变化可能会进一步破坏它,并且需要不断调整这些容差条件。
CGAL遵循EGC范式。与任何软件一样,CGAL不是免费的,但是可以消除健壮性问题。您可以在CGAL网站或例如“CGAL安排及其应用”一书中阅读更多相关信息。虽然这本书专门用于CGAL的特定包装,但它确实触及了EGC主题;见1.3.2节。