Какое значение имеют контекстно-зависимые (тип 1) языки?


34

Видя, что в иерархии Хомского языки типа 3 могут распознаваться конечным автоматом без внешней памяти (т. Е. Конечным автоматом), тип 2 - конечным автоматом с одним стеком (т. Е. Автоматом с понижением) и тип 0 - конечный автомат с двумя стеками (или, что эквивалентно, лента, как в случае с машинами Тьюринга), как языки типа 1 вписываются в эту картину? И какие преимущества дает определение того, что язык - это не только тип 0, но и тип 1?


2
Поскольку вы спрашиваете здесь, а не в cstheory.SE (как предложено @Sunil), я предлагаю вам также добавить краткое описание / определение типа 1, который может быть не всем знаком.
Янома

5
@ Сунил Нет, не будет. Это не вопрос исследовательского уровня (и даже если бы это было так, он все равно был бы здесь по теме, потому что мы не исключаем вопросы исследовательского уровня - по крайней мере, это то, что я помню, было результатом дискуссии по области51).
sepp2k

3
@Janoma: Почему это должно помочь включать информацию, которую можно легко найти (не будет ли это считаться шумом)?
битовая маска

4
@Janoma Я думаю, что общее руководство должно заключаться в объяснении понятий, которые кто-то, кто сможет ответить на вопрос, может не знать (если бы руководство объясняло все, что некоторые пользователи сайта могли бы не знать, мы бы объяснили все все время, и это, конечно, не стандарт на других сайтах SE). И я не думаю, что кто-то, кто не знает иерархии Хомского, сможет ответить на этот вопрос. Конечно, не помешает объяснить как можно больше (если это не утомительно долго задает вопрос) - я просто не думаю, что в этом случае это необходимо.
sepp2k

4
Каждый специалист по информатике знает (или должен знать) иерархию Хомского. Все остальные могут посмотреть его в 20-х годах. Ссылка на Википедию может быть достаточно здесь.
Рафаэль

Ответы:


19

Чувствительные к контексту языки - это как раз те языки, которые могут распознаваться машиной Тьюринга с использованием линейного пространства и недетерминизма. Вы можете смоделировать такую ​​машину Тьюринга, используя экспоненциальное время, чтобы вы могли распознать любой такой язык в экспоненциальном времени. Обратите внимание, что проблема распознавания некоторых контекстно-зависимых языков является -завершенной, что означает, что мы почти уверены, что вы не сможете добиться большего успеха, чем экспоненциальное время.пSпAСЕ

Сравнивая это тип 0 языков, это означает , что вы можете по крайней мере сказать что - то о том , как долго это берет , чтобы признать язык. Язык типа 0 может даже не быть разрешимым: язык всех машин Тьюринга, которые останавливаются, является языком типа 0, но поскольку распознавание этого языка является именно проблемой остановки, его нельзя решить.

Контекстно-зависимые грамматики не очень полезны на практике. Контекстуально свободные грамматики интуитивно работать, но в качестве примеров на Википедии показывает , контекстуально чувствительные грамматики очень быстро стать довольно грязно. Программы , использующие полиномиальное пространство намного более легко разработаны (и в -полноты гарантирует существование некоторой эквивалентной CSG , который только полиномиально больше пространства использования вашего алгоритма).пSпAСЕ

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

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


Но контекстно-зависимые языки являются полезными! Смотрите, например, это обсуждение .
Рафаэль

Чувствительность к контексту полезна, но контекстно-зависимые грамматики как способ описания языков не очень полезны для ИМО. Вам лучше использовать другие средства для описания контекстно-зависимых функций.
Алекс тен Бринк

Но вы говорите о языках в большинстве частей вашего ответа. Что касается грамматики, ммм. Между CFG и CSG существуют грамматические модели, которые имеют естественные приложения для моделирования, например, связанные / мульти-CFG.
Рафаэль

1
Вы правы, я был неаккуратен с различием между языками и грамматикой, которые я вижу. Я обновил свой ответ.
Алекс тен Бринк

10

Вообще говоря, вы обычно хотите знать меньший класс , к которому данный язык принадлежит. Это связано с тем, что более мелкие классы можно распознать / принять / сгенерировать с помощью более простых механизмов (автоматов, грамматик, регулярных выражений и т. Д.), Что является желательным.L

AL(A)

