![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Порождающие грамматики
Классическая теория формальных языков изучает синтаксис (словосочетания) языка. Вводится математическая модель синтаксиса, которая описывает механизмы порождения и распознавания «правильно построенных» слов языка. Задача: описать процедуру, позволяющую породить произвольную цепочку слов языка, согласно конечному множеству правил. Классическим способом определения языков является определение их с помощью порождающих грамматик (грамматик Холмского). Порождающая грамматика позволяет порождать цепочки языка из некоторой начальной цепочки с помощью определенных правил замены. Порождение есть пошаговый процесс, в котором на каждом шаге из цепочки, уже полученной на предыдущем шаге, путем применения правил замены получаем новую цепочку. Пример. Выполняя дифференцирование сложной функции, переходим от одной формулы к другой с помощью таблицы производных. Терминал (терминальный символ) — объект, непосредственно присутствующий в словах языка, и имеющий конкретное, неизменяемое значение (обобщение понятия «буквы»). В формальных языках, используемых на компьютере, в качестве терминалов обычно берут все или часть стандартных символов ASCII — латинские буквы, цифры и спец. символы. Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Нетерминал (нетерминальный символ) — объект, обозначающий какую-либо сущность языка (например: формула, арифметическое выражение, команда) и не имеющий конкретного символьного значения. Словами языка, заданного грамматикой, являются все последовательности терминалов, выводимые (порождаемые) из начального нетерминала по правилам вывода. Чтобы задать грамматику, требуется: ¾ задать алфавиты терминалов и нетерминалов, ¾ набор правил вывода, ¾ выделить в множестве нетерминалов начальный. Порождающая грамматика задается упорядоченным набором из четырех компонент: G =(T, N, P, S,), где · T — алфавит, содержащий множество терминалов; · N — алфавит, содержащий множество нетерминалов, причем N ∩ T =Æ; · S — стартовый (начальный) символ из набора нетерминалов S Î N. Он называется аксиомой. · P — конечное множество правил выводаили продукций. Каждое правило вывода имеет вид: «левая часть» ®«правая часть», «Левая часть» «Правая часть» Для записи правил вывода с одинаковыми левыми частями a ® b 1 a ® b 2... a ® b n будем пользоваться сокращенной записью a ® b 1| b 2|...| b n. Каждое b i, i = 1, 2,..., n, будем называть альтернативой правила вывода из цепочки a. Алфавит Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе P ⊂ (Т∪ N)+ × (Т∪ N) ∗ Будем обозначать: элементы множества T строчными буквами из начала латинского алфавита, элементы множества N — заглавными латинскими буквами. Пример. Пусть даны множества T = {a, b, c}, N = {S}, P = {S → acSbcS, cS → ε }. Тогда ( T, N, P, S) является порождающей грамматикой. Пример. Пусть даны множества T = {0, 1 }, N = {А, S}, P = {S → 0А1, 0А → 00А1, А → ε }. Тогда G1 = ( T, N, Р, S) является порождающей грамматикой., а слово (цепочка)
Цепочка b Î (TÈ N)* выводима из цепочки a Î (TÈ N)+в грамматике G = ( T, N, Р, S), если существуют цепочки g0, g1,..., gn (n> =0), такие, что a = g0® g1®... ® g n = b. Обозначаем: Последовательность g0, g1,..., gn называется выводом длины n.
В последнем примере т.к. существует вывод S ® 0A1 ® 00A11 ® 000A111. (S → 0А1, 0А → 00А1) Длина вывода равна 3. Пример. Пусть G = ({a, b, c}, {S}, {S → acSbcS, cS → ε }, S). Тогда Языком, порождаемым грамматикой G = ( T, N, Р, S) называется множество L (G) = { a Î T * | Другими словами, L (G) - это все цепочки в алфавите T, которые выводимы из S с помощью P. Например, L(G1) = {0n1n | n> 0}. Пример. Пусть G = á { a, b }, { S }, { S a bb, S a aSa }, S ñ. Последовательно применяем правила вывода и находим слова языка в терминальном алфавите: S a bb, S a aSa a abba, S a aSa a aaSaa a aabbaa, S a aSa a aaSaa ….a anbban Язык, порождаемый этой грамматикой, имеет вид L (G)={ anbban | n ³ 0}.
Грамматики G1 и G2 называются эквивалентными, если L (G1) = L (G2). Пример. G1 = ({0, 1}, {A, S}, P1, S) и G2 = ({0, 1}, {S}, P2, S) P1: S ® 0A1 P2: S ® 0S1 | 01 0A ® 00A1 A ®e эквивалентны, т.к. обе порождают язык L(G1) = L(G2) = {0n1n | n> 0}.
Грамматики G1 и G2 почти эквивалентны, если L (G1) È {e} = L (G2) È {e}. Другими словами, грамматики почти эквивалентны, если языки, ими порождаемые, отличаются не более, чем на e. Пример. G1 = ({0, 1}, {A, S}, P1, S) и G2 = ({0, 1}, {S}, P2, S) P1: S ® 0A1 P2: S ® 0S1 | e 0A ®00A1 A ®e почти эквивалентны, т.к. L(G1)={0n1n | n> 0}, а L(G2)={0n1n | n> =0}, т.е. L(G2) состоит из всех цепочек языка L(G1) и пустой цепочки, которая в L(G1) не входит.
Наиболее распространенным способом задания (и распознавания) языка является использование автоматов.
|