【求助】关于分治算法(小弟做了N久了,谢谢大哥帮忙呀)
bzwm 2005-06-21 10:02:32 用分治法求两个n位大整数 u和v 的乘积时,将 u和v 都分割成长度位n/3 位的3段。怎么才结合分配才能用5次 n/3位整数的乘法求得 uv 的值。
小弟我是先把 (注:3^2n/3 的意思是 3的 2n/3 次方,这里m表示这些数是几进制数,比如m为2,则表示u,v,A,B,C,D,E,F为二进制数)
u = A×m^(2n/3) + B×m^(n/3) + C
v = D×m^(2n/3) + E×m^(n/3) + F
比如 这里定义m=10, u=123456789,是 n=9的9位10进制数,则分解后为
123456789=123×10^6 + 456×10^3 + 789
说明到此
按照我原来的假定
uv= [A×m^(2n/3) + B×m^(n/3) + C]×[D×m^(2n/3) + E×m^(n/3) + F]
=AD×m^(4n/3)+AF×m^(2n/3) +BE×m^(2n/3)+CD×m^(2n/3)+AE×m^n +BD×m^n + CE×m^(n/3) +BF××m^(n/3) +CF
经过结合分配整理得
uv=AD×m^(4n/3) +[(A-B)(E-D)+AD+BE]×m^n + [BE+(A-C)(F-D)+CF+AD]×m^(2n/3)[(B-C)(F-E)+CF+BE]×m^(n/3) +CF
需要计算 AD,BE,CF ,(A-B)(E-D),(A-C)(F-D),(B-C)(F-E) 这六次 n/3 位整数得乘法,要怎么分配结合整理才能得到 5次,谢谢各位了!
也可以发Email给我,jnbzwm@163.com
谢谢了!