python - 2 因子近似的 2 组点的最大距离
问题描述
给定一组 n 个点,我随机取 k 个点。我需要以最有效的方式计算k点与n点的最大距离,系数为 2 近似(以某种方式利用三角不等式)。我的第一个想法是使用曼哈顿距离而不是欧几里得距离,但这并没有降低复杂性,因为它仍然是O(n*k)。可能有什么想法?
编辑:如果我首先计算 k 个点中的 2 个最远点,然后计算 2 个点与所有 n 个点的距离怎么办?
解决方案
从技术上讲,如果您只寻找距离最大的点,您可以用这些点构建一个多边形(凸包),最大距离应该是边界中的那些。
您可以在 O(k.log(k)) 中计算凸包
https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html
之后,您只需在边界上测试点。
这是确定性方法,您可以应用启发式随机搜索来更快地完成它,但不能保证提供正确的解决方案。
这是一篇用另一种算法讨论该主题的论文:https ://arxiv.org/ftp/arxiv/papers/1708/1708.02758.pdf
推荐阅读
- angular - Ngx-swiper-wrapper 已禁用
- c# - 使用 RestSharp ExecuteAsync 的 .NET Core 3.1 应用程序硬崩溃
- html - 网页中多个css文件的优先级
- python - 为什么语法错误(python)不起作用?
- css - 如何去除这个边距?
- tensorflow - keras.initializers.ones() 是风格吗?
- javascript - 在 Web 应用程序中单击按钮后刷新下拉列表
- scala - 带有替代方法的重载方法值 json: (jsonRDD: org.apache.spark.rdd.RDD[String]) 在 IntelliJ 中使用 Spark
- excel - 单元格包含公式不为空
- node.js - 如何像日历一样使用 Node.js 存储日程安排