2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Задача по формальным грамматикам
Сообщение02.12.2007, 20:42 


14/10/07
5
Добрый день! У меня есть вопрос по формальным грамматикам.

Алфавит = {a,b}
Язык = {любая последовательность, в которой содержится одинаковое кол-во символов a и b}

Я написал следующую грамматику, которую мой преподаватель признал правильной:
S -> aSbS | bSaS | e

Но я не смог сторого доказать правильность данной грамматики.
Подскажите мне метод док-ва...

 Профиль  
                  
 
 
Сообщение02.12.2007, 21:08 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Метод доказательства должен быть таким. С одной стороны очевидно, что все слова, которые порождает данная грамматика, действительно принадлежат языку. Обратно нужно доказать, что любое слово, которое принадлежит языку, может быть получено таким образом. Это нужно делать индукцией по длине слова. Для слов длины 0 и 2 проверяется непосредственно. Пусть есть более длинное слово. Без ограничения общности считаем, что оно начинается с "а". Значит, оно должно порождаться правилом "aSbS". Нужно только доказать, что в нем найдется такая буква "b", что слово, заключенное между ней и первой "a", принадлежит языку (т.е. количество букв совпадает). Или, если это будет проще, слово после этой буквы (суффикс) принадлежит языку (ясно, что эти дву утверждения равносильны друг другу). Тогда используя предположение индукции мы получаем, что оба этих слова можно вывести.

Добавлено спустя 15 минут 13 секунд:

Ясно, что если все слово начинается с "ab", то в качестве требуемой буквы "b" можно взять именно эту. Аналогично, если все слово заканчивается на "b". Таким образом, содержательный случай - когда и вторая буква всего слова, и последняя - "a".

 Профиль  
                  
 
 
Сообщение02.12.2007, 23:13 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Всё правильно, только мир устроен немного проще. Основное свойство $S$ — в нём равное количество $a$ и $b$.

База индукции у нас есть. Индукционный переход: пусть слово начинается с $a$. Значит, применяем первое правило. Начинаем считать баланс после первого символа (начиная с $0$): если $a$ вычитаем $1$, если $b$ — прибавляем $1$. В какой-то первый момент баланс станет равным $1$ (очевидно, после $b$, иначе, он был положительным до того, а значит — это не первый раз, когда он стал равен $1$). Вот это-то $b$ и есть искомое, к нему и применяем правило.

Осталось только проверить, что и выделенная часть, и хвост содержат равное количество $a$ и $b$. И что их длина уменьшилась.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group