CYKアルゴリズムと伊藤の補助定理(続く)

最近コンピュータサイエンスの理屈を学びながらコンパイラに使われる形式文法に関して読んでいます。
Context free languages are sets of strings which can be represented by a context free grammar. One property often proven for a language is whether a given string is a member of that language (i.e. whether the grammar for the language generates that string). In the case of Context Free Languages, membership can be decided using the CYK algorithm. This runs in O(n^3*|G|), where n is the length of the string and |G| is the number of productions in the grammar.
Given a grammar in Chomsky normal form, the algorithm uses dynamic programming, with induction on the length of substrings of the string for whom membership is to be checked (w). The two primary data structures are: 1. A list of non-terminals 2. A list of grammar productions of form A->BC. Each element must store a. index of left non-terminal in list of (1). b. index of first right non-terminal. c. index of second right non-terminal.
3. A three-dimensional array of booleans for the dynamic programming storage, P[i][j][k], where i is the length of the substring, j is the start index of the substring in w, k is the index of the non-terminal such that this non-terminal is on the left side of a production generating the substring.
The algorithm begins by considering all productions of the form A->b with a terminal on the right (note that the grammar is in Chomsky normal form). For each such left non-terminal with index k and terminal with index j in w (same char may occur at multiple indices), we set P[1][j][k] to true. All other P[i][j][k] values are false initially. The algorithm iterates in ascending order over (each loop within previous): 1. all lengths i(2 to |w|) 2. all start points j(1 to n-i+1) 3. All offsets from the start k (1 to i-1) such that we partition the substring into (j,j+k-1), (j+k,j+i-1) segments (i.e. first partition starts at index j, ends at index j+k-1). 4. All productions A->BC.
If for a given (i,j,k) triple, there exists a production such that the left non-terminal is at index k1, the first right at index k2, and the second at index k3, and P[k][j][k2] is true and P[i-k][j+k][k3] is true, then P[i][j][k1] is true. The algorithm returns true for membership if P[n][1][kS] is true, where kS is the index of S in the non-terminal list. For n=1, the algorithm returns true iff production S->w exists. Otherwise, there must be a production S->AB where A and B derive contiguous substrings of w which together span w.
My chief concern about this is why such an algorithm is used instead of the construction of a parse tree for the string. Would the syntax checker of a compiler ever use CYK? Is CYK more efficient than parse tree construction.

まだ伊藤の補助定理と確率的な株価の数式を考えています。  I am still unclear about the Brownian motion process (which seems to be identical to the Ito diffusion process). Namely, dS/S = mu*dt + sigma*dB. If dB is a selection from a normal distribution * sqrt(dt), then is B a cumulative distribution function?