Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 给定两个桶,每个桶包含一组相同的球,每个球有两个彩色数字,某个匹配算法是否缩放为N^2?_Performance_Math_Combinations_Scaling_Combinatorics - Fatal编程技术网

Performance 给定两个桶,每个桶包含一组相同的球,每个球有两个彩色数字,某个匹配算法是否缩放为N^2?

Performance 给定两个桶,每个桶包含一组相同的球,每个球有两个彩色数字,某个匹配算法是否缩放为N^2?,performance,math,combinations,scaling,combinatorics,Performance,Math,Combinations,Scaling,Combinatorics,对于一个客户,我有一个缩放问题,我已经归结为以下基本的组合问题 假设有一个包含N个球的桶,每个球上都写有一个随机的红色数字和一个随机的蓝色数字。(假设所有数字都是正整数。) 假设第二个桶中有一组相同的球(即,它也有N个球,根据球上写的数字,球与第一个桶中的球完全对应。) 对于计算机程序中的大型N,我希望尽可能高效地为我的客户回答以下问题: 考虑两个铲斗之间每个可能的球配对(即,第一个铲斗的一个球和第二个铲斗的一个球)。有多少这样的对满足了这样一个条件:对中两个红色数字的乘积与对中两个蓝色数字的乘

对于一个客户,我有一个缩放问题,我已经归结为以下基本的组合问题

假设有一个包含
N
个球的桶,每个球上都写有一个随机的红色数字和一个随机的蓝色数字。(假设所有数字都是正整数。)

假设第二个桶中有一组相同的球(即,它也有
N
个球,根据球上写的数字,球与第一个桶中的球完全对应。)

对于计算机程序中的大型
N
,我希望尽可能高效地为我的客户回答以下问题:

考虑两个铲斗之间每个可能的球配对(即,第一个铲斗的一个球和第二个铲斗的一个球)。有多少这样的对满足了这样一个条件:对中两个红色数字的乘积与对中两个蓝色数字的乘积相同

StackOverflow的问题是:解决这个问题的最有效的算法是什么?我想是的,但我无法证明

谢谢

没有。我有一个
O(N)
解决方案,涉及一个哈希表,其中一个bucket的
red\u value/blue\u value
的(减少的)比率。填写此哈希表是
O(N)
。将另一个存储桶中的
蓝色\u值/红色\u值
与此表匹配也是
O(N)
,因为每次查找都是
O(1)

这是一个哈希表,不是哈希集,因为可以有多个具有相同比率的球


你也可以使用trie进行
O(1)
查找。

这个问题似乎离题了,因为它是关于一般的计算机科学问题,而不是特定的编程问题。程序员.stackexchange.com更适合,或者可能是数学.stackexchange。com@DanielMann你是否也认为这是一个糟糕的问题,应该被否决,还是应该作为离题题而结束?@Dan:这是一个精心设计的问题,但不是一个实用的编程问题。您尚未指定语言或提供任何代码;没有这些问题是不现实的。但是你可以标记一个版主来迁移它(在标记消息中,提醒他们你是作者)@DanielMann我讨论了在哪个网站上发布,发现一个软件算法被列为StackOverflow的适当问题,所以我在这里发布了。谢谢。
O(N)
scaling是否也会扩展到3个或更多桶(匹配所有三个(或更多)红色数字与所有三个(或更多)蓝色数字的乘积)?@DanNissenbaum:不,这是每个桶的球数
O(N^2)
。它也会随着桶的数量而增加,可能是线性的。我认为总体上
O(M*N^(M-1))
最坏的情况,虽然你可能不会有
N^(M-1)
不同的比率,所以平均情况更好。事实上,因为所有桶中的数字都被限制为相等,所以你保证重复比率。很多所以你可以除以
2^M
左右。