微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为受限范围分区问题设计优化算法

如何解决为受限范围分区问题设计优化算法

首先,我将“分区问题”称为是否可以将某个多组正整数 S 划分为两个等值子集的决策问题。众所周知,虽然这个问题是NP-Complete,但可以通过动态规划在伪线性O(nm)时间内解决,其中nS中整数的个数,{{ 1}} 是这些整数总和的一半(即每个多重集的目标总和)。以下是 JS 中这种方法的示例:https://pastebin.com/GETrGwqh

然而,由于 m 倾向于随 n 线性增加(更准确地说,与 S 的平均值呈线性关系),这种 O(nm) 方法对于大 n 仍然效率很低。然而在我看来,可以为分区问题的范围受限实例设计更有效的算法,其中 m 中最大可能整数的值 S 是预先知道的,并且 { {1}} 很小。为了讨论一些例子,让我们将 k 表示为 k,其中每个 S 代表 S 中 [n_1,n_2,...n_k]数量(例如 [3,1,2]表示 mset {1,3,4,4})。下面,我们看到 k=1 和 k=2 的情况非常简单:

n_i

(任何偶数个1都可以均匀划分,任何奇数都不能)

i

(如果 n_1 是奇数,则和是奇数,所以返回 false。如果 n_1 和 n_2 都是偶数,则存在一个平凡分区,但如果 n_2 是奇数且 n_1 >= 2,则可以使用一对1 来抵消奇数 2。否则,没有可能的分区)

当我们扩展到 k=3 的情况时,使用类似的基于奇偶校验的方法,有 2^3=8 种可能的情况,其中 4 种情况非常错误,因为它们产生奇数和(情况是 n_1 和 n_3不共享相同的奇偶校验),其中之一(所有偶数 [e,e,e])是微不足道的(只需取每个 n_i 的一半进行分区)。但是,我正在努力为 [e,o,e]、[o,o] 和 [o,o] 实例推导出规则,这些实例可能是可分区的,因为它们产生偶数和,但不是必然如此。

所以总结一下我的问题,我想知道是否有一些额外的条件检查可以应用于在恒定(或者可能是 O(2^k))时间内解决 k=3 的情况,以及是否类似可以为 k=4,5,6... 推导出恒定时间的算法,因为即使要检查的逻辑复杂度/条件数量在 k 中呈指数增长,专门为范围受限分区实例推导出的算法仍然可能优于对于相对于 k 非常大的 n 和 m,普遍适用的 O(nm) DP 解决方案。

从更直接的数学角度来看,上述过程在复杂性上等同于在以下受约束的丢番图方程中确定满足 m_1,...m_k 的存在,其中左侧代表所有方程的总和的一半集合中的整数,右侧的 m_i 系数(待求解)代表每个整数的数量的分区:

diophantine equation

(我不知道我将如何解决,但我想我会把它扔在那里,以防它激发某人的想象力)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。