]> mj.ucw.cz Git - ads2.git/commitdiff
KMP: Jeste par drobnosti v sazbe
authorMartin Mares <mj@ucw.cz>
Thu, 4 Feb 2010 12:09:57 +0000 (13:09 +0100)
committerMartin Mares <mj@ucw.cz>
Thu, 4 Feb 2010 12:09:57 +0000 (13:09 +0100)
6-kmp/6-kmp.tex

index 9719f787f55ca6b86838236a01cd6facf26b4201..9121c4d048192d6c204d783e6b6894912056151e 100644 (file)
@@ -100,7 +100,7 @@ Suffix, kter
 Nyní pojïmì zkoumat to, jak je ve~skuteènosti ná¹ algoritmus rychlý. K tomu bychom si ale nejdøív mìli øíct, jak pøesnì budeme automat reprezentovat. V~algoritmu vystupují nìjaká porovnávání stavù, pøièem¾ není úplnì jasné, jak zaøídit, aby v¹e trvalo konstantnì dlouho. Vyjde nám to ale docela snadno. K reprezentaci automatu nám toti¾ budou staèit pouze dvì pole.
 
 \s{Reprezentace automatu:}
-Oèíslujeme si stavy délkami pøíslu¹ných prefixù, tedy $0 \dots J$. Poté je¹tì potøebujeme nìjakým zpùsobem zakódovat dopøedné a~zpìtné hrany. Vzhledem k~tomu, ¾e z~ka¾dého vrcholu vede v¾dy nejvý¹e jedna dopøedná a~nejvý¹e jedna zpìtná, tak nám evidentnì staèí pamatovat si pro ka¾dý typ hran pouze jedno èíslo na~vrchol. Budeme mít tedy nìjaké pole dopøedných hran, které nám pro ka¾dý stav øekne, jakým písmenkem je nadepsaná dopøedná hrana ze stavu $I$ do~$I+1$. To jsou ale pøesnì písmenka jehly, tak¾e si staèí pamatovat jehlu samotnou. Èili z~$I$ do~$I+1$ vede hrana nadepsaná $\iota [I]$. Pro zpìtné hrany pak budeme potøebovat pole $Z$, které nám pro stav $I$ øekne èíslo stavu, do~kterého vede zpìtná hrana. Tedy $Z[I]$ je cíl zpìtné hrany ze stavu $I$.
+Oèíslujeme si stavy délkami pøíslu¹ných prefixù, tedy èísly $0 \dots J$. Poté je¹tì potøebujeme nìjakým zpùsobem zakódovat dopøedné a~zpìtné hrany. Vzhledem k~tomu, ¾e z~ka¾dého vrcholu vede v¾dy nejvý¹e jedna dopøedná a~nejvý¹e jedna zpìtná, tak nám evidentnì staèí pamatovat si pro ka¾dý typ hran pouze jedno èíslo na~vrchol. Budeme mít tedy nìjaké pole dopøedných hran, které nám pro ka¾dý stav øekne, jakým písmenkem je nadepsaná dopøedná hrana ze stavu $I$ do~$I+1$. To jsou ale pøesnì písmenka jehly, tak¾e si staèí pamatovat jehlu samotnou. Èili z~$I$ do~$I+1$ vede hrana nadepsaná $\iota [I]$. Pro zpìtné hrany pak budeme potøebovat pole $Z$, které nám pro stav $I$ øekne èíslo stavu, do~kterého vede zpìtná hrana. Tedy $Z[I]$ je cíl zpìtné hrany ze stavu $I$.
 S~touto reprezentací ji¾ doká¾eme na¹i hledací proceduru pøímoèaøe pøepsat tak, aby sahala pouze do~tìchto dvou polí:
 \algo
 \:$I \leftarrow 0$.
@@ -139,7 +139,7 @@ Z~p
 \:$Z[0] \leftarrow ?$, $Z[1] \leftarrow 0$.
 \:$I \leftarrow 0$.
 \:Pro $k = 2 \dots J$:
-\::$I \leftarrow Krok( I , \iota [k])$.
+\::$I \leftarrow \<Krok>( I , \iota [k])$.
 \::$Z[k] \leftarrow I$.
 \endalgo
 
@@ -236,7 +236,7 @@ Nejprve si nadefinujeme, jak vypad
 \algo
 \:$\alpha \leftarrow \<koøen>$.
 \:Pro znaky $x$ ze slova $\sigma$:
-\::$\alpha \leftarrow Krok(\alpha, x)$.
+\::$\alpha \leftarrow \<Krok>(\alpha, x)$.
 \::$\beta \leftarrow \alpha$
 \::Dokud $\beta \neq \emptyset$:
 \:::Je-li $\<slovo>(\beta) \neq \emptyset$: