Skip to content

Замкнутость классов языков относительно операций#20

Draft
HumsterProgrammer wants to merge 10 commits intomainfrom
closure
Draft

Замкнутость классов языков относительно операций#20
HumsterProgrammer wants to merge 10 commits intomainfrom
closure

Conversation

@HumsterProgrammer
Copy link
Owner

@HumsterProgrammer HumsterProgrammer commented Apr 7, 2025

Продолжаю заливать материалы, которые готовил в время семестра ТФЯ. На этот раз табличка с замкнутостью классов языков относительно различных операций. Но в исходной версии было достаточно много ошибок, поэтому заполняю с относительного нуля и расширил дополнительными операциями. Кроме этого после таблички буду приводить доказательства утверждений.
P.S. также вдохновлено фармой и экзаменом

  • конечные языки
  • регулярные языки
  • Ограниченные языки
  • VPL
  • DCFL
  • LR(0)
  • LL(k)
  • CFL
  • LinCFL
  • LinConj
  • Conj
  • Rec

Copy link
Collaborator

@TonitaN TonitaN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Денис, с конъюнктивными грамматиками есть важное отличие в структуре разбора. У нас граф с расшаренными вершинами, мы не можем стирать их без влияния на соседние :(

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А вот тут есть тонкость) Если в КС-случае и регулярном мы можем сделать это очень просто, поскольку вывод каждой буквы - это путь в дереве, то в конъюнктивном случае вывод буквы - пусть в графе, и если мы стираем какие-то подграфы у него, он может поменяться.
В частности, конъюнктивные грамматики кодируют истории вычислений МТ (это довольно нетрудно понять, потому что два соседних состояния ленты можно КС-но разобрать через реверсирование). И если бы у нас была замкнутость относительно морфизмов, то конъюнктивные грамматики могли бы вывести какой угодно рекурсивный язык.
Ещё один момент - вспомним разбор языка {wcw | w in {a,b}*}. Там в графе разбора очень сильна привязка к c, и если его стереть, разбор сразу сломается.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вечно забываю о стирающих морфизмах :(

Copy link
Collaborator

@TonitaN TonitaN Apr 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может, сделать отдельно все морфизмы и нестирающие?
По замкнутости относительно нестирающих морфизмов - у конъюнктивных языков это открытая проблема) (связана тоже с расшариванием подвыводов: мы не можем расшарить подвыводы для разных букв, но можем для одной и той же, в которую они отображаются, поэтому язык после нестирающего морфизма может - как минимум, есть такая гипотеза - стать шире, чем ожидаемый гомоморфный образ)

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, хороший вариант разделить их, как разделил объединение например

Copy link
Collaborator

@TonitaN TonitaN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ещё одна причина их разделить)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

О, кстати. Насчёт h^-1 и конечных языков. Кажется, кто-то опять забыл про стирающие морфизмы)

Copy link
Owner Author

@HumsterProgrammer HumsterProgrammer Apr 11, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если ничего не путаю, то с помощью обратного морфизма ы получаем множество слова, из которых действием морфизма мы получим слово из конечного языка.
Но если исходный морфизм(прямой морфизм) был стирающим, то тогда можно ли вообще говорить об обратном? Это же получается можно между любыми символами вставлять исходный символ, который стирался?

То есть пример. Имеем множество из одного слова {aa}, и морфизм $h(a) = a, h(b) = \varepsilon$, тогда с помощью $h^{-1}$ получим язык ${b^*ab^ab^}$

Поэтому вопрос остается прежним - имеет ли смысл обратные затирающие морфизмы?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Конечно имеют, и конечно можно ими пользоваться) Например, через них и пересечения с регулярным языком можно выразить асинхронную композицию КС-языка и регулярного языка (шаффл).

И вы правильно заметили, что они могут порождать сколь угодно длинные отрезки слов в алфавите A тех букв, которые отображаются в пустое слово. Но это просто нужно между каждыми символами, полученными нестирающим обратным морфизмом, вставить пресловутый язык A*.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хорошо, учту и тоже раздельно рассмотрю стирающие и нестирающие прямые и обратные морфизмы

@HumsterProgrammer
Copy link
Owner Author

как всегда про многое хорошее додумались уже до нас.
https://doi.org/10.1016/j.cosrev.2013.06.001
Охотин в своей статье приводит огромную таблицу замкнутости классов языков относительно различных операций с соответствующими ссылками. Поэтому пока в этом пр оставлю лишь ссылку, и как будет много свободного времени(или если у кого-то будет желание помочь), то доделаю таблицу с ссылкой на Охотина
изображение

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants