Изменения

Перейти к: навигация, поиск
Нет описания правки
== Псевдокод ==
<code>
дано строка S из n символов: a1 for i = 1... an.n for Rj -> alpha if( A -> w[i] in Г) a[A, i, i+1] = true дано грамматика else a[A, i, i+1] = false дан массив if( A -> eps in Г) a[A,i,ji] булевских значений= true else a[A, i, инициализированных значениями Ложь.i] = false дан массив h[A -> alpha, i, ji, k0] булевских значений, инициализированных значениями Ложь= true for i = 1..n для каждого i for j = 1 : ..n для каждой продукции for Rj -> aialpha for k = 1..M присвоить P h[1A->alpha,i,j+1, k] = Истина для каждого V( for r = i = 2 : n -- длина интервала для каждого ..j = +1 : n) h[A->alpha, i, r, k-1] ^ a[alpha[k],r,j+1 -- начало интервала] для каждого k for i = 1 : i-..n for j = 1 -- разбиение интервала..n для каждой продукции RA for Rj -> RB RCalpha если P a[kA,i,j,B] и P=V(for A->alpha) h[iA-k,j+k>alpha,C] то присвоить P[i,j,A|alpha|] = Истина если для некоторого x из множества s Preturn a[nS,1,xn] = Истина, где s все индексы Rs то возвратить S принадлежит языку иначе возвратить S не принадлежит языку
</code>
Анонимный участник

Навигация