°Å¹æ¤Î¿ô³Ø

·×»»Ë¡ (±é»»¤Î¹â®²½)

Karatsuba¾è»»

2n ·å¤Î¿ô u¡¤v¤Î¾è»»¤ò¹Ô¤¦¤³¤È¤ò¹Í¤¨¤ë¡¥u¡¤v ¤ò´ð¿ô b ¤ÎÑÑ x = bn ¤òÍѤ¤¤Æ

u = u1x + u0¡¤¡¡v = v1x + v0

¤Î¤è¤¦¤Ë¾åȾʬ¤È²¼È¾Ê¬¤Ëʬ¤±¤ì¤Ð¡¤x ¤ò´ð¿ô¤È¤·¤¿¾è»»¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡¥

¤³¤Î¤È¤­Ã±½ã¤Ë w = u v ¤òµá¤á¤ë¤È¡¤

w = u1v1x2 + (u0v1 + u1v0)x + u0v0

¤Î¤è¤¦¤Ë n ·å ¡ß n ·å¤Î¾è»»¤¬ 4²óɬÍפǤ¢¤ë¡¥¤·¤«¤·

u0v1 + u1v0 = (u1 + u0)(v1 + v0) - (u1v1 + u0v0)

¤Þ¤¿¤Ï

u0v1 + u1v0 = u1v1 + u0v0 - (u1 - u0)(v1 - v0)

¤È¤¤¤¦´Ø·¸¤ò»È¤¨¤Ð n ·å¡ßn ·å¤Î¾è»»¤Ï 3²ó¤ÇºÑ¤à¤³¤È¤¬Ê¬¤«¤ë¡¥¤³¤³¤Ç¡¤¤µ¤é¤Ë u1,u0,v1,v0 ¤Î¾å°Ì¤Î·å¤ò 0 ¤ÇËä¤á¤Æ·å¿ô¤ò¶ö¿ô¤Ë¤¹¤ë¤«¡¤¤¢¤ë¤¤¤Ï»Ï¤á¤«¤é u¡¤v ¤Î·å¿ô¤ò 2¤ÎÑѤˤ·¤Æ¤ª¤±¤Ð¡¤3²ó¤Î¾è»»¤ËƱ¤¸¥¢¥ë¥´¥ê¥º¥à¤òºÆµ¢Åª¤ËŬÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡¥¤³¤Î¾è»»¥¢¥ë¥´¥ê¥º¥à¤ò Karatsuba¾è»»(Karatsuba Multiplication)¤È¤¤¤¦¡¥ ¤¹¤Ê¤ï¤Á¡¤ b ¿ÊË¡¤Çɽ¸½¤·¤¿¤È¤­ 2·å¤Ë¤Ê¤ëÀ°¿ôƱ»Î¤Î¾è»»¤Ï¡¤b ¿ÊË¡¤Ç 1·å¤ÎÀ°¿ôƱ»Î¤Î¾è»»¤ò 3²ó¤È¡¤¤½¤ì¤è¤ê¤â¥³¥¹¥È¤Î½½Ê¬¤Ë¾®¤µ¤¤²Ã¸º»»¤òÍѤ¤¤Æ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡¥

n = 2k¤È²¾Äꤷ¤¿¤È¤­¡¤b ¿ÊË¡¤Ç n ·å¤ÎÀ°¿ôƱ»Î¤Î¾è»»¤òKaratsuba¾è»»¤Ç¹Ô¤¦¤È¡¤b ¿ÊË¡¤Ç1·å¤ÎÀ°¿ôƱ»Î¤Î¾è»»¤¬ 3k ²óɬÍפȤʤ롥k = log2 n ¤è¤ê¡¤¤³¤ÎÊýË¡¤Ç¤Î b ¿ÊË¡¤Ç n ·å¤ÎÀ°¿ôƱ»Î¤Î¾è»»¤Î¥³¥¹¥È¤Ï¡¤3k = 3log2 n = nlog2 3 ¢â n1.585 ÄøÅ٤ǺѤळ¤È¤Ë¤Ê¤ë¡¥¼ÂºÝ¤Ë¤Ï n ¤¬ 2k ¤Çɽ¸½¤Ç¤­¤ë¤È¤Ï¸Â¤é¤Ê¤¤¤Î¤Ç¡¤ 2k ¤Çɽ¸½¤Ç¤­¤Ê¤¤¤È¤­¤Ï n1.585 ¤è¤ê¤â¾¯¤·Í¾·×¤Ë¤«¤«¤ë¡¥

¿¹à¼°¤ÎÀÑ (Karatsuba - Offman¾è»»)

¿¹à¼°¤ÎÊÑ¿ô x ¤Î·¸¿ô¤ò·×»»¤¹¤ë¤È¤­¤Ë¡¤x0 ¤ä x2 ¤Î·¸¿ô¤òºÆÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¤²Ã¸º»»¤è¤êÃÙ¤¤¾è»»¤Î²ó¿ô¤òºï¸º¤Ç¤­¹â®²½¤¬¿Þ¤ì¤ë¡Êai ¤ä bi ¤¬Â¿¹à¼°¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¸ú²Ì¤¬¤¢¤ë¡Ë¡¥

(a0 + a1 x)(b0 + b1 x) = a0b0 + (a0b1 + a1b0) x + a1b1 x2
¡¡= a0b0 + {(a0 + a1)(b0 + b1) - a0b0 - a1b1} x + a1b1 x2

(a0 + a1 x + a2 x2)(b0 + b1 x + b2 x2)
¡¡= a0b0 + [{(a0 + a1)(b0 + b1) - a1b1} - a0b0] x + [(a0 + a1 + a2)(b0 + b1 + b2)
¡¡ - {(a0 + a1)(b0 + b1) - a1b1} - {(a1 + a2)(b1 + b2) - a1b1}] x2
¡¡ + [{(a1 + a2)(b1 + b2) - a1b1} - a2b2] x3 + a2b2 x4

Ãæ¹ñ¿Í¤Î¾ê;ÄêÍý

¾ê;±é»»

µÕ¸µ

Montgomery »»Ë¡


inserted by FC2 system