µ±Ç°Î»ÖãºÊ×Ò³ > ´®Æ¥ÅäBMËã·¨¡¢KMPËã·¨¡¢BFËã·¨
.
ʵÑ鱨¸æÒ» ´®Æ¥ÅäÎÊÌâ
°à¼¶£º_¼ÆËã»úʦ _ ѧ ºÅ£º 2 ÐÕ Ãû£º_ Ò»¡¢ÊµÑéÌâÄ¿£º¸ø¶¨Ò»¸öÎı¾, ÔÚ¸ÃÎı¾ÖвéÕÒ²¢¶¨Î»ÈÎÒâ¸ø¶¨×Ö·û´®¡£ ¶þ¡¢ÊµÑéÄ¿µÄ£º (1) Éî¿ÌÀí½â²¢ÕÆÎÕÂùÁ¦·¨µÄÉè¼ÆË¼Ïë; (2) Ìá¸ßÓ¦ÓÃÂùÁ¦·¨Éè¼ÆËã·¨µÄ¼¼ÄÜ; (3) Àí½âÕâÑùÒ»¸ö¹Ûµã: ÓÃÂùÁ¦·¨Éè¼ÆµÄËã·¨, Ò»°ãÀ´Ëµ, ¾¹ýÊʶȵÄŬÁ¦ºó, ¶¼¿ÉÒÔ¶ÔËã·¨µÄµÚÒ»¸ö°æ±¾½øÐÐÒ»¶¨³Ì¶ÈµÄ¸ÄÁ¼, ¸Ä½øÆäʱ¼äÐÔÄÜ¡£ Èý¡¢ÊµÑéÒªÇó£º (1) ʵÏÖ BFËã·¨; (2) ʵÏÖ BFËã·¨µÄ¸Ä½øËã·¨: KMP Ëã·¨ºÍ BM Ëã·¨; (3) ¶ÔÉÏÊö3¸öËã·¨½øÐÐʱ¼ä¸´ÔÓÐÔ·ÖÎö, ²¢Éè¼ÆÊµÑé³ÌÐòÑéÖ¤·ÖÎö½á¹û¡£ ËÄ¡¢Ëã·¨ÃèÊö£¨¶ÔËã·¨Ö÷Òª²¿·Ö½øÐÐα´úÂëÃèÊö»ò»³öÁ÷³Ìͼ£© BFËã·¨£º »ù±¾Ë¼Ï룺´ÓÖ÷´®SµÄµÚÒ»¸ö×Ö·û¿ªÊ¼ºÍģʽTµÄµÚÒ»¸ö×Ö·û½øÐбȽϣ¬ÈôÏàµÈ£¬Ôò¼ÌÐø±È½ÏÁ½ÕߵĺóÐø×Ö·û£»Èô²»ÏàµÈ£¬Ôò´ÓÖ÷´®SµÄµÚ¶þ¸ö×Ö·û¿ªÊ¼ºÍģʽTµÄµÚÒ»¸ö×Ö·û½øÐбȽϣ¬Öظ´ÉÏÊö¹ý³Ì£¬ÈôTÖеÄ×Ö·ûÈ«²¿±È½ÏÍê±Ï£¬Ôò˵Ã÷±¾ÌËÆ¥Åä³É¹¦£»Èô×îºóÒ»ÂÖÆ¥ÅäµÄÆðʼλÖÃÊÇn-m£¬ÔòÖ÷´®SÖÐʣϵÄ×Ö·û²»×㹻ƥÅäÕû¸öģʽT£¬Æ¥Åäʧ°Ü¡£Õâ¸öËã·¨³ÆÎªÆÓËØµÄģʽƥÅäËã·¨£¬¼ò³ÆBFËã·¨¡£ KMPËã·¨£º »ù±¾Ë¼Ï룺 1. ÔÚ´®SºÍ´®TÖзֱðÉè±È½ÏµÄÆðʼϱêiºÍj£» 2. Ñ»·Ö±µ½SÖÐËùÊ£×Ö·û³¤¶ÈСÓÚTµÄ³¤¶È»òTÖÐËùÓÐ×Ö·û¾ù±È½ÏÍê±Ï 2.1 Èç¹ûS[i]=T[j]£¬Ôò¼ÌÐø±È½ÏSºÍTµÄÏÂÒ»¸ö×Ö·û£»·ñÔò 2.2 ½«jÏòÓÒ»¬¶¯µ½next[j]λÖ㬼´j=next[j]£» 2.3 Èç¹ûj=0£¬Ôò½«iºÍj·Ö±ð¼Ó1£¬×¼±¸ÏÂÒ»Ì˱Ƚϣ» 2.4 Èç¹ûTÖÐËùÓÐ×Ö·û¾ù±È½ÏÍê±Ï£¬Ôò·µ»ØÆ¥ÅäµÄÆðʼϱꣻ·ñÔò·µ»Ø0£» BMËã·¨£º »ù±¾Ë¼Ï룺BMËã·¨ÓëKMPËã·¨µÄÖ÷񻂿±ðÊÇÆ¥Åä²Ù×÷µÄ·½Ïò²»Í¬¡£ËäÈ»BMËã·¨½ö°ÑÆ¥Åä²Ù×÷µÄ×Ö·û±Èͻ˳Ðò¸ÄΪ´ÓÓÒÏò×󣬵«Æ¥Åä·¢Éúʧ°Üʱ£¬Ä£Ê½TÓÒÒÆµÄ¼ÆËã·½·¨È´·¢ÉúÁ˽ϴóµÄ±ä»¯¡£ .
. ¿ª¿ªÖ÷´®S³¤¶ÈÖ÷´®S³¤¶È¡úm 0¡úa 0¡úb N a¨QģʽT³¤¶È0¡úi N i . ¿ª0¡úa 0¡úb 0¡úz ģʽT³¤N i¨QÖ÷´®S³¤Y ģʽT³¤j¨R0ÇÒS[i]=T[j] Y i¼õ1 N j¼õ1 Y j<0 N i+DIST(T,S½áBMËã·¨ . . Î塢ʵÑé½á¹ûÓë½áÂÛ£º£¨¸ø³ö²âÊÔÊý¾ÝÒÔ¼°³ÌÐòÔËÐнá¹û£¬²¢½øÐбȽϣ¬µÃ³ö×Ô¼ºµÄ½áÂÛ£© Éè¼ÆË¼Ï룺ÉèÎı¾´®T£¬Ä£Ê½´®ÎªP¡£Ê×ÏȽ«TÓëP½øÐÐ×ó¶ÔÆë£¬È»ºó½øÐдÓÓÒÏò×ó±È½Ï£¬ÈôÊÇijÌ˱Ƚϲ»Æ¥Åäʱ£¬BMËã·¨¾Í²ÉÓÃÁ½ÌõÆô·¢Ê½¹æÔò£¬¼´»µ×Ö·û¹æÔòºÍºÃºó׺¹æÔò£¬À´¼ÆËãģʽ´®ÏòÓÒÒÆ¶¯µÄ¾àÀ룬ֱµ½Õû¸öÆ¥Åä¹ý³ÌµÄ½áÊø¡£ BEËã·¨£º #include
¹²·ÖÏí92ƪÏà¹ØÎĵµ