По моему опыту, контекстно-зависимые языки и линейно-ограниченные автоматы часто пропускаются или зацикливаются на курсах теории вычислимости, и даже не учтены в некоторых заметных учебниках, хотя конечным автоматам и автоматам с выталкивающими функциями уделяется много внимания. Конечно, должна быть веская причина, почему LBA уделяется меньше внимания, чем их коллегам?
9
Ответы:
С помощью «соответствующих» модификаций мы можем превратить эти классы в классы сложности; Конечные автоматы вNС1 , CFL в LogCFL и LBA в PSPACE.
Теперь должно быть совершенно ясно, почему нас интересуют первые два больше, чем LBA. Первые два естественно вписываются в обычное определение возможных вычислений. Но PSPACE нет.
источник
Ну, спроси своего профессора, почему он это сделал. Я могу только догадываться.
Они не так интересны, как полные модели Тьюринга и КПК, потому что они лишены бесполезности * они, конечно, делятся своим языковым эквивалентом: не настолько мощным, насколько это возможно, но уже очень трудноразрешимым.
Другая причина может заключаться в том, что о них известно не так много (догадываясь здесь), но это может привести к проблеме куриного яйца.
Непонятная погодаNLBA=DLBA , так что это может создать проблемы для дидактики. Кроме того, типичные доказательства (например, принятый язык, эквивалентность модели) намного сложнее, чем для других моделей.
(*) умышленное преувеличение
источник
Похоже, что не только CSG, но и CFG ... сегодня не в моде. Я думаю, что в наши дни автоматы и PDA обычно рассматриваются в курсах по теории вычислимости / сложности (если они вообще есть), и там они включены не ради самих себя, а для представления машин Тьюринга.
Грамматики, вероятно, интересны для теории компилятора, но не настолько, чтобы вычислимость / сложность включались в вводный курс для студентов. Есть слишком много тем, которые хотелось бы охватить, но курс на один семестр слишком короток, и мы должны выбрать, и многие из этих тем, которые мы не можем охватить из-за временных ограничений, намного интереснее, чем LBA.
источник
Регулярные выражения и CFG используются на практике для анализа кода (то есть языков программирования). Причина в том, что существуют очень эффективные алгоритмы их анализа. С другой стороны, LBA слишком мощные, чтобы использовать их в этом контексте.
Историческое происхождение теории автоматов является предметом построения компилятора. По причине, упомянутой выше, только обычные языки и CFG полезны для построения компиляторов (несмотря на тот факт, что атрибутивные грамматики на самом деле не являются CFG и что алгоритмы синтаксического анализа CFG на самом деле не анализируют весь класс CFG). LBA, возможно, был изобретен Хомским как некоторый промежуточный уровень сложности между мирским и «английским». Так что, возможно, самое подходящее место для их обучения - курсы лингвистики, а не курсы информатики!
источник