我用这个更新了我之前问过的一个问题,但是当原始问题得到回答时,我猜我应该在一个新问题中单独问它。
以简单的乘法算法为例。我在很多地方看到声称这是一个 Log^2(N) 操作。给出的解释是,这是因为它由 Log(N) 和 Log(N) 数组成。
我遇到的问题是,虽然这是真的,但它忽略了这样一个事实,即每个 Log(N) 数字都是位移的结果,到最后我们将至少位移 Log(N) 次。由于位移 1 是一个 Log(N) 操作,因此单独考虑的位移会给我们 Log^2(N) 操作。
因此,当我看到它进一步声称实际上乘法实际上并不使用 Log^2(N) 运算时,这对我来说毫无意义,因为各种方法可以减少所需加法的数量。由于仅移位就给了我们 Log^2(N) 我对这种说法如何正确感到困惑。
事实上,无论有多少加法,任何移位和加法方法似乎都有这个位成本。
即使我们使用完美的最小位编码,任何 Mbit 乘 Nbit 乘法都会产生大约 M+Nbit 数,因此 M+N 位必须至少移动 N 次才能输出/存储/组合项,这意味着最小 N ^2 位操作。
这似乎与 Toom-Cook 等声称的操作数量相矛盾,所以有人可以指出我的推理存在缺陷的地方。