TonitaN / FormalLanguageTheory

Slides and tasks for theory of formal languages course BMSTU IU9 (in Russian)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

РК-1

TonitaN opened this issue · comments

Формат контрольной работы

Не обманываемся, что можно набрать максимум 19 баллов, а не 15! За время РК невозможно решить задания на все 19 баллов, но можно попытаться набрать свои баллы разными способами!

Задание 1
Дано неформальное или свёрточное (т.е. в терминах логики или теории множеств) определение языка. Построить соответствующий формальный язык. В задании явно сказано, требуется построить КС-представление или регулярное.

Зачётные баллы (максимум 4):

  • 2 балла - любое удобное представление с небольшими помарками
  • 3 балла - чистое решение, но представление только одно
  • 4 балла - если язык КС, то КС-грамматика в Н.Ф. Грейбах. Если язык регулярный, то регулярка и ДКА

Задание 2
Дано неформальное или свёрточное определение языка.

  • Если язык регулярный, тогда предъявить регулярное представление
  • Если язык КС, тогда доказать, что он не регулярен, и предъявить КС-представление
  • Если язык не КС, тогда доказать это

Зачётные баллы (максимум 9):

  • Регулярный язык: 3 балла за любой НКА либо синтаксический моноид, +1 балл за то и другое, +2 балла за префиксную грамматику, +3 балла за минимальный НКА
  • КС-язык: +2 балла за любое доказательство нерегулярности, +3 балла за КС-представление, +2 балла за скобочное представление в стиле Шютценберже, +2 балла за альтернативное доказательство нерегулярности
  • не КС-язык: +5 баллов за доказательство не КС, +1 балл за существенно отличное доказательство нерегулярности, +3 балла за альтернативное доказательство не КС

Задание 3
Дана КС-грамматика. Если она описывает регулярный язык, то предъявить его. Если она описывает не регулярный язык, тогда обосновать это.

Зачётные баллы (максимум 6):

  • Язык регулярен => предъявить регулярное представление (+3 балла) и обосновать, почему оно описывает тот же язык (+3 балла)
  • Язык не регулярен => предъявить единственное доказательство этого (+3 балла) или с альтернативными (+3 балла)

Формат контеста

Дана КС-грамматика. Требуется автоматически установить, описывает ли она регулярный язык.

Эта задача алгоритмически не разрешима. В связи с чем нет единого алгоритма, который послужил бы "серебряной пулей", но есть приближения:

  • строить замыкания регулярных подъязыков
  • пересечение с регулярной аппроксимацией
  • анализ соотношения кратностей букв в словах
  • поиск очевидных накачиваемых фрагментов

Все способы будут разобраны на консультации, на каждый будет свой набор контрольных тестов. Максимальное число баллов за тесты за этот формат РК --- 20 (15 набирается без штрафа, и 5 - с множителем 1/3 сверх 15, и даже с учётом штрафа их несколько более реально набрать, чем 19 на контрольной). Дополнительное поощрение: секретные тесты и победители на срезах. Время контеста - с момента выдачи тестирующего скрипта (12:00 22 октября) и до 00:00 24 октября (т.е. до понедельника).

До участия в контесте допускаются только те, кто сдал хотя бы одну лабораторную работу и имеет не меньше 10 баллов по сумме модулей. Можно участвовать группами до 3 человек, в том числе смешанными из 51+52. Записываемся на контест в этой теме, и отозвать своё участие нельзя. Запись - только до 00:00 17 октября. Кто не успел - тот пишет контрольную работу.

ФИКС(ФИКС(this)): запись до середины дня 19 октября, чтобы "забывчивые" успели увидеть.

Я буду участвовать в контесте.
upd: +Федоров

Учтите - кто написал заявку в теме, тот считается точно участвующим (т.е. не имеет права просить вариант на очной контрольной). Кто не написал до 17 октября, тот считается точно не участвующим (т.е. даже если сдаст программу, я её проверять не буду). Юрию я дам возможность передумать сегодня, поскольку он мог не подумать, что правила жёсткие.

Я и @p0rtale участвуем в контесте.

участвую)

Интересно, будет кто-нибудь с аватарами из другого семейства? )

Участвую с командой "луковичка":
@Robby-the-paladin
@SoFa325

@theElusiveJoe , вы соло?
С @Qmask26

