Изменения

Перейти к: навигация, поиск
Улучшил оформление доказательства второй леммы, но оно всё ещё неправильное
Пусть <tex>G = (N, \Sigma, P, S)</tex> {{---}} однозначная КС-грамматика и <tex>a_1 \dots a_n</tex> {{---}} цепочка из <tex>\Sigma^*</tex>. Тогда алгоритм Эрли пытается включить <tex>[A \rightarrow \alpha \cdot \beta, i]</tex> в <tex>I_j</tex> не более одного раза, если <tex>\alpha \ne \varepsilon</tex>.
|proof=
Ситуацию <tex>[A \rightarrow \alpha \cdot \beta, i]</tex> можно включить в <tex>I_j</tex> только по правилам <tex>(1)</tex> и <tex>(2)</tex>. Если она включается по правилу <tex>(1)</tex>, то если последний символ цепочки <tex>\alpha</tex> {{---}} терминал, а если по правилу ) и <tex>(2)</tex>, то {{---}} (если нетерминал). В первом случае результат очевиден. Во втором случае допустим, что <tex>[A \rightarrow \alpha'B \cdot \beta, i]</tex> включается в <tex>I_j</tex>, когда рассматриваются две различные ситуации <tex>[B \rightarrow \gamma eta_1 \cdot, kk_1]</tex> и <tex>[B \rightarrow \delta eta_2 \cdot, lk_2]</tex>. Тогда ситуация <tex>[A \rightarrow \alpha' \cdot B\beta, i]</tex> должна оказаться одновременно в <tex>I_kI_{k_1}</tex> и в <tex>I_lI_{k_2}</tex>.#Пусть <tex>k k_1 \ne lk_2</tex>. Тогда по [[Алгоритм Эрли#Корректность алгоритма|теореме]] существуют такие <tex>\theta_1gamma_1, \theta_2delta_1, \theta_3gamma_2</tex> и <tex>\theta_4delta_2</tex>, что <tex>S \Rightarrow^* \theta_1 gamma_1 A \theta_2 delta_1 \Rightarrow \theta_1 gamma_1 \alpha' B \beta \theta_2 \Rightarrow^* a_1 \dots a_ndelta_1</tex> и <tex>S \Rightarrow^* \theta_3 gamma_2 A \theta_4 delta_2 \Rightarrow \theta_3 gamma_2 \alpha' B \beta \theta_4 \Rightarrow^* a_1 \dots a_ndelta_2</tex>. Но в первом выводе <tex>\theta_1 gamma_1 \alpha' \Rightarrow^* a_1 \dots a_ka_{k_1}</tex>, а во втором <tex>\theta_1 gamma_2 \alpha' \Rightarrow^* a_1 \dots a_la_{k_2}</tex>. Тогда для цепочки <tex>a_1 \dots a_n</tex> существуют два разных дерева вывода, в которых <tex>a_{i+1} \dots a_j</tex> выводится из <tex>\alpha' B</tex> двумя разными способами.#Пусть <tex>k k_1 = lk_2</tex>. Тогда <tex>\gamma eta_1 \ne \deltaeta_2</tex>. Тогда, так как <tex>[B \rightarrow \gamma eta_1 \cdot, kk_1] \in I_j</tex> и <tex>[B \rightarrow \delta eta_2 \cdot, kk_1] \in I_j</tex>, то <tex>\gamma eta_1 \Rightarrow ^* a_{kk_1 +1} \dots a_j</tex> и <tex>\delta eta_2 \Rightarrow ^* a_{kk_1 +1} \dots a_j</tex>, то есть <tex>a_{kk_1 +1} \dots a_j</tex> выводится двумя разными способами.
}}

Навигация