Time complexity 计算机所有可能对两个列表的效率

Time complexity 计算机所有可能对两个列表的效率,time-complexity,Time Complexity,假设我有两组数字,我想构建其中的所有值对。例如: A = {1, 2} B = {3, 4} Out = {(1,3), (1,4), (2,3), (2,4)} 我的集合的查找时间为O(1)。如果集合没有相同的大小,也可以用O(|A |+|B |)计算输出,但我找不到任何解决方案[简单的解决方案是两个foor循环,但这是O(n^2)]。你能告诉我如何在给定的复杂度下计算这个吗?不,你不能比两个for循环做得更好。这样想吧。对于A中的每个元素,必须输出B元素。所以你的运行时间总是A*B的倍数

假设我有两组数字,我想构建其中的所有值对。例如:

A = {1, 2}
B = {3, 4}
Out = {(1,3), (1,4), (2,3), (2,4)}

我的集合的查找时间为O(1)。如果集合没有相同的大小,也可以用O(|A |+|B |)计算输出,但我找不到任何解决方案[简单的解决方案是两个foor循环,但这是O(n^2)]。你能告诉我如何在给定的复杂度下计算这个吗?

不,你不能比两个for循环做得更好。这样想吧。对于A中的每个元素,必须输出B元素。所以你的运行时间总是A*B的倍数

让我们修改上面的示例,使A包含3个元素

A = {1, 2, 3}
B = {3, 4}
Out = {(1,3), (1,4), (2,3), (2,4), {3,3}, {3,4}}
所以你有6个输出元素,初始集合| A |=3和| B |=2。您声称您的输出应该是| A |+B |,即5。所以你最初的假设是不正确的


最好的优化是确保每个元素可以在O(1)个时间内枚举集合中的元素

不,两个for循环不能比两个更好。这样想吧。对于A中的每个元素,必须输出B元素。所以你的运行时间总是A*B的倍数

让我们修改上面的示例,使A包含3个元素

A = {1, 2, 3}
B = {3, 4}
Out = {(1,3), (1,4), (2,3), (2,4), {3,3}, {3,4}}
所以你有6个输出元素,初始集合| A |=3和| B |=2。您声称您的输出应该是| A |+B |,即5。所以你最初的假设是不正确的


最好的优化是确保每个元素可以在O(1)个时间内枚举集合中的元素

“应该可以用O(| A |+| B |)计算我的输出”:当输出的大小为O(| A |*| B |)时?“应该可以用O(| A |+| B |)计算我的输出”:当输出的大小为O(| A |*| B |)时?