Короче говоря, для небольших классов вам нужно меньше вычислительных ресурсов, чтобы решить проблему определения того, принадлежит ли слово к языку.

Согласно Википедии , Хомский определил контекстно-зависимые грамматики (то есть Тип 1), чтобы описать синтаксис естественных языков. Это немного отличается от других классов языков, которые были введены для описания семейств строк, которые использовались в математике (например, синтаксис арифметических формул) вместо естественных языков (например, синтаксис грамматически правильного предложения в английском языке) ,


2
«Короче говоря, для небольших классов вам нужно меньше вычислительных ресурсов, чтобы решить проблему определения того, принадлежит ли слово к языку». точно, но как это относится к типу 1 против типа 0? Это точно вопрос!
битовая маска

ссN

8

В контекстно-свободных языках в любой точке анализа ввода автомат находится в состоянии, определяемом его стеком. Каждое производство имеет одинаковое поведение при потреблении входных данных независимо от того, где они используются.

Это приводит к интересному свойству, заключающемуся в том, что каждое произведение генерирует подъязык того, который генерируется теми, которые находятся глубже в стеке, и, таким образом, для каждой пары A и B произведений, генерируемых и потребляемых на любом конкретном входе, у нас есть три возможных случая:

  • a: вход, потребляемый A, полностью содержится во входе, потребляемом B; или
  • б: вход, потребляемый А, полностью содержит вход, потребляемый В; или
  • c: вход, потребляемый A, полностью не пересекается с входом, потребляемым B.

Это подразумевает, что следующее никогда не происходит:

  • d: вход, потребляемый A, частично перекрывает вход, потребляемый B.

В отличие от этого, в контекстно-зависимых языках поведение каждого производства зависит от того, где оно используется, поэтому входные данные, используемые в производстве, не являются подъязыком более глубоких в стеке (фактически, обрабатывая его с помощью стек не будет работать). И у нас есть такая возможность.

В реальном мире контекстно-зависимый язык имеет смысл, например, обозначая <b> полужирный текст </ b>, <i> курсивный текст </ i> и <u> подчеркнутый текст </ u> эти HTML-теги и позволяют им перекрываться, например: «Это <u> текст с <i> смешанными </ u> перекрывающимися тегами </ i>». Заметьте, что для анализа этого и определения, соответствуют ли все начальные теги конечным тегам, PDA не подойдет, потому что он не является контекстно-свободным, но LBA легко это сделает.


7

Закрытие недвижимости

Из всех языковых классов иерархии Хомского только регулярные и контекстно-зависимые языки закрыты для дополнения . Следовательно, это своего рода уникальная особенность контекстно-зависимых языков.

В отличие от контекстно-свободных языков, CS также закрыты на пересечение и перемешивают продукт .


6

Любой язык типа 1 может быть распознан машиной Тьюринга, которая использует только линейное пространство (так называемые линейные ограниченные автоматы).


2
Да, это определение. Но как это ограничение помогает мне?
битовая маска

3
это помогает мне, потому что ограничивает возможности алгоритмов, распознающих CSG, E вместо EXP. Я не знаю, как это тебе поможет :)
Суреш

5

Языки типа 1 могут быть определены с помощью линейно ограниченных автоматов , которые являются недетерминированными машинами Тьюринга, которые могут использовать только часть ленты, размер которой линейен по отношению к входному размеру.


4

Иерархия Хомского классифицирует грамматики больше, чем языки. Однако он не был предназначен для того, чтобы иметь какое-то отношение к количеству лент, которые автомат должен был бы распознать, как вы предлагали для типов 2 и 3, даже если есть некая машина Тьюринга, которая делает это для грамматик типа 1.

Следует также отметить, что языки грамматики типа 0 не все распознаются машиной Тьюринга, но они могут перечисляться только такой машиной: тип 0 означает рекурсивное перечисление, а машины Тьюринга распознают только рекурсивные языки.


4

Современный язык программирования постоянно использует контекстно-зависимые функции; они попадают в подмножество, которое может быть эффективно решено.

Примерами являются анализ имени и типа и вывод типа.


3

Многие другие упоминали, что языки типа 1 - это те, которые могут распознаваться линейными ограниченными автоматами. Проблема остановки решаема для линейных ограниченных автоматов, что, в свою очередь, означает, что многие другие свойства, которые в вычислительном отношении неразрешимы для языков, распознаваемых Turning Machines, разрешимы для языков типа 1.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.