与所有其他给定点具有最小曼哈顿距离的所有点 [优化]

2024-01-20

这里的问题是找到所有整数点的集合,它给出了给定点集的所有曼哈顿距离的最小总和!

例如:

让我们有一组给定的点 { P1, P2, P3...Pn }

基本问题是找到一个点 X,该点在距点 { P1, P2, P3...Pn } 的所有距离上具有最小总和。

即 |P1-X| + |P2-X| + .... + |Pn-X| = D,其中 D 将是所有 X 中的最小值。

更进一步,满足上述条件的 X 值可以有多个。即,可能有多个 X 给出相同的值 D。因此,我们需要找到所有这样的 X。

任何人都可以想到的一种基本方法是找到输入的中位数,然后暴力破解中提到的坐标这个帖子 https://stackoverflow.com/questions/10402087/algorithm-for-minimum-manhattan-distance

但这种方法的问题是:如果中位数给出两个相距甚远的值,那么我们最终会暴力破解所有在给定时间内永远不会运行的点。

那么,是否有任何其他方法即使在点相距很远的情况下也能给出结果(其中中位数给出的范围约为 10^9)。


您可以单独考虑 X 和 Y,因为它们彼此独立地增加距离。这将问题简化为在给定一条线上的 n 个点的情况下寻找到其他点的距离和最小的点。这很简单:两个中位数(含)之间的任何点都满足这一点。


Proof:如果点数为偶数,则有两个中位数。两个中位数之间的点将有 n/2 个点向左,n/2 个点向右,以及到 S 的这些点的总距离和。

如果我们向左移动一点,S 将上升 n/2(因为我们正在远离最右边的点)并减少了 n/2(因为我们正在向最左边的点移动),所以整体 S 保持不变。在我们到达最左边的中点之前,这一点一直成立。当我们将最左侧中点向左移动一位时,现在向右有 (n/2 + 1) 个点,向左有 (n/2 - 1) 个点,因此 S 增加了 2。继续向左只会进一步增加 S。
按照同样的逻辑,最右侧中位数右侧的所有点也具有较高的 S。

如果点数为奇数,则只有一个中位数。使用与上面相同的逻辑,我们可以证明它具有最低的 S 值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与所有其他给定点具有最小曼哈顿距离的所有点 [优化] 的相关文章

  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 什么是悲观主义?

    该问题有评论可以使用C 11的吗auto提高性能 https stackoverflow com questions 32510183 can the use of c11s auto improve performance这获得了很多选票
  • 如何从二叉搜索树中均匀随机地返回节点?

    给定一个 BST 可能平衡也可能不平衡 如何能够均匀地随机返回 任何 节点 一个限制是您不能使用外部索引数据结构 您必须以每个节点都有平等被访问的机会的方式遍历树 这个问题让我困惑了好一阵子 如果我们确实可以使用外部哈希表 指针 我们可以对
  • 搜索/排序算法 - 是否有类似 GoF 的列表?

    我是一名自学成才的开发人员 坦率地说 我不太擅长找出在任何特定情况下使用哪种搜索或排序算法 我只是想知道是否有设计模式 esque 列出了以太坊中可用的常见算法 供我添加书签 就像是 算法名称 带有别名 如果有的话 它解决的问题 大O成本
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • 使到 n 个点的集合的欧氏距离之和最小的点

    我有一组点W x1 y1 x2 y2 xn yn 在 2D 平面上 你能找到一种算法 将这些点作为输入并返回一个点 x y 在 2D 平面上 距以下点的距离之和最小W 换句话说 如果 di Euclidean distance x y xi
  • UV 展开运行时优化

    我正在尝试在运行时创建 UV 我使用 BOX 类型 UV 类似于 3ds max 中的 BOX UVW 并基于面方向进行计算 我知道将其创建为运行时不是一个好的选择 但我别无选择 它是在计算后保存的 所以我做了一次 但我花了 40 秒处理
  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • 将嵌套循环计算转换为 Numpy 以加速

    我的Python程序的一部分包含以下代码段 其中一个新的网格 是根据旧网格中找到的数据计算的 网格是二维浮点数列表 该代码使用了三个 for 循环 for t in xrange 0 t step for h in xrange 1 hei
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 编程 Pearls - 随机选择算法

    Programming Pearls 第一版第 120 页介绍了从 N 个整数总体中选择 M 个等概率随机元素的算法 InitToEmpty Size 0 While Size lt M do T RandInt 1 N if not Me
  • 在 any() 语句中迭代一个小列表是否更快?

    在低长度迭代的限制下考虑以下操作 d 3 slice None None None slice None None None In 215 timeit any type i slice for i in d 1000000 loops b
  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 删除队列中的最后一个元素

    我需要删除队列的最后一个元素 我唯一可以使用的操作是 Peek 获取第一个元素而不删除它 Enqueue element 向队列末尾插入一个元素 Dequeue 删除第一个元素 IsEmpty true 或 false 队列是否为空 而且我
  • 返回值的复制省略和 noexcept

    我有一个这样的函数模板 template
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我
  • 解释一下从 N 个给定集合中的每一个中给出第 K 个最大数字的示例?

    今天我尝试解决一个Facebook 编程挑战赛 https facebook interviewstreet com recruit challenges 我遇到的挑战是 酒吧问题 可以找到here https github com alo
  • 无需构建树即可预测霍夫曼压缩比

    我有一个二进制文件 我知道其中每个符号出现的次数 如果我要使用霍夫曼算法压缩它 我需要预测压缩文件的长度 我只对假设的输出长度感兴趣 而不对单个符号的代码感兴趣 因此构建霍夫曼树似乎是多余的 作为一个例子 我需要得到类似的东西 包含 4 个
  • 适用于多应用项目的 Grunt 和 requirejs 优化器

    我在让 Grunt 对具有以下结构的项目执行 requirejs 优化时遇到问题 static js apps app js dash js news js many more app files build collections lib

