【问题标题】:Big O notation depend on matrix size only or data type(integer, Boolean) as well?大 O 表示法仅取决于矩阵大小或数据类型(整数,布尔值)?
【发布时间】:2019-11-07 12:35:02
【问题描述】:

大 O 符号是否仅取决于矩阵的维数?或者它也将取决于数据类型(整数或布尔值)。

假设如果我有两个大小为 mat=M x N 的矩阵,我必须将它们相乘。如果矩阵的数据类型是整数,则计算机上的运行时间是不同的,但如果数据类型是 bolean[+1,-1],则计算机上的运行时间会减少。如何同时考虑数据类型来编写大 O 表示法。

【问题讨论】:

  • 如何将truefalse 相乘?为什么是true === +1false === -1? o.O
  • “在计算机科学中,大 O 表示法用于根据算法的运行时间或空间需求如何随着输入大小的增长而增长。” i> (Source)
  • 我正在从事与通信相关的工作,因此将我的矩阵量化为低位,它们的模拟时间不同,现在我正在努力用大 O 表示法,数据类型(16 位,8 bits , 2 bits),矩阵的维数在所有情况下都是相同的。它们的大 O 符号会不同还是相同?

标签: javascript math computer-science mathematical-optimization quantization


【解决方案1】:

你没有考虑到它; big-O 在所有情况下都是相同的。 Big-O 是关于缩放;随着输入规模的增长,相对于基线工作,你做了多少更多工作?

除非算法针对矩阵的每个元素缩放到任意位长度,否则布尔值和整数之间的差异将是一个常数乘数,并且在 big-O 表示法中会忽略常数乘数。对于 16 vs. 8 vs. 2 vs. 1 的选择,这并不是真正的任意增长;对于 10x10 的矩阵,16 位可能需要 1 位的 16 倍,但如果对于 20x20 的矩阵也需要 1 位的 16 倍,则缩放因子是相同的。

注意:在真实硬件上,性能可能会有更显着的变化(停止适合缓存行或缓存的矩阵会显着改变行为),但 big-O 是关于理想化的计算设备,没有这样的限制。

【讨论】:

  • 感谢您的回复@ShadowRanger,您能否添加一些研究论文来支持您的回答
  • @farzanahassan:Big-O 是一种描述算法缩放的特定方式的定义,它与您似乎想要的研究论文无关(研究论文接受该定义,研究算法使用改进的大 O 性能)。我会从reading Wikipedia's definition开始。
猜你喜欢
  • 2015-07-03
  • 2014-07-09
  • 1970-01-01
  • 2011-02-03
  • 2017-01-30
  • 2023-04-01
  • 2016-07-17
  • 2021-10-13
  • 2016-12-01
相关资源
最近更新 更多