Лабораторная работа №6. Транзитивное замыкание матриц отношений. Теория автоматов и формальных языков Преподаватель дисциплины: Кушнир Надежда Владимировна Выполнил: Студент группы 16-КБ-ПИ1 Биденко Сергей Александрович Цель работы: освоение алгоритма транзитивного замыкания матриц отношений LL(1)-грамматик. Порядок выполнения работы: • прочитать описание работы; • получить задание у преподавателя; • провести анализа правил LL(1)-грамматики применительно к индивидуальному заданию и построить матрицу заданного вида отношений; • разработать программу, реализующую алгоритм транзитивного замыкания матрицы отношений. Контрольные вопросы. 1. Как определяются аннулирующие нетерминалы и правила? 2. Пояснить операцию рефлексивно-транзитивного замыкания. 3. Какие нетерминалы являются "мертвыми" и какие "живыми"? 4. Пояснить порядок определения используемых отношений. Основное окно. Листинг. Ответы на вопросы. 1. Определение анулирующегося нетерминала - если, применив к нетерминалу <A> точно одно правило и, возможно, заменив в нем некоторые аннулирующие нетерминалы на ε, можно получить цепочку, начинающуюся, например с <B>. 2. Для каждого единичного элемента aij исходной матрицы в строку i дописать единичные элементы из строки j; п.1 повторять сверху вниз и слева направо для всех элементов матрицы. 3. Нетерминалы, которые не порождают ни одной терминальной цепочки, называются бесплодными или мертвыми.