随机推荐

  • 处理 Ember.js 中的验证错误

    我有一个 Rails 应用程序 为 Ember 前端提供 json 服务 我正在尝试在客户端的表单上显示验证错误 Rails 返回这个 json errors hometown is too long maximum is 64 chara
  • 同时将 AuthorizeAttribute 应用于控制器类和操作

    是否有一种方法可以在具有 Authorize 属性的控制器类的一个操作中忽略 Authorize 属性 Authorize public class MyController Controller Authorize Users I tri
  • 根据添加到主屏幕的 URL 在 Web 应用程序清单中设置 start_url

    我的网站有几个小部分 当用户将网站添加到他们的主屏幕时 我想确保主屏幕图标将他们启动到他们添加到主屏幕时所在的小部分 我可以为每个小节注册不同的清单 但这对于没有页面重新加载的单页应用程序不起作用 我正在考虑将小节存储在 cookie 中
  • 使用 C# 编码波斯语字符串

    我正在开发一个短信应用程序 使用C 对于通过 SMS 网关向客户发送交易警报 即 ATM 交易 的银行 该应用程序工作正常 唯一的问题是编码波斯语文本 它没有正确编码波斯语文本 以下是将波斯语文本编码为 UTF 16 格式的方法 publi
  • 如何从 .pb 转换为 .tflite?

    我使用创建了一个对象检测模型Pytorch然后转换自 pth to onnx进而 pb 但现在我需要将其转换为 tflite适用于 Android 应用程序 怎么做 这是我第一次 input arrays 64 3 224 224 outp
  • 编译Linux内核错误xt_CONNMARK.h

    由于非常具体的原因 我尝试编译 Linux 2 6 32 6 内核 并在内核中内置了多个模块 我已将根文件系统包含在 NFS 上 以尝试通过 LAN PXE 启动我自己的自定义救援 Live CD 在包含 ROOT NFS 所需的依赖项和模
  • 是否可以在不编写新文件的情况下将文本合成语音?

    我想使用 GCP 文本到语音 API 合成文本到语音 几乎我能找到的每个示例都会写入一个新文件 我想在该函数输入文本并通过计算机扬声器读取它时执行此操作 我一直在尝试转换 GCP 上传的代码 表示 你好 世界 我还没有找到一种方法可以在转换
  • 将 SelectSingleNode 与 XPath 结合使用会返回 NULL

    我尝试修改 XML 文件SelectSingleNode 文件的结构是
  • Rails 安装错误:“原子”本机 gem 需要安装构建工具[重复]

    这个问题在这里已经有答案了 我正在我的 Windows 上安装 Rails 3 我安装了最新的 ruby 2 0 0 并更新了 gems 但是当我使用 gem install Rails 安装 Rails 时 成功的消息来了 但最后我发现
  • 自定义字体连字

    我正在使用 Visual Studio Code 我看到所有这些很酷的字体连字 用于双等号和三等号 箭头等 我不禁想知道是否有任何方法可以向字体或 VS Code 添加新的自定义连字 我尝试进行一些网络搜索 但似乎找不到任何内容 例如 当我
  • Ansible 内置 Lineinfile 到 ~/.bashrc

    我对 ansible 比较陌生 所以如果这个问题遗漏了一些东西 我很抱歉 我的目标是添加一行 bashrc使用 ansible 文件 我认为最好的方法是ansible builtin lineinfile module 不幸的是 我已经运行
  • AttributeError:无法设置 python 列表属性的属性

    我正在与python docx来自分叉的库version https pypi org project bayoo docx 并且我在编辑元素列表时遇到问题 因为它被定义为属性 docx document Document property
  • 我什么时候应该使用 Rosette 的浅嵌入与深嵌入进行程序综合?

    一些教程Rosette https docs racket lang org rosette guide index html引入程序综合使用浅嵌入 https docs racket lang org rosette guide ch e
  • 无法使用无头模式 Selenium 定位元素

    由于 所有用户在访问我们的网站时必须使用谷歌浏览器 这一限制 我无法使用无头模式定位元素 此限制是由我们的管理员添加的 因此用户只能使用 Google Chrome 我的代码是 Test priority 1 public void set
  • 套接字和管道的 select.select 问题

    我目前正在编写一个使用管道和套接字的基本 python 脚本 管道当前保存来自 html 表单的传入数据 套接字建立与服务器的连接 以不同的时间间隔发送 TCP IP 命令 表单和服务器位于同一 LAN 但不同的计算机上 我的代码如下 us
  • MaterialiseCSS 卡片设计

    我正在尝试使用 Materializecss com 在我的个人网站中调整 Material Design 但是该框架仅提供在 CARD 设计之上排除其他图像的选项 我想实现如下链接 第 2 行 第 2 列 最后一张图片 中所示的目标 其中
  • 当列表初始化为空时使用 ngFor 创建 mat-option 元素

    当我在 能力 mat select 中选择一项技能时 我想更新 专业化 mat select 中的值 我使用以下命令将我的 var 与模型链接起来 ngModel 但它不会更新列表 我尝试使用 ngModel 角度和材质为 7 HTML
  • 使用 Keen IO 创建给定时间段内会话长度的直方图

    我们正在尝试构建给定时间段内会话长度的直方图 目前 我们有 sess start 和 sess end 事件 其中包含会话 id 和用户 id 我想知道计算这些数据的最佳方法是什么 可以使用漏斗 API 来实现吗 你结帐了吗Keen IO
  • Wolkenkit:用于授权和用户角色的 ACL

    我试图了解如何扩展 wolkenkit auth 层 假设我想要具有不同角色的用户 普通 主持人和管理员 normal用户可以查看和修改自己的内容 但不允许修改其他用户的内容 主持人用户可以修改所有条目 但无权删除除自己内容之外的任何内容
  • 与所有其他给定点具有最小曼哈顿距离的所有点 [优化]

    这里的问题是找到所有整数点的集合 它给出了给定点集的所有曼哈顿距离的最小总和 例如 让我们有一组给定的点 P1 P2 P3 Pn 基本问题是找到一个点 X 该点在距点 P1 P2 P3 Pn 的所有距离上具有最小总和 即 P1 X P2 X