看板 Prob_Solve 關於我們 聯絡資訊
在不碰 fft , 搞效能時想到的一招, 但不確定 Big-O 為何, 也不確定這種方式會比較快 (與 Cij = ΣΣAi*Bj 比) 想請教各位先進。 --- 假設以 100 為進位,計算 1234 * 5678 1234 * 5678 = (12*100 + 34) * (56 * 100 + 78) = { 12*56*10000 + (12*78+34*56)*100 + 34*78 } [00][00][12][34] x [00][00][56][78] ----------------------- (0) rst = [00][00][00][00] (1) 34*78 = 2652 rst = [00][00][00][2652] = [00][00][26][52] (2) 12*78+34*56 = 2840 rst = [00][00][26+2840][52] = [00][00][2866][52] = [00][28][66][52] (3) 12*56 = 672 rst = [00][28+672][66][52] = [00][700][66][52] = [07][00][66][52] 整個流程可以再用遞回不斷分割,分割過程是 O(logn), 但最後的相乘還要是 O(n^2),請教整體的 Big-O 為何? 謝謝各位先進不吝賜教,感激不盡。 -- ~ 這輩子與神手無緣 我只好當神獸了 ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.161
FRAXIS:你分解成4個小問題 每個小問題都是原本的一半 所以是O(n^2) 01/02 10:42
FRAXIS:你可以參考一下 Karatsuba algorithm 01/02 10:43
EdisonX:原來如此,看來我的想法似乎沒助益,謝謝 F 大 :) 01/02 10:57
EdisonX:疑!我查一下 Karatsuba algorithm, 真的有助益, 感謝 :) 01/02 11:00