½º º Àǹ ÇÊ ËÁ ù Ä ÇÊÁÌÅÁ ½ à ÖÔ Ê Ò Ø Ö Ø Ð Ú Ø ÑÝ ÙÒ Ú Ö Ð Ò ÙØÙ Ò Ô ÖÙ ØÙÚ Ú Ö Ó Ø Ð ÓÖ ØÑ Ø Î Ð Ø Ò q ØÙÒÒ Ø ÐÙ Ù ÓÙ Ó Ø Qº Q Ò ÐÙÚÙØ ÚÓ Ú Ø ÓÐÐ Ô Ò Ò Ò Ò Ø ÖÚ Ø ÓÐÐ Ð ÙÐÙ Ù º ÎÖÒ Ø ÑÝ Ò ØÓ ÒÒ ÝÝ ÓÒ Ö ØØ Ò Ô Ò Ý ØØ Ø Ö ÔÔÙ¹ Ñ ØØ ÙÒ Ú Ö Ð Ù µº q ÚÓ Ò ÑÝ Ú Ø Ò ÚÖÒ Ø ÑÝ Ò ØØÙ º ½º Ó¹ ÓÖ ¹ Ð ÓÖ ØÑ º Ó ² ź ÓÖ º ÒØ ØÖ Ò Ñ Ø Ò Ò ØÓ Ð Ó Ö Ô Ö º ÓÑÑÙÒ Ø ÓÒ Ó Ø Å ½ µ ¼ ½ º ÃÅȹ Ð ÓÖ ØÑ Ò ÝÐ ØÝ Ù ÐÐ ÑÓÐÐ º ÇÒ ÒÒ ØØÙ Ø Ø S S = n ÓÙ Ó ÑÓ P = {P 1,...,P k }º Å Ö ØÒ P = m = k i=1 P i º ÇÒ Ø ØØÚ S Ø Ò P i P ÒØÝÑغ Ê Ø Ù ½º ËÓÚ ÐÐ Ø Ò Ñº ÃÅȹ Ð ÓÖ ØÑ ÚÙÓÖÓØ ÐÐ Ò ÙÐÐ Ò ÑÓÐÐ P i º Ú Ø ÑÙ Ô ÑÑ Ø Ô Ù O(m + kn)º ¾º Ó¹ ÓÖ ¹ Ð ÓÖ ØÑ º Ì Ø S Ð Ø Ò Ú Ò ÖÖ Òº Ú Ø ÑÙ ÓÒ Ô ÑÑ Ø Ô Ù O(m + n) Ø ØÝ Ò ÐÐÝØÝ Òµº º ÅÝ Å¹ Ð ÓÖ ØÑ ÐÐ Ò Ú Ö Ø Ó ÐÐ ÓÒ Ú Ø Ú ÝÐ ØÝ º
½ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË Ó¹ ÓÖ ÅÙÓ Ó Ø Ø Ò P ÐÐ ÓÒÓÒ ÓÚ ØÙ ¹ ÙØÓÑ ØØ M P º M P Ò Ó Ø Î Ö Ò Ø ÖØÝÑØ goto[j, a] Ø Ð Ø j ÖÖÝØÒ Ñ Ö ÐÐ a Ø Ð Ò goto[j, a]º ÂÓ Ø Ð Ø j ÓÐ ÖØÝÑ a ÐÐ goto[j, a] = º ÃÓÖ Ù ÖØÝÑØ fail[j] Ó goto[j, a] = ÚÙÓÖÓ ÓÐ Ú ÐÐ Ø ¹ Ø Ñ Ö ÐÐ a Ø º Ñ Ò Ú Ö Ò Ò Ò ÖØÝÑ ÓÚ µ ÖÖÝØÒ Ø Ð Ò fail[j]º ÌÙÐÓ ØÙ ÙÒ Ø Ó output[j] ÐØ ÑÓØ ÓØ ØÙÐÓ Ø Ø Ò ÙÒ ØÙÐÐ Ò Ø Ð Ò j Ø º Ò Ò ÑÓ Ò ÒØÝÑØ ÓÒ ÒÝØ Ð Ý ØØݵº Ñ Ö ½º º½ Ó¹ ÓÖ ÓÒÓÒ ÓÚ ØÙ ¹ ÙØÓÑ ØØ M P ÑÓ ÓÙ ÓÐÐ P = { Ö }º Î Ö Ò Ø ÖØÝÑØ ÑÙÓ Ó Ø Ú Ø P Ø Ò º ØÖ ¹Ö ÒØ Òº Î Ö Ò Ò Ò ÖØÝÑ ÒÙÓÐ Ý Ø Ò ÐÐ Ú Ú ÐÐ µ ÐÙ Ø Ø Ø Ý Ò Ñ Ö Ò Ñº goto[1, i] = 6º ÃÓÖ Ù ÖØÝÑ ÒÙÓÐ Ø ÓÚ Ú ÐÐ µ ÙÖ Ø Ò Ó Ú Ö Ò ¹ Ò Ò ÓÚ Ñº fail[9] = 3 Ó Ø Ø Ð Ø 0µ Ð Ø ÓÖ Ù ÖØÝÑ Ð ÙØ Ð Ò 0 Ó Ø Ú Ø ÓÖ Ù ÖØÝÑØ ÓÒ Ø ØØÝ Ñ Ö Ø ÑØصº ÌÙÐÓ ØÙ ÙÒ Ø Ó j output[j] ¾ { } { } { } { Ö }
½º º Àǹ ÇÊ ËÁ ù Ä ÇÊÁÌÅÁ ½ Ë ÙÖ Ú Ð ÓÖ ØÑ ØØ M P Ò ØÓ Ñ ÒÒ Ò ÙÒ Ð S Ò Ð ÓÖ ØÑ ½º º¾ Ó¹ ÓÖ ¹ Ð Ù ËÝ Ø S M P ÙÒ Ø ÓØ goto fail output ÑÓ ÓÙ ÓÐÐ Pµ ÌÙÐÓ Ø Ã P Ò ÑÓ Ò ÒØÝÑØ ÒØÝÑ Ò ÐÓÔÔÙ Ó Øµ S ½µ state := 0 ¾µ ÓÖ j := 0 ØÓ n 1 Ó µ Û Ð goto[state,s[j]] = Ó state := fail[state] µ state := goto[state,s[j]] µ output[state] Ø Ò print(j,output[state]) ÓØÓ¹ ÙÒ Ø ÓÒ ÓÒ ØÖÙ Ø Ó Ä ØÒ ÑÓØ P i Ý Ø ÐÐ Ò ØÖ ¹Ö ÒØ Ò Ó ØØ goto¹ ÙÒ Ø ÓØ º ÃÙÒ P i ÓÒ Ð ØØÝ Ô Ú Ø ØÒ Ñ ÐÐ output¹ ÙÒ Ø ÓØ º fail¹ ÙÒ Ø ÓÒ ÓÒ ØÖÙ Ø Ó ØÝ ÒØ output¹ ÙÒ Ø ÓÒµº Ð ÓÖ ØÑ ½º º Ó¹ ÓÖ ¹ ÔÖÓ Ó ÒØ Á ËÝ Ø P = {P 1,...,P k } ÌÙÐÓ Ø goto¹ ÙÒ Ø Ó Ó ØØ Ò Ð ØØÙ output¹ ÙÒ Ø Ó ÐÙ ØÙ output[s] = ÐÐ s goto[s,a] = ÐÐ s aº ½µ newstate := 0 ¾µ ÓÖ i := 1 ØÓ k Ó µ state := 0;j := 0 µ Û Ð goto[state,p i [j]] Ó µ state := goto[state,p i [j]] µ j := j + 1 µ ÓÖ h := j ØÓ P i 1 Ó µ newstate := newstate + 1 µ goto[state,p i [h]] := newstate ½¼µ state := newstate ½½µ output[state] := {P i } ½¾µ ÓÖ a Σ Ó goto[0,a] = Ø Ò goto[0,a] := 0
½ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË Ð¹ ÙÒ Ø ÓÒ ÓÒ ØÖÙ Ø Ó Ä ÒØ Ø Ò Ø Ó ØØ Ò Ð Ò goto¹øö Ò ÙÙÖ Ø º Ì ÓÐÐ d Ø ÐÓ Ò fail¹ ÙÒ Ø ÓÒ Ð Ñ Ý Ò Ø ÓÒ d 1 Ø Ð Ø r ÐÔ ÙÖ Ú Ø ½º ÂÓ ÐÐ a Ø Ò ØØ goto[r, a] = s s µ state := fail[r] µ ÌÓ Ø state := fail[state] ÙÒÒ ÚÙØ Ø Ò state ÓÐÐ goto[state, a] º Ë ÐÐ Ò Ò Ð ÝØÝÝ Ò Ó goto[0, a] ºµ µ Ø fail[s] := goto[state, a] Ð ÓÖ ØÑ ½º º Ó¹ ÓÖ ¹ ÔÖÓ Ó ÒØ ÁÁ ËÝ Ø goto¹ ÙÒ Ø Ó ÐÙ Ø Ú output¹ ÙÒ Ø Ó Ð ÓÖ ØÑ Ø ½º º ÌÙÐÓ Ø fail¹ ÙÒ Ø Ó ÐÓÔÙÐÐ Ò Ò output¹ ÙÒ Ø Ó ½µ queue := ¾µ ÓÖ a Σ Ó goto[0,a] 0 Ø Ò µ s := goto[0,a] µ push back(queue,s) µ fail[s] := 0 µ Û Ð queue Ó µ r := pop front(queue) µ ÓÖ a Σ Ó goto[r,a] Ø Ò µ s := goto[r,a] ½¼µ push back(queue,s) ½½µ state := f ail[r] ½¾µ Û Ð goto[state,a] = Ó state := fail[state] ½ µ f ail[s] := goto[state, a] ½ µ output[s] := output[s] output[fail[s]] ¹ Ð ÓÖ ØÑ Ò Ó ÐÐ ÙÙ ÂÓ Ø Ð Ø 0 Ø Ð Ò s Ó Ø Ú goto¹ö ØØ Ð ÓÒÓÒ u ÙØ ÙØ Ò u Ø s¹ ÓÒÓ º Ã Ò s¹ ÓÒÓ Ò s M P ÓÙ Ó ÙØ ÙØ Ò M P ¹ ÓÒÓ º ÂÓÒÓ u ÓÒ M P ¹ ÓÒÓ Ó ÓÒ ÓÒ Ò ÑÓÒ P i P Ð ÙÓ º
½º º Àǹ ÇÊ ËÁ ù Ä ÇÊÁÌÅÁ ½ Ä ÑÑ ½º º ÇÐ Ø Ø Ò ØØ ÓÒÓ u ÓÒ s¹ ÓÒÓ v ÓÒ t¹ ÓÒÓ ÙØÓÑ Ø M P º Ë ÐÐÓ Ò fail[s] = t Ó Ú Ò Ó v ÓÒ u Ò Ô Ò ØÓ ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓº ÌÓ ØÙ º ÃÝØ ØÒ Ò Ù Ø ÓØ u Ò s Ò ÝÚÝÝ Òµ Ù Ø Òº ÃÙÒ u = 1 Ð º ½º º ØØ fail[s] := 0º ÃÓ 0¹ ÓÒÓ ÓÒ ØÝ ÓÒÓ Ó ÓÒ u Ò ÒÓ ØÓ ÐÓÔÔÙÓ Ú Ø ÔØ º ÇÐ Ø Ø Ò ØØ u = j + 1 j > 0 ØØ Ú Ø ÓÒ ØÓ ÐÐ Ø ÐÓ ÐÐ Ó Ò ÝÚÝÝ ÓÒ Ò ÒØÒ jº ÇÐ ÓÓÒ u[0...j) r 0 ¹ ÓÒÓ Ð goto[r 0, u[j]] = sº ÇÐ ÓÓØ r 1,...,r p Ø ÐÓ Ø Ò ØØ ½º r i+1 = fail[r i ] 0 i < p ¾º goto[r i, u[j]] = 1 i < p º goto[r p, u[j]] = t º Ë r 1,...,r p ÓÚ Ø Ò Ø Ð Ø Ø Ø Ó Ò ÙØØ Ð º ½º º Ò Ò Ð¹ ÑÙ ÙÐ º Ë Ò Ð Ò Ð ÓÖ ØÑ ØØ fail[s] := tº ÇÐ ÓÓÒ v i r i ¹ ÓÒÓ 0 i pº ÁÒ Ù Ø Ó¹ÓÐ ØÙ Ø ÙÖ ØØ v 1 ÓÒ v 0 = u[0...j) Ò Ô Ò ØÓ ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓº Î Ø Ú Ø v 2 ÓÒ v 1 Ò Ô Ò ØÓ ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓ Ò º v 0 Ò Ó Ò Ò ØÓ ÐÓÔÔÙÓ ÓÒ ÑÝ v 1 Ò ÐÓÔÔÙÓ º Ë Ø Ò v 2 Ò ØÝØÝÝ ÓÐÐ v 0 Ò ØÓ Ô Ò ØÓ ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓº Î Ø Ú Ø v 3 ÓÒ v 0 Ò ÓÐÑ ÒÒ Ô Ò ØÓ ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓ Ò º Ë Ø Ò v p ÓÒ v 0 Ò Ô Ò ØÓ ÐÓÔÔÙÓ ÓÐÐ v p u[j] = v ÓÒ M P ¹ ÓÒÓº Ë v ÓÒ u Ò Ô Ò ØÓ ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓº Ä ÑÑ ½º º ÌÙÐÓ ÓÙ Ó output[s] ÐØ ÓÒÓÒ y Ó Ú Ò Ó y ÓÒ Ó Ò P Ò ÑÓ Ó ÓÒ s¹ ÓÒÓÒ ÐÓÔÔÙÓ º ÌÓ ØÙ º ÃÙØ Ò Ä ÑÑ ½º º º Ä ÑÑ ½º º ÃÙÒ M P ÓÒ Ð ÒÒÙØ Ð º ½º º¾µ j + 1 Ñ Ö S Ò ÐÙ Ø ÓÒ Ø Ð s Ó Ú Ò Ó s¹ ÓÒÓ ÓÒ S[0...j] Ò Ô Ò ÐÓÔÔÙÓ Ó ÓÒ M P ¹ ÓÒÓº
½ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË ÌÓ ØÙ º ÃÙØ Ò Ä ÑÑ ½º º º Ä Ù ½º º Ð ÓÖ ØÑ ½º º¾ ØÙÐÓ Ø Ø ÑÐÐ Ò P Ò ÒØÝÑØ S غ ÌÓ ØÙ º Ë ÙÖ Ú Ø Ú ØØ Ø ÓÚ Ø Ý ØÔ ØÚ j ÓÒ P i Ò ÒØÝÑÒ ÔØØÝÑ Ó Ø S º P i ÓÒ S[0...j] Ò ÐÓÔÔÙÓ º s ÓÒ Ø Ð Ó Ð ÓÖ ØÑ ÓÒ S[0...j] Ò Ð Ù Ò Ð Ò P i ÓÒ s¹ ÓÒÓÒ ÐÓÔÔÙÓ º Ä ÑÑ ½º º µº s ÓÒ Ø Ð Ó Ð ÓÖ ØÑ ÓÒ S[0...j] Ò Ð Ù Ò Ð Ò output[s] ÐØ P i Ò Ä ÑÑ ½º º µº Ð ÓÖ ØÑ ØÙÐÓ Ø ØØ j ÓÒ P i Ò ÒØÝÑÒ ÐÓÔÔÙ Ó Ø S º ¹ Ð ÓÖ ØÑ Ò Ú Ø ÑÙ Ä Ù ½º º ÙØÓÑ ØØ M P Ð º ½º º¾µ Ø Ú ÑÑÒ Ù Ò 2n Ø Ð Ö¹ ØÝÑ Ð Ø Ò Ø Ø Ò S S = nº ÌÓ ØÙ º Fail¹ ÖØÝÑ ÚÓ ÓÐÐ ÓÖ ÒØ Ò goto¹ ÖØÝÑ Ò ÑÖ 1 Ó Ó Ò Ò fail¹ ÖØÝÑ Ó Ø Ó Ø Ð ÑÑ Ø Ð 0 Ð ÝÚÝÝ Ú Ò µº ÃÓ goto¹ ÖØÝÑ ÓÒ n ÔÐ fail¹ ÖØÝÑ ÚÓ ÓÐÐ ÓÖ ÒØ Ò n 1 ÔÐ ÓØ Ò ÖØÝÑ ÓÒ Ý Ø Ò Ú ÑÑÒ Ù Ò 2n Ôк Ä Ù ½º º Ð ÓÖ ØÑ ÐÐ ½º º¾ ØÙ Ú ÖØ ÐÙ Ò ÑÖÒ O(n) Ö ÚÐØØÑØØ ØÓ Ø ØØ ØÓ ÐÐ Ò Ò Ú Ø ÑÙ ÓÐ ÑÝ O(n)º Ú ¹ Ø ÑÙ Ò Ú ÙØØ Ú Ø ÑÝ ÙÖ Ú Ø ÓÔ Ö Ø ÓØ ½º goto[q, a] Ò Ú ÐÙÓ ÒØ O(1) Ø O(log min(k, σ)) ¾º fail[q] Ò Ú ÐÙÓ ÒØ O(1) º Ø Ø Ù output[q] = O(1) º output[q] Ò ØÙÐÓ Ø Ñ Ò Ò ÂÓ ÙÒ Ø ÓØ Ø ØÒ Ø ÙÐÙ Ó Ò Ð º ½º º¾ Ò Ú Ø ÑÙ ÓÒ O(n + r) Ñ r ÓÒ ÒØÝÑ Ò Ó ÓÒ ÑÖº ÂÓ Σ Ò Ð ÓØ ÚØ ÓÐ Ó ÓÒ ÐÙ Ù Ø σ ÓÒ ÙÙÖ µ ÓÒ Ø ÙÐÙ Ó Ò Ø ÝØ ØØÚ Ñº Ð ØÓ Ø ÙÔÙ Ø ÓØ ÒØ Ú Ø Ú Ø ÑÙ Ò O(n log(min(k, σ)) + r)º à ØÝØÒ Ø Ó Ø ÙÐÙ ÓØÓØ ÙØÙ Òº
½º º Àǹ ÇÊ ËÁ ù Ä ÇÊÁÌÅÁ ½ Ä Ù ½º º½¼ Ä Ù Ð º ½º º Ð goto¹ ÙÒ Ø ÓÒ ÐÙ Ø output¹ ÙÒ Ø ÓÒ O(σm)º ÌÓ ØÙ º À ÐÔÔÓº Ä Ù ½º º½½ Ä Ù Ð º ½º º Ð fail¹ ÙÒ Ø ÓÒ Ú Ñ Ø Ð output¹ ÙÒ Ø ÓÒ O(σm)º ÌÓ ØÙ º Î Ø ÔØ ÐÔÓ Ø ÑÙ ÐÐ Ô Ø Ö Ú ÐÐ ½¾µ ½ µ Ê Ú Ò ½ µ output¹ ÙÒ Ø Ó Ò Ý Ø ÚÓ Ò ØÓØ ÙØØ Ð ØÓ Ò Ø ¹ Ò Ø ÓÒ O(1)º Ì Ö Ø ÐÐ Ò ÙÙÖ Ø Ð Ú ÔÓÐ Ù s 0 = 0, s 1,...s p º ÃÙÒ Ð Ø Ò s i Ò fail¹ ÖØÝÑ Ò ÑÑ Ò Ò Ð Ö Ú Ò ½¾µ ÐÑÙ¹ ÓÒ fail[s i 1 ]º ÌÐÐ Ò Ó Ø Ø Ò Ø ÓØ ÓØ ÝØ Ò ÐÔ s i 1 Ò fail¹ ÖØÝÑ Ð ØØ º Ë Ø Ò Ö Ú Ò ½¾µ ÐÑÙ ÙÓÖ Ø Ø Ò O(p) ÖØ Ø ÐÓ Ò s 1,...s p fail¹ ÖØÝÑ Ð ØØ º Ø Ò Ö Ú Ò ½¾µ ÐÑÙ ÙÓÖ Ø Ø Ò O(m) ÖØ º Ë ÙÖ Ù ½º º½¾ ¹ Ð ÓÖ ØÑ Ò Ó ÓÒ Ú Ø ÑÙ ÓÒ O(n + σm + r)º ÂÓ Ó ØÓÒ Ó Ó ÓÒ Ú Ó ØÙÐÓ Ø Ò Ó Ó ÓÐ Ø Ø Ò Ô Ò Ú Ø ¹ ÑÙ ÓÒ O(n + m)º ÃÓ ØÙÐÓ n = 10 7 Ø ÒØ ØÙÒØ Ò k = 15 k = 24 ØÖ ÚºÖ Ø º 0.79 1.27 0.18 0.21
¾¼ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË ½º À ÑÓÒ ÓÚ ØÙ Ö ÐÐ Ò ÙØÓÑ Ø Ò ÚÙÐРú Ì ÓÑÔ ÓÒ Ê ÙÐ Ö ÜÔÖ ÓÒ Ö Ð ÓÖ Ø Ñº ÓÑÑÙÒ Ø ÓÒ Ó Ø Å ½½ ½ ¾¾ ½ º ÐÐ ÓÒ Ø Ö Ø ÐØÙ Ø Ô Ù Ý ÑÓ ÓÙ Ó ÑÓ º Ë ÙÖ ¹ Ú Ø Ö Ø ÐÐ Ò ÝÐ ÑÔ Ø Ô Ù Ø Ó Ø ØØÚ Ò ÑÓ Ò ÓÙ Ó ÓÒ ÐÑ ØÙ ÒÒ ÐÐ Ò Ð Ù Ò º ÐÙ Ñ Ò ÖØ Ù Ø ÅÖ Ø ÐÑ ½º º½ ËÒÒ ÐÐ Ø Ð Ù Ø ÙÒ Ò Ð Ù Ò A ØØÑ Ñ Ö ÓÒÓ ÓÙ Ó L(A) ½º ÓÒ ÒÒ ÐÐ Ò Ò Ð Ù L( ) = ¾º ǫ ÓÒ ÒÒ ÐÐ Ò Ò Ð Ù L(ǫ) = {ǫ} ǫ ØÝ ÓÒÓº º à ÐÐ a Σ a ÓÒ ÒÒ ÐÐ Ò Ò Ð Ù L(a) = {a}º º ÂÓ A B ÓÚ Ø ÒÒ ÐÐ Ð Ù Ø ÙÖ Ú Ø Ð Ù Ø ÓÚ Ø ÒÒ ÐÐ Ð Ù Ø (A B) Ý Ø ; L(A B) = L(A) L(B) (AB) Ø Ò Ø Ó ; L(AB) = L(A)L(B) (A ) ÙÐ ÙÑ ; L(A ) = L(A) ÇÒ ÐÑ ½º º¾ ÇÒ ÒÒ ØØÙ ÒÒ ÐÐ Ò Ò Ð Ù A ÑÓ ÓÙ ÓÒ ØÝ µ Ø Ø Sº ǽº ÇÒ Ó S L(A) Ǿº ÒÒ S Ò Ð ÙÓ Ø ÓØ ÙÙÐÙÚ Ø ÓÙ ÓÓÒ L(A)º Ç º Ø L(A) Ò ÓÒÓ Ò ÒØÝÑØ S غ ǽ Ò Ö Ø Ù ÅÙÓ Ó Ø Ø Ò Ô Ø ÖÑ Ò Ø Ò Ò Ö ÐÐ Ò Ò ÙØÓÑ ØØ M A Ø Ò ØØ Ò ÝÚ ÝÑ Ð ÓÒ L(M A ) = L(A)º Ë Ð Ø Ò S M A ÐÐ º ÌÙØ Ø Ò ÐÓÔÙ ÓÒ Ó M A ÐÓÔÔÙØ Ð º Ǿ Ò Ö Ø Ù ÃÙØ Ò Ç½ ÑÙØØ ØÙØ Ø Ò Ó Ò Ñ Ö Ò Ð Ò ÓÒ¹ Ó M A ÐÓÔÔÙØ Ð º Ç Ò Ö Ø Ù Ê Ø Ø Ò Ç¾ Ð Ù ÐÐ Σ A Ñ Σ ÓÒ Ò Ó ØÓÒ Ñ Ö Ò Ý Ø a b...µº
½º º À ÀÅÇÆËÇÎÁÌÍË Ê ÄÄÁË Æ ÍÌÇÅ ÌÁÆ ÎÍÄÄ ¾½ Ì Ö Ø ÐÐ Ò Ø Ó Ð ÒÒ ÓÒ ÐÑ Ç½º ÅÖ Ø ÐÑ ½º º Ô Ø ÖÑ Ò Ø Ò Ò Ö ÐÐ Ò Ò ÙØÓÑ ØØ Æ µ M = (Q, Σ, δ, q 0, F) ÑÙÓ Ó ØÙÙ Ó Ø ½º Q ÓÒ Ö ÐÐ Ò Ò Ø ÐÓ Ò ÓÙ Óº ¾º Σ ÓÒ Ý ØØ Ó ØÓº º δ ÓÒ Ø Ð ÖØÝÑ ÙÒ Ø Ó δ : Q (Σ {ǫ}) Q Ò Ó ÓÙ ÓØ δ ÐÐ Ù Ø ÖØÝÑ Ñ ÐÐ Ó ÐÐ µº º q 0 Q ÓÒ Ð ÙØ Ð º º F Q ÐÓÔÔÙØ ÐÓ Ò ÓÙ Óº ÆÝØ ÚÓ Ò ÑÝ ÑÖ Ø ÐÐ Ë ÖØÓ (q, aw) (q, w) Ó q δ(q, a) a Σ {ǫ} w Σ º ÀÝÚ ÝØØÝ Ð L(M) = {w (q 0, w) Ø Ö Ó ØØ ¼ ÐÐ Ø Ù ÑÑ ÐÐ ÖÖÓÐÐ º (q, ǫ), q F } Ñ M A Ò ÓÒ ØÖÙ Ø Ó A Ø ÓÒ Ø ØØÝ Ñº ÙÖ ÐÐ Ä ÒÒ Ò Ñ ÐÐ Ø ÙÚ ½º½º Ä Ù ½º º ÇÐ ÓÓÒ Æ M A = (Q, Σ, δ, q 0, {q f }) ÓÒ ØÖÙÓ ØÙ A Ø Ñº Ø Ò ÐÐ º Ë ÐÐÓ Ò L(M A ) = L(A) ½µ Q = 2 A A ÓÒ A Ò Ô ØÙÙ Ñ Ö Òµº ¾µ δ(q f, a) = ÐÐ a Σ {ǫ}º µ ÃÙ Ø Ò Ø Ð Ø q Q Ð Ø ÓÖ ÒØ Ò ¾ ÖØÝѺ ÌÓ ØÙ º L(M A ) = L(A) º Ѻ Ä ÒÒ Ò Ñ ÐÐ Ø ¹ ÙÖ º Î Ø ¾µ ÔØ ÐÚ Ø ÓÒ ØÖÙ Ø ÓÒ ÒÓ ÐÐ º Î ØØ Ø ½µ µ Ó Ó Ø Ø Ò Ò Ù Ø ÓÐÐ A Ò Ù Ø Òº
¾¾ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË ÃÙÚ ½º½ Æ Ò ÓÒ ØÖÙ Ø Ó ÒÒ ÐÐ Ø Ð Ù Ø º ÃÙÚ Ò λ ÓÒ Ñ Ù Ò Ø Ø Ò ǫº
½º º À ÀÅÇÆËÇÎÁÌÍË Ê ÄÄÁË Æ ÍÌÇÅ ÌÁÆ ÎÍÄÄ ¾ Ì Ø Ò S Ð Ñ Ò Ò ÙØÓÑ Ø ÐÐ M A Ì Ö Ø ÐÐ Ò Ñ Ø Ò Æ M A Ò Ú ØÓ ØÓ ÔÓÐ Ù ÚÓ Ò ÙÖ Ø Ñ Ò Ø º Î ØÓ ØÓ Ò Ò Ö Ø ÙØ Ô ÓÐ ÑÙÓ Ó Ø Ò Ò M A Ø Ú Ø Ú Ø ÖÑ Ò Ø Ò Ò Ö ÐÐ Ò Ò ÙØÓÑ ØØ M Aº M A ÚÓ ÓÐÐ ÝÚ Ò ÙÙÖ M A = O(2t ) Ñ t ÓÒ M A Ò Ø ÐÓ Ò ÐÙ ÙÑÖ ÓØ Ò M A Ò ÑÙÓ Ó Ø ¹ Ñ Ò Ò Ò ÒÒ Ø Ú Ö Ò Ò Ó S ÓÒ ÐÝ Ýغ M A Ò ØÙÒ ÓÒ ØØ S ÚÓ Ò Ð Ø O( S )º Å Ö ØÒ Q j ÐÐ Ò Ò Ø ÐÓ Ò ÓÙ Ó Ó M A ÚÓ ÓÐÐ ÐÙ ØØÙ Ò Ó¹ ÒÓÒ S[0...j) : Q j = {q (q 0, S[0...j)) (q, ǫ)}º Ë ÐÐÓ Ò q Q j Ó Ú Ò Ó ÓÒ ÓÐ Ñ q Q j 1 Ø Ò ØØ Ø Ð Ø q ÖÖÝØÒ Ø Ð Ò q 1 Ñ Ö ÐÐ S[j 1] Ø Ð Ø q 1 ÖÖÝØÒ ¼ ÐÐ Ø Ù ÑÑ ÐÐ ǫ¹ ÖÖÓÐÐ Ø Ð Ò qº Ð ÓÖ ØÑ ½º º Æ Ò ÑÙÐÓ ÒØ ËÝ Ø Æ M A = (Q,Σ,δ,q 0, {q f }) Ì Ø S = S[0... n)º ÌÙÐÓ Ø Ì Ð ÓÙ Ó ÓÒÓ Q 0,Q 1,...,Q n º ÀÙÓѺ S L(M A ) Ó Ú Ò Ó q f Q n º ½µ ¾µ ÂÓÒÓ queue ÓÙ ÓØ Q 0,Q 1,...,Q n ÓÚ Ø ÐÙ ØÝ º ÓÖ j := 0 ØÓ n Ó Ñ Ö Ø Ù Ò q Q ÚÙØØ Ñ ØØÓÑ µ j = 0 Ø Ò Q 0 := {q 0 } queue := {q 0 } Ñ Ö Ø q 0 ÚÙØ ØÙ µ µ µ µ µ µ ½¼µ ½½µ ½¾µ ½ µ ½ µ ½ µ ½ µ Ð ÓÖ q Q j 1 Ó ÓÖ p δ(q,s[j 1]) Ó p ÓÒ ÚÙØØ Ñ ØÓÒ Ø Ò Q j := Q j {p} push back(queue,p) Ñ Ö Ø p ÚÙØ ØÙ Û Ð queue Ó q := pop front(queue) ÓÖ p δ(q,ǫ) Ó p ÓÒ ÚÙØØ Ñ ØÓÒ Ø Ò Q j := Q j {p} push back(queue,p) Ñ Ö Ø p ÚÙØ ØÙ Ê Ú ÐÐ ½¼¹½ ÙÖ Ø Ò ǫ¹ ÖØÝÑ Ó ÚÓ Ø Ò ØØ ÔÓ Ó ÙØÓÑ Ø ÓÐ ǫ¹ ÖØÝÑ º Æ Ò ÔÓ ØÓ ØØ Ù Ø Ò Ò Ú ØØ ÖØÝÑ Ò ÑÖ O( Q 2 )º Å Ö ØÒ M A Ø ÐÓ Ò Ð Ñ ÖØÝÑ Ò Ð Ñº
¾ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË Ä Ù ½º º Æ M A Ò ÑÙÐÓ ÒØ Ð ÓÖ ØÑ ÐÐ ½º º ÙÒ Ý Ø ÓÒ S = S[0...n) Ú Ò O( M A n)º ÌÓ ØÙ º Ê Ú ¾ Ú Ò O( Q )º Ë ÖØÝÑ ÙÒ Ø ÓÒ δ Ú ÐÙÓ ÒØ ÚÓ Ò ØÓØ ÙØØ O(1) Ó Ù ¹ Ø Ò Ø Ð Ø ÓÒ Ò ÒØÒ ÖØÝѺ à ÑÙÙØ Ò ÓÔ Ö Ø ÓØ ØÓ Ñ Ú Ø Ú Ó º Ê Ú ÐÐ ½ Ú Ò Ú Ò ÚÙØØ Ñ ØØÓÑ Ø ÐÓ ÓÒÓÓÒ Ñ Ö ØÒ Ò Ñ ÐÐ ÚÙØ ØÙ º Ë ØØ Ò ÙÖ Ø Ò ÚÙØ ØÙ Ø Ø ÐÓ Ø Ð Ú ÖØÝÑ ÓØ Ò ÙØ Ò ÖØÝÑ ÙÖ Ø Ò ÓÖ ÒØ Ò ÖÖ Òº Ò ÖØÝÑÒ ØØ ÐÝ Ú O(1) Ò ÓØ Ò ÙÐÙÙ O ÖØÝÑ Ò Ð Ñµº Ê Ú Ø ¾ ½ ØÓ Ø Ø Ò n ÖØ º Ë Ó ÓÒ ÓÒ O( M A n)º Ë ÙÖ Ù ½º º ÃÓ M A 6 A Ä Ù ½º º µ ÚÓ Ò Ø Ø Ø ÓÒ Ó S L(A) O( A S ) ÓÒ ÐÑ Ç½µ Ð S Ò Ð ÙÓ Ø ÓØ ÓÚ Ø L(A) O( A S ) ÓÒ Ð¹ Ñ Ç¾µ Ð ÝØ S Ø L(A) Ò ÓÒÓ Ò ÒØÝÑØ O(( Σ + A ) S ) ÓÒ¹ ÐÑ Ç µº ÌÓ ØÙ º Ǿ O( A ) ÚÓ Ò ØÙØ ÐØ Q j ÐÓÔÔÙØ Ð Òº Ç Σ A = O( Σ + A )º ½º À ÑÓÒ ÓÚ ØÙ Ò Ö Ó Ø Ô Ù ÐÐ Ø ÐØ Ò Ø Ô Ù Ø Ó ÑÓ Ò ÓÙ Ó Ø ØØ Ò ÒÒ ÐÐ Ò Ð Ù Ò º ÄÙÓÒÒÓÐÐ Ò Ò Ý ÝÑÝ ÓÒ Ð ÝØÝÝ ÐÐ ¹ØÖ Ú Ð ÒÒ ÐÐ Ø Ò Ð Ù Ò Ð ÐÙÓ ÓÐÐ ÑÓÒØÙÒÒ ØÙ ÚÓ Ø Ò ØÓØ ÙØØ ÓÐ ÐÐ Ø ÒÓÔ ÑÑ Ò Ù Ò Ð ÓÖ ØÑ ÐÐ ½º º Ì Ö Ø ÐÐ Ò ÐÝ Ý Ø Ó Ø Ò ØÐÐ Ð ÐÙÓ º
½º º À ÀÅÇÆËÇÎÁÌÍÃË Æ ÊÁÃÇÁËÌ È ÍÃËÁ ¾ ½º º½ Å Ö ÐÙÓ Ø Ì Ö Ø ÐÐ Ò Ø Ô Ù Ø Ó ÑÓÒ Ñ Ö Ø ÓÚ Ø Ñ Ö ÐÙÓ ÓØ ÚÓ Ú Ø Ø ÑØ Ù ÑÔ Ò Ö Ñ Ö Òº ÌÓ Ò ÒÓ Ò ÓÒ ÒÒ ØØÙ ÑÓ P = p 0 p 1 p m 1 ÓÒ Ñ Ö Ø ÓÚ Ø Ó ØÓÒ Ó ÓÙ Ó p i Σº À ÑÓ P ÒØÝÝ Ø Ø Ò S Ó j Ó s j+i p i ÐÐ i [0, m)º Ñ Ö ½º º½ À ÑÓ [Aa][Ss][Ss][Ii] Ø Ñ Ò Ò assi ÑÙØØ ÐÐ Ô ÒØ Ò Ó Ò Ö ÒØ Ò Ý Ø ÐÑغ Ë Ø¹ÓÖ¹ Ð ÓÖ ØÑ ÚÓ Ò ÐÔÓ Ø ÑÙÓ Ø Ø Ò Ø Ô Ù Òº ÒÓ ÑÙÙØÓ Ó Ú ØÓÖ Ø T[a] a Σ ÓØ ÖØÓÚ Ø Ñ Ò ¹ ÑÓÒ Ó Ø Ò Ù Ò Ñ Ö Ø Ñº ÁØ ÙÒ ÙÓÖ ØØ Ú Ô ÐÑÙ ÑÙÙØÙ ÓÐÐ Ò Òº Ð ÓÖ ØÑ ½º º½ Ö Ú ¾µ ¾µ ÓÖ i := 0 ØÓ m 1 Ó T[p[i]] := T[p[i]] 2 i ÓÖÚ Ø Ò ÙÖ Ú ÐÐ Ö Ú ÐÐ ¾µ ÓÖ i := 0 ØÓ m 1 Ó ÓÖ a p[i] Ó T[a] := T[a] 2 i Ë Ð Ù Ò Ú Ø ÑÙ ÐÝÝ Ñ Ò O( m/w n)º ÐÙ ØÙ Ò Ú Ø ÑÙ ÓÒ ÒÝØ O( m/w σ + P ) Ñ P = i [0,m) p i ÓÒ ÑÓÒ Ñ Ö ÐÙÓ Ò Ý Ø Ó Óº Ë Ø¹ÓÖ¹ Ð ÓÖ ØÑ ÚÓ Ò ÝÐ Ø Ú Ð Ð Ë ÐÐ Ø Ò ÑÓ Ö Ó Ñ Ö Ø? º p i? Ø Ö Ó ØØ ØØ Ñ Ö Ø Ñ Ö ÐÙÓ p i ÓÒ Ú Ð ÒÒ Ò Òº p i Ø Ö Ó ØØ ØØ p i ÒØÝÝ ¼ ÖØ Ø Ù ÑÑ Òº Ñ Ö ½º º¾ À ÑÓ s?h[ei][rs] Ø Ñ ÑѺ ÒÓ Ò he she his hersº ÌÙ Ø Ò Ö ÐÐ Ø Ò Ð Ù Ò ÓÒ ØÖÙ Ø Ó Ø ÑÙØØ ÐÐ Ö Ó ØÙ ÐÐ ØØ Ý Ø ØØ Ñ Ö ÐÙÓ µ ÙÐ ÙÑ µ ÚÓ Ò ÓÚ ÐØ Ú Ò Ý ØØ Ò Ñ Ö Ò Ø Ñ Ö ÐÙÓ Ò Ñ Ð Ú ÐØ ¹ Ò ÒÒ ÐÐ Ò Ð Ù Òº Ð ØÝ ÓÒ Ñ Ö ÐÙÓ ÑÓÒ ÑÙØ ÑÔ Ó Ø Ø Ò Ø º Ä Ø ØÓ Ð ÝØÝÝ Ö Ø º Æ Ú ÖÖÓ ² ź Ê ÒÓØ Ð Ü Ð È ØØ ÖÒ Å Ø¹ Ò Ò ËØÖ Ò º Ñ Ö ÍÒ Ú Ö ØÝ ÈÖ ¾¼¼¾º
¾ ÄÍÃÍ ½º Ì ÊÃà À ÀÅÇÆËÇÎÁÌÍË ½º º¾ ÂÓ Ö Ñ Ö Ø Åº Ö ² ź È Ø Ö ÓÒº ËØÖ Ò Ñ Ø Ò Ò ÓØ Ö ÔÖÓ ÙØ º Ì Ó Êº à ÖÔ ØÓÖ ËÁ Å ÅË ÓÑÔÐ Ü ØÝ Ó ÓÑÔÙØ Ø ÓÒ ÚÙØ ½½ ½¾ ½ º Å Ö ÐÙÓ Ö Ó Ø ØÙÑÔ Ø Ô Ù ÓÒ ÐÐ ÑÓ ÒÓÖÑ Ð Ò Ñ Ö ¹ Ò Ð Ó Ö Ñ Ö # ÓØ Ø ÑÚØ Ñ Ò Ø Ò Ý ØØ Ò Ñ Ö Òº Ñ Ö ½º º À ÑÓÐÐ P = Ó Ð ÝØÝÝ ÒØÝÑ Ø Ø S = Ó Ö ÔÓ Ö ØÓ Ò º Ê Ø Ù ÌÖ Ú Ð Ð ÓÖ ØÑ º Ú Ø ÑÙ O(nm)º Ë Ø¹ÓÖ¹ Ð ÓÖ ØÑ º Ú Ø ÑÙ O(n m/w )º Ö¹È Ø Ö ÓÒ¹ Ð ÓÖ ØÑ º Ú Ø ÑÙ O(n log 2 m log log m)º Ö¹È Ø Ö ÓÒ¹ Ð ÓÖ ØÑ Ô Ð ÙØØ ÓÒ ÐÑ Ò Ó ÓÒ ÐÙ Ù Ò ÖØÓÐ ¹ ÙÙÒ Ó ÓÒ ÓÒ ØÙÒÒ ØÙ Ø Ø ØØÝ Ù Ø Ð ÓÖ ØÑ Ö Ð ÒÒ Ò Ñ ÐÐ ¹ º Ä Ù ½º º ÇÐ ÓÓÒ Ó Ö Ñ Ö ÐØÚ Ò ÑÓÒ Ø Ø Ò Ô ØÙÙ Ø m n m nº ÌÐÐ Ò ÑÓÒ ÒØÝÑØ Ø Ø ÚÓ Ò Ð ÝØ ÁÅ(n log m, m log m) Ñ ÁÅ(N, M) ÓÒ Ò N M N M ØØ Ô Ø Ò Ó ÓÒ ÐÙ Ù Ò ÖØÓÐ ÙÙÒ Ø ÖÚ ØØ Ú º Ë Ò ¹ËØÖ Ò ÖØÓÐ Ù Ð ÓÖ ØÑ ÝØØ O(N log M log log M) ØØ ÓÔ Ö Ø ÓØ Ñ Ø ÙÖ O(n log 2 m log log m) Ð ÓÖ ØÑ ÑÓÒ ÓÚ ¹ ØÙ ÐÐ Ó Ö Ñ Ö Ò Ò º à ÖØÓÐ Ù ÚÓ Ò ÝØØ ÑÝ Ø ØÓ¹ ÓÒ Ò ÓÑ ÖØÓÐ Ù¹ÓÔ Ö Ø ÓØ ÑÙØØ ØÐÐ Ò Ú Ø ÑÙ ØÙÐ O(mn) Ð Ñ Ù Ò ØÖ Ú Ð Ð ÓÖ ØÑ ÐÐ º Ð ÓÖ ØÑ Ò ÙÚ Ù Ó Ø Ø Ò Ø ÑÙØØ Ð ÝØÝÝ Ñº Ý ÝÒ ¾¼¼ ÙÖ Ò ÑÙ Ø ÒÔ ÒÓ Ø Ö Ø Åº ÖÓ ÑÓÖ ² Ϻ ÊÝØØ Öº Â Û Ð Ó ËØÖ Ò ÓÐÓ Ýº ÏÓÖÐ Ë ÒØ ¾¼¼ º
ÄÙ Ù ¾ Ä ÑÖ Ò Ò ÑÓÒ ÓÚ ØÙ Í ÓÚ ÐÐÙ ÓÐ Ñ Ð Ø Ø Ú Ò ÑÓÒ P Ø Ö Ó Ò¹ ØÝÑ Ú Ò ÔÝÖ ØÒ Ð ÝØÑÒ Ø Ø Ò Ó ÓÒÓØ ÓØ ÓÚ Ø Ö ØØÚÒ Ð ÐÐ ÑÓ P º ÂÓÒÓ Ò Ñ Ò ÐØ ÙÙ Ò Ö Ñ ØØ ÓÒ ØÓ ÒØ Ø ¹ ÝÝ º ¾º½ ØÓ ÒØ Ø ÝÝ ÇÐ ÓÓÒ A = a 1 a m Σ ÐÝ ÒØ Ú Ö Ø ÐØÚ ÓÒÓ B = b 1 b n Σ Ú Ö Ø Ò ÓÒÓ º Å Ö ÓÒÓ Ò A B ÚÐ Ò Ò ØÓ ÒØ Ø ÝÝ ÓÒ Ô Ò Ò ØÓ ÒØ ÓÔ ¹ Ö Ø Ó Ò ÐÙ ÙÑÖ Ó Ø ÖÚ Ø Ò ÓÖ Ñ Ò Ú Ö ÐÐ Ò Ò ÓÒÓ A Ú Ö ØØ ÑÒ ÑÙÓØÓÓÒ Bº ØÓ ÒØ ÓÔ Ö Ø ÓØ Èº ÈÓ ØÓ A Ò Ñ Ö a i Ú Ø Ñ Ò B Ò Ñ Ö a i ǫº ĺ Ä Ý B Ò Ñ Ö b j Ú Ø Ñ Ò A Ò Ñ Ö ǫ b j º ź ÅÙÙØÓ A Ò Ñ Ö a i Ú Ø B Ò Ñ Ö b j a i b j a i b j º ÇÔ Ö Ø ÓØ Å ÚØ Ñ ÒÒ Ö Ø Ò ÂÓ a i b j a i b j Ò Ò i < i Ó Ú Ò Ó j < j º Í Ò ÓÒ ÑÝ Ý ÝÐÐ Ø ÑÖ Ø ÐÐ ÓÔ Ö Ø Ó Ìº Ì ÑÝ A Ò Ñ Ö a i Ú Ø B Ò Ñ Ö b j a i = b j a i b j º ¾
¾ ÄÍÃÍ ¾º ÄÁÃÁÅ Ê ÁÆ Æ À ÀÅÇÆËÇÎÁÌÍË ÅÖ Ø ÐÑ ¾º½º½ Å Ö ÓÒÓ Ò A B ÚÐ Ò Ò ØÓ ÒØ Ø ÝÝ D(A, B) ÓÒ Ô Ò Ò ØÓ ÒØ ÓÔ Ö Ø Ó Ò È Ä Å ÑÖ Ó Ø ÖÚ Ø Ò ÑÙÙÒØ ¹ Ñ Ò A B º ØÓ ÒØ Ø ÝÝ Ø ÝØ ØÒ ÑÝ Ò Ñ ØÝ Ø Ä Ú Ò Ø Ò¹ Ø ÝÝ º ÂÓ ÐÐ Ø Ò Ô Ð ÓÔ Ö Ø Ó Å ÑÙÙØÓ µ Ø ÝÝ Ø ÝØ ØÒ Ò ¹ Ñ ØÝ Ø À ÑÑ Ò ¹ Ø ÝÝ º ÎÓ Ò Ó Ó ØØ ØØ D ÓÒ Ñ ØÖ ½µ D(A, B) 0 ¾µ D(A, B) = 0 Ó Ú Ò Ó A = B µ D(A, B) = D(B, A) µ D(A, C) D(A, B) + D(B, C)º Ñ Ö ¾º½º¾ A = B = ÓÔ Ö Ø ÓØ ¾ ÓÔ Ö Ø ÓØ Ì ÖÚ Ø Ò Ú ÒØÒ Ý ÔÓ ØÓ Ó A = B +1 Ú ÒØÒ Ý Ð Ý Ø ÑÙÙØÓ Ó B ÓÒ Ý b Ò ÑÑÒ Ù Ò A º ÌÑÒ ÝÐÐÓÐ Ú Ò Ô ÖÙ Ø ÐÐ D(A, B) = 2º ØÓ ÒÒ Ò Ú ÒÒÓÐÐ Ø Ñ Ò Ò ½º ÂÐ ØÝ ØÖ µ Ò Ù Ø Ö Ý Ò Ø Ö Ø Î Ú Ø ÚØ Ñ ÒÒ Ö Ø Òº Å µ ¾º ÃÓ ØÙ Ò Ù Ø¹Öݹ¹ Ò¹¹¹Ø Ö Ø