Построить Машину Тьюринга на проверку правильности скобок
Помогите, пожалуста. Задача: записать систему правил для МТ. Дан алфавит A = {(, ), _} и внутренние состояния Q = {q1, q2, …, qz}. Нужно проверить верно ли в исходной последовательности расставлены скобки.
Алгоритм на простом языке: (но не факт, что без ошибок) Есть лента, скобочная последовательность ограничена символами _. Головка находится в самом левом положении. Работа машины: сначала ГЗЧ движется вправо до первой правой скобки, заменяет ее символом X, переходит в состояние q1 и движется влево до ближайшей левой скобки, заменяет ее символом X, переходит в состояние q0 , и челночное движение повторяется. Если машина, находясь в состоянии q1, достигает левого символа _, то печатает "0" и останавливается – скобочное выражение неправильно. Если машина, находясь в состоянии q0, достигает правого символа _, не обнаружив больше правой скобки, то переходит в заключительное состояние q2, связанное с движением влево, и в последний раз просматривает последовательность: не осталась ли непарная левая скобка. Если по пути встретится левая скобка, то машина печатает "0" и останавливается. При достижении в состоянии q2 левого символа _, машина печатает "1" и останавливается – скобочное выражение правильно.
То есть (()()) - правильное выражение, а )()( или (() - неправильные Примерно, как я понимаю:
q0 ( --> q0 ( R
q0 ) --> q1 X L
q0 ( --> q1 X R
q1 _ --> qz 0
q0 _ --> qz 1