【问题标题】:Integer factorization in repetitive pattern重复模式中的整数分解
【发布时间】:2016-01-07 23:33:48
【问题描述】:

我正在为整数分解的特定情况寻找一种有效的解决方案。高效是指比我目前拥有的 O(2^n) 快得多(n 表示完成后数组中的元素数)。


假设我们有以下数组:[4, 5, 11] 和“目标”为 84。

我们想知道是否可以满足4*a + 5*b + 11*c = 84

考虑到以下约束:

  • 0
  • 0
  • 0

如果我们没有找到解决方案,我们将一个整数添加到数组中,比如 15:[4, 5, 11, 15]

现在我们想知道有没有什么可以满足4*a + 5*b + 11*c + 15*d = 84

考虑到

  • 0
  • 0
  • 0
  • 0

...我们重复这个过程,直到找到解决方案,或者最多 n 次。我想知道我们是否可以利用问题的重复性来找到有效的解决方案:

  • “目标”没有改变
  • 整数按升序排列
  • 每次添加新元素时,a、b、c... 的最大约束都会增加 1
  • 每次重复都会向公式中添加一些内容,但没有任何更改(除了约束)

有什么想法吗?

【问题讨论】:

  • 当您有第一个公式的解决方案时(使用 abc),您可以使用所有其他公式的解决方案完全相同,只需将其余变量(de 等...)设置为 0。
  • 哦,对不起,如果我使用了错误的术语。我应该怎么称呼它?
  • @Amit 一旦我们找到解决方案(在任何步骤),我们就可以停止该过程。我会将此信息编辑到问题中。
  • 如果我是对的,这个问题属于已知为 NP-hard 的“整数线性规划”类。所以没有希望找到一个快速(多项式)的解决方案。

标签: algorithm math integer diophantine


【解决方案1】:

首先这个词是错误的。它不是integer factorization,而是一个线性diophantine equation,其中包含许多变量和一些额外的约束。

没有您的限制,这将是一件容易的事。只要找到GCD(list of coefficients),如果它划分了免费期限 - 你有一个解决方案,否则它没有。

有了您的约束,这可能是第一步,但在这里,如果您看到有解决方案,它们可能无法满足约束。


我没有看到快速(多项式解决方案),所以我将如何解决它。你有

我会在 middle approach 中使用 meet 并将带有约束的方程分成两部分:

第 1 部分

第 2 部分

我会将它们分开,以便在两个部分中执行的计算数量大致相同(考虑到约束)。

现在您遍历第一部分并将所有内容存储在字典中。然后遍历第二个并检查答案是否存在于字典中。如果是,您找到了解决方案。

这会将指数除以 2,但需要内存。


这个math answer 可能会帮助某人想出一个我找不到的更好的方法。

【讨论】:

  • 您给出的数学答案包含一个非常有用的见解,它允许O(1) 在某些情况下确定无解。因为它必须是GCD(list of coefficients) divides k 并且条款正在增加。这意味着k 必须小于或等于第一项(它是最小的)才能完全存在。这意味着无论4*a + ... = 84 的 OP 示例的附加条款如何,都不会存在任何解决方案。在这里,GCD 必须在1 and 4 (inclusive) 之间,但这太低了,不能被84 整除。
  • @Nuclearman a,b,c... 可以为零,因此附加条款可能会成为解决方案。例如,4*0 + 5*0 + ... + 84*1 = 84
  • 我无法理解如何在此处应用 GCD。例如,如果方程为3a + 8b = 10,则 3 和 8 的 GCD 将为 1,除以 10,这意味着当没有解时有解。我做错了吗?
  • @AtteJuvonen:你混淆了分界线的定义。在你的例子中,GCD(3,8) / 10 = 0.1,0.1 不是整数,所以 1 不能除以 10。我承认虽然有零选项,但我所说的实际上只意味着你可以快速消除(将系数设置为 0,然后离开它在那里)任何低于目标的术语。因此,在您的示例中,您甚至需要在 84x = 84 开始测试系数。此外,如果您只考虑3 / 10 = 0.3 and 8/10 = 0.8,两者都不是整数。所以在这种情况下可以忽略它们。
猜你喜欢
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 2014-01-28
  • 2015-08-31
  • 1970-01-01
  • 2018-03-09
  • 2013-02-14
  • 2023-04-01
相关资源
最近更新 更多