- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有多个包含多个同余项的集合。
我试图在应用 Chinese remainder theorem 时找到最小的余数每组中的一个项目。
例如有 2 组:
第 1 组:
7x + 1
7x + 3
第 2 组:
11x
11x + 2
11x + 7
11x + 8
7x + 1 & 11x 得到 77x + 22。
我追求的是最小余数(在上面的示例中为 77x + 8),而不必测试所有组合。
这是我的实际问题的非常简化版本(约 50 组,每组约 100 个同余)。
我一直在研究如何解决这个问题,如果有任何建议,我们将不胜感激。
此外,如果我的数学术语不正确,我深表歉意。
最佳答案
有一种中间相遇算法,可以及时找到最小的残差
O(max(|S1|, |S2|) log(max(|S1|, |S2|))).
先用中国剩余定理求出S1中所有0 <= t < n1*n2满足t mod n1且t mod n2 == 0的集合T1和所有 0 <= u < n1*n2 的集合 T2 满足 S2 中的 t mod n1 == 0 和 t mod n2。
即在问题中给出的示例中:
T1 = {22, 66}
T2 = {0, 7, 35, 63}
现在您正在寻找的残差是总和 (t1 + t2) mod n1*n2,对于 T1 中的任何 t1 和 T2 中的 t2。因此,最小留数要么是 T1 和 T2 中两个最小元素的总和,要么是两个刚好大于 n1*n2 的元素。如果对集合 T1 和 T2 进行排序,则可以通过从最小元素到最大元素扫描第一个集合并从最大元素到最小元素扫描最大集合来找到第二种情况的最佳解决方案,即推进 T1 中的位置每当总和小于 n1*n2 时,当总和大于 n1*n2 时减少 T2 中的位置。
如果你有两个以上的模数 n1 .. nk 那么我能看到的最快的解决方案是将模数分成两组,比如 n1 .. nr 和 nr+1 .. nk 找到集合 T1 使得 t 在T1 iff t mod ni in Si 对于所有 1 <= i <= r 和 t mod ni == 0 对于所有 r < i <= k。相应地定义了 T2。复杂度取决于模数的分布,但通常应约为可能性数量的平方根。 Schroeppel和Shamir有一个算法,可以节省一些内存,但不会降低时间复杂度。
对于您的应用,即 50 个模数和 100 个同余,该算法仍然使用大约 100^25 个步骤,这是不可行的。不幸的是,看起来没有多项式算法。特别地,已知找到方程 x^2 == a (mod n) 的最小解 x,其中n 是一个高度复合的整数,是 NP 完全的。但是找到这样的解决方案可以减少你的问题。因此,您的问题通常也应该是 NP 完全问题,除非同余具有某些可以利用的特殊属性。
关于algorithm - 最小化中国余数定理中的余数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500920/
所以,我看过一个关于 TDD 的视频,其中演示者说,你应该只对类的一部分进行单元测试,即为外部世界提供一些东西。他提到这很好,因为这种方法可以确保类遵守“契约(Contract)”,因此它履行了其职责
在CAP定理中,Redis被指定为缺乏可用性(具有分区容错性和一致性)的数据库。 但是在很多地方,Redis 被认为是一种高可用的键值存储。 什么是对的?如果您能提供深入的答案,我将不胜感激。 最佳答
我正在尝试证明以下内容: 1-pow : ∀ {n : ℕ} → 1 pow n ≡ 1 1-pow {zero} = refl 1-pow {suc x} = {!!} 我是 Adga 的新手,甚
我正在努力解决这个问题 - 我实际上已经找了一整天了! 我想我理解它背后的主要概念,但我正在努力弄清楚创建将形状投影到其上的 Axis 所需的数学? 因此,如果我有一个矩形,我会找出每个点,然后使用它
我试图证明以下内容: 1-pow : ∀ {n : ℕ} → 1 pow n ≡ 1 1-pow {zero} = refl 1-pow {suc x} = {!!} 我是 Adga 的新手,甚至不
所以我想计算任何给定三角形内的点数。我知道我必须使用 Pick 定理,但我的代码最终变得非常长,其中包含用于测试每种情况的 if-else if 语句的数量。我一直以此为指导 How many int
当说系统是 CP(一致性和分区)时,这是否意味着我们不能在复制的数据节点之间使用异步同步,并且每次写入都必须同步(甚至是事务性)复制? 据我了解,一致性意味着对于每次写入,后续读取(来自任何节点)都将
虽然我试图理解CAP中的“可用性”(A)和“分区容忍度”(P),但我发现很难理解各种文章的解释。 我感觉 A 和 P 可以走到一起(我知道事实并非如此,这就是我无法理解的原因!)。 深入浅出,A和P是
foundationdb 声明在 consistency 上吗?有效的? FoundationDB provides the strongest possible consistency model,
Azure 本身是 PaaS,而不是 IaaS。你同意? MS保证99%的可用性和强一致性。您可以在此处找到 MS SLA:http://www.microsoft.com/windowsazure/
我正试图掌握 Python 的 fft 功能,我偶然发现的一件奇怪的事情是 Parseval's theorem似乎不适用,因为它现在给出了大约 50 的差异,而它应该是 0。 import nump
我正在尝试在 Coq 中进行证明,并且我想使用我已经定义和证明的引理。以下代码可以吗? Lemma conj_comm: forall A B : Prop, A /\ B -> B /\ A. Pr
我试图通过 Isabelle(定理证明者)的 Isar 章节,第一个陈述是: lemma "¬ surj(f :: 'a ⇒ 'a set)" 我想了解什么是常数surj曾是。我知道查找定理很容易:
我想在分布式系统中使用 aerospike。 Aerospike 官方文档说: Aerospike 系统被归类为 AP 任何人都可以照亮它吗? Aerospike如何保证分布式环境下的AP模式。 最佳
这code example to generate a list of definitions对我有用,但只适用于一个索引列表。每当我尝试添加另一个列表(例如,对于定理)时,只有在设置垃圾中最后定义的
我打算使用 memcached 数据库。根据我的要求,高性能(速度)和可用性是最高优先级的。(一致性可以在某种程度上进行交易)请建议使用合适的数据库。 我正在关注 CAP Theorem . 按类别我
根据 CAP Consistency - All nodes gave the same data Availability means the ability to access the clust
如果我正确理解了 CAP 定理,可用性意味着即使节点出现故障,集群也会继续运行。 我见过很多人(http://blog.nahurst.com/tag/guide)将RDBMS列为CA,但我不明白RB
根据我目前所读到的有关 CAP 定理的所有内容,没有分布式系统可以同时提供这三者:可用性、一致性和分区容错性。 现在,Hadoop 2.x 引入了一项新功能,可以对其进行配置以消除 hadoop 集群
目前,我正在考虑拍摄图像及其光谱。现在 Parceval 的定理说两者应该具有相等的能量。然而,当我尝试在某些图像上对此进行测试时,numpy 真实 FFT 函数似乎并非如此。 这是我用于测试的代码:
我是一名优秀的程序员,十分优秀!