- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
也许这是一个微不足道的问题,但我正在寻找一种算法,它可以以平衡的方式将 N 条线段分成 M 条线段 (M >= N)(例如,最大化 R^2 r 平方)。谁有好的引用资料?
编辑(根据评论者的要求添加示例):
例如,让 N = 5
段的长度为:{1, 10, 7, 15, 1}
我们要将其拆分为 M = 7
部分。
{1, 1, 5, 5, 7, 7, 8}
(拆分 15 和 10){1, 1, 5, 5, 5, 7, 10}
(将 15 分成 3)我想,一个以 distance from avg
作为启发式的贪婪算法可能会做得很好,但不确定它是否存在一些极端情况。
谢谢,
最佳答案
这个问题实际上不是 NP-hard,因为不可能重新组合这些片段。这是一个 O(m log n) 时间算法,用于确定切割以最小化所得片段长度的平方和的问题。将每个段的拆分计数初始化为 1,并将它们放入优先级队列(我将很快指定优先级)。重复以下操作 m - n 次:拉取最顶端的段(最大优先级),增加其拆分计数,并将其放回队列中。
每个段的优先级是其当前划分的平方和减去其假设划分为另一部分的平方和。例如,如果 15 当前被拆分为两 block ,7 和 8,我们可以将其拆分为三 block ,5、5 和 5,则优先级为 7^2 + 8^2 - 5^2 - 5^2 - 5^2 = 38。为了使您的示例生效,初始优先级队列是
15 (1 cut), priority 15^2 - 7^2 - 8^2 = 112
10 (1 cut), priority 10^2 - 5^2 - 5^2 = 50
7 (1 cut), priority 7^2 - 3^2 - 4^2 = 24
1 (1 cut), priority 1^2 - 0^2 - 1^2 = 0
1 (1 cut), priority 1^2 - 0^2 - 1^2 = 0.
我们又 split 了 15 个。
10 (1 cut ), priority 10^2 - 5^2 - 5^2 = 50
15 (2 cuts), priority 7^2 + 8^2 - 5^2 - 5^2 - 5^2 = 38
7 (1 cut ), priority 7^2 - 3^2 - 4^2 = 24
1 (1 cut ), priority 1^2 - 0^2 - 1^2 = 0
1 (1 cut ), priority 1^2 - 0^2 - 1^2 = 0.
我们又 split 了 10 个。
15 (2 cuts), priority 7^2 + 8^2 - 5^2 - 5^2 - 5^2 = 38
10 (2 cuts), priority 5^2 + 5^2 - 3^2 - 3^2 - 4^2 = 16
7 (1 cut ), priority 7^2 - 3^2 - 4^2 = 24
1 (1 cut ), priority 1^2 - 0^2 - 1^2 = 0
1 (1 cut ), priority 1^2 - 0^2 - 1^2 = 0.
我们到此为止;接下来是 15 个,分别是 1、1、5、5、5、5、5、7。
这种“贪心”算法之所以是最优的,是因为将一个片段拆分成更多部分的返回是独立的,并且在精确的技术意义上递减(超模块化)。
关于algorithm - 将N条线段以平衡方式拆分为M条线段(N <= M)的算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268085/
我有一个数组列表: ArrayList allText = new ArrayList(); 其内容是这样的: [Alabama - Montgomery, Alaska - Juneau, Ariz
我有一个 timestamp 格式的开始和结束时间。我想将它们分成多个时间段,例如 1 小时。 $t1 = strtotime('2010-05-06 12:00:00'); $t2 = strtot
我需要将 span10 分成 3 列,但我无法将它们排列起来。我应该在 span10 中添加一个 span12 还是使用 offset 还是??
我有一个时间序列。我想从早上 8 点到第二天早上 7:59 分成 24 小时的区 block 。我知道如何按日期分组,但我尝试过使用 TimeGroupers 和 DateOffsets 处理这个 8
我收到“街道号码邮政编码城市”形式的地址(作为字符串)。我想要做的是将街道和号码与邮政编码和城市分开。通常你可以按空格分割。但有些街道名称中也有空格,例如:“Emile Van Ermengemlaa
我有一个用户列表。其中一些用户处于第一状态,而其他用户处于第二状态。所以我想要的是将这个列表显示为首先,它按排序顺序显示存在 = 1 的用户,然后按排序顺序显示存在 = 2 的用户。这里的排序是根据用
我感觉我搜索了整个网络,但找不到一种方法将不同高度的 div 很好地划分为 3 列,就像 http://www.ing.nl 上那样 headertekst headerteksttesth
Bootstrap 3 按钮下拉菜单出现问题。你可以在这里看到我的两个例子: http://www.bootply.com/W1dLusilMk http://www.bootply.com/GGBv
我在 php 中执行以下操作 foreach($QuestionAsekd as $k => $v){ $grp_name = $v['NAME']; $groupValues[$gr
我找到了一种用pandas解析html的绝妙方法。我的数据格式有点奇怪(见下文)。我想将这些数据拆分为 2 个单独的数据帧。 注意每个单元格如何由,分隔...是否有任何真正有效的方法来分割所有这些单元
HTML 看起来像这样,但我不允许对其进行更改。我只能编写 CSS 将其变成 2 列。 Povezave www.behance.net www.kiberpipa.org www.o
假设我有以下数据框“A” utilization utilization_billable service 1
我需要将 2 个文本框拉伸(stretch)到 100% 的浏览器宽度,以及一个提交按钮。所有三个都应该在一行中,我试图拉伸(stretch)它但它没有发生......有什么想法吗? 代码: .sea
我是一名优秀的程序员,十分优秀!