Здравствуйте! Хочу поучаствовать в контесте, но забыл записаться до дедлайна( Можно в порядке исключения присоединиться?

Ок, во имя исключений и академов разрешаю забывчивым записаться ещё сегодня. Не только вам, а всем забывчивым, буде такие найдутся. Но дальше - точно никак нет.

P.S. - Иду навстречу потому, что про вас было сказано "Вот тут сидит Стафиевский, но он стоит", хоть вас тогда и не было, очевидно из-за ICPC. Скажите спасибо своим товарищам. Но раз уж вам разрешаю вписаться позже срока, то придётся всем разрешать.

Можно будет пользоваться сторонними библиотеками?

Скажем так, без злоупотребления. Операции над регулярными языками и КС-языками должны быть реализованы вами, либо взяты из работ ваших товарищей с ИУ9.

Те, кто пишут РК (неважно, контест или контрольную), рекомендую запастись следующими хорошо протестированными алгоритмами:

  • пересечение регулярных языков (в какой вам нравится форме)
  • пересечение КС-языка и регулярного языка (кто на контесте: подумать об алгоритме, который сразу максимально отбрасывает тупиковые пути порождения правил, т.к. ясно, что произойдёт, если делать это в лоб как в теореме)
  • проверка вложения регулярных языков (очень актуально для тех, кто на контесте, чуть менее, но тоже актуально - для тех, кто на контрольной)

Первые два алгоритма можно использовать и для проверки, лежит ли слово в языке (хоть это и дурацкий способ, но для самопроверки на контрольной вполне годится). Лучше, чтобы реализации были доступны всем желающим, во имя коллективного разума (это касается прежде всего тех, кто пишет контрольную, т.к. для них язык не важен). Кто напишет (или вытащит из уже имеющихся лабораторных) лучшие и самые быстрые работы - получит поощрительные +2 балла за обе категории анализа регулярок и +4 балла за пересечение с КС-грамматикой.

Подскажите, а на РК можно будет пользоваться дополнительными материалами? Например, лекциями

Это уже не раз было сказано. Можно будет пользоваться чем угодно, кроме чужой головы - касается и контрольной, и экзамена.

Только те, кто записался на контест!
Чтобы получить 10 баллов за РК без права дальнейшего участия, необходимо до 14-30:

  1. расшифровать базу тестов
  2. объяснить алгоритм извлечения данных по хешу

Самый популярный вопрос на РК

Как сдавать домашнюю контрольную?

После того как я проверю все работы, станет ясно, у кого не хватило до 7 баллов, и кому нужно что доделать. После этого вы доделываете почти сделанное (там по замечаниям не так трудно исправить будет), решаете то, что совсем не получилось, плюс одну дополнительную задачу на анализ языка. Сдавать можно в любое время до зачётной недели.

Если вы сегодня сдавали пустой лист, то можете не ждать апелляции и просто решать задачи своего варианта. Добавочная будет в течение недели.

@mathhyyn , вот вам с вашими 17 баллами ещё кислые смайлики ставить на условии РК ))) @xtoter c 11 баллами туда же.

ништяк, минус лабы

а это мы в недоумении от минимального Нка были, более подходящего не нашлось (🤔)

ништяк, минус лабы

а это мы в недоумении от минимального Нка были, более подходящего не нашлось (🤔)

Могли бы постараться и на минус экзамен, раз такое начало положено. Минимальный НКА там в некоторых задачах вполне подъемный, особенно если уметь определять длину накачки.

Могли бы постараться и на минус экзамен, раз такое начало положено.

вот об этом поподробнее....

Минимальный НКА там в некоторых задачах вполне подъемный, особенно если уметь определять длину накачки.

дело не в сложности, а в том, что если автомат минимален, то он детерминирован (уточнили у нашего ответственного за минимизацию), но это я придираюсь

А на лекции про язык (a|b)*a (a|b)(a|b)...(a|b) для кого я рассказывала, и про экспоненциальный взрыв состояний у автомата при переходе к ДКА? Персонально для @theElusiveJoe , что ли?
Ответственный за минимизацию пусть занимается минимизацией ДКА, а определением минимальности НКА положено заниматься ответственным за накачку )

вот об этом поподробнее....

Ну как, если 90 баллов за семестр будет.

В теоретической части:

EDIT: В связи с "золотом", напомню, что Н.Ф. Грейбах - это именно Н.Ф. Грейбах, а не Грейбаха!! Т.к. названо по имени Шейлы Грейбах, основоположницей ТФЯ, внесшей вклад, не меньший, чем Хомский.