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