Как проверить работу автомата над словом
Перейти к содержимому

Как проверить работу автомата над словом

  • автор:

Как проверить работает ли автомат в щитке

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

Когда отключается автомат в щитке

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

Как понять что буксует автомат

Вот как буксует АКПП — Вы нажимаете на газ, обороты двигателя растут, ничего не происходит, автомобиль наконец трогается с места, а на тахометре уже больше трёх тысяч оборотов. Еще одним верным признаком пробуксовки коробки является затруднённый переход на пониженную передачу.

Как проверить автомат

Выжмите педаль тормоза и пройдите «круг» переключения передач. Сначала выполните действия медленно, плавно переключая передачи и останавливаясь на каждой на 5-10 секунд. Далее выполните переключения быстро, с остановкой не более чем на секунду.

Сколько стоит заменить автоматы в щитке

Цены на замену автомата в щитке

Установка автомата в электрощитке (четырехполюсного)

Замена автомата в щитке

Монтаж УЗО двухполюсного

Монтаж УЗО четырехполюсного

Можно ли рвать ноль автоматом

ПУЭ запрещено в таком случае обрывать только PE проводник. Но вы смело можете заводить N проводник на автомат. Напомню, что заводить фазу и ноль на разные автоматы запрещено. Подводятся проводники только к одному аппарату, который в свою очередь выключит одновременно от сети проводники.

Почему не держит автомат в щитке

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

Можно ли самому поменять автомат в подъезде

Автоматы в вашем щитке в подъезде менять бесплатно не должен НИКТО. Существуют исключения, это внеплановый капитальный ремонт или аварийная ситуация в самом щите (сгорели автоматы или провода) — в этих случаях автоматы вам меняет управляющая компания или аварийная служба.

Сколько стоит автомат в щитке

3 019,00 руб./шт. 2 712,00 руб./шт. 889,00 руб./шт. 795,00 руб./шт.Щитки, автоматы, счетчики — стоимость

Почему срабатывают автоматы

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

Почему выбивает автомат и не включается

Если выбило УЗО или автомат и они не включаются, то, скорее всего, произошло короткое замыкание. Обычно это происходит из-за неисправности какого-либо прибора или проводки, например.

Как отключить автомат в щитке

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

Что делать если выбило пробки автомат

Отключите все электроприборы из розеток и поверните выключатели в положение «выкл»; затем включите автомат и по одному включайте приборы если у вас керамические предохранители — их нужно заменить, а лишь затем включать.

Как понять что автомат скоро сломается

6 признаков того, что «автомат» в вашей машине скоро сломается:

  • Подтекает трансмиссионное масло Банальная и распространенная проблема — утечка масла через уплотнительные прокладки.
  • Толчки, удары, вибрации, рывки
  • Пробуксовка
  • Шум
  • Отсутствие движения
  • Черное горелое масло

Как происходит диагностика коробки автомат

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

Для чего кнопка тест на автомате

Суть этой кнопки в том, что при нажатии на нее создается искусственная утечка тока в устройстве и реле срабатывает, отключая сеть — так вы проверяете работоспособность УЗО..

Нужно ли ставить автомат на ноль

ПУЭ запрещает рвать автоматом только заземляющий проводник PE. Поэтому нулевой проводник можно заводить на автоматический выключатель.

Почему греется и выбивает автомат

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

Как называется автомат в электрическом щитке

Большинство из нас знают, что если дома вырубился свет — нужно пойти и включить в щитке автомат (АПшку, рубильник или кто как называет).

Можно ли поменять вводной автомат

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

Сколько стоит установка автоматов

Установка и подключение автомата трехполюсного

Установка и подключение УЗО, ДИФ автомата двухполюсного

Установка и подключение УЗО, ДИФ автомата четырехполюсного

Установка и подключение однофазного электросчетчика 220 Вольт

Какие автоматы должны стоять в щитке

Для обеспечения защиты дома от возгорания электропроводки и пожара необходимо обязательно установить автомат.Выбор автомата по селективности:

  • 10А — для приборов системы освещения;
  • 16А — для розеток;
  • 25А — для очень мощных электроприборов;
  • 32А — для электрической плиты;
  • 40А — для основного выключателя.

Как понять пинается коробка или нет

Термином «пинается» автомобилисты и сотрудники автосервисов обычно обозначают появление рывков в работе коробки. При этом автомобиль начинает ускоряться таким образом, что создается впечатление, как будто бы он периодически получает удар (пинок) сзади.

Как понять что коробка передач сломалась

Неисправности коробки передач можно установить по внешним признакам:

  • шум коробки передач;
  • затрудненное включение передач;
  • самопроизвольное выключение передач;
  • подтекание масла.

Как сделать диагностику коробки автомат

Слитое из коробки масло не должно иметь запаха гари, должно иметь красноватый или желтоватый цвет, в зависимости от типа ATF возможно некоторое потемнение. При растирании на пальцах не должно быть заметный примесей. В объеме масла не должно быть пены, включений и белесых разводов. Проверка отложений в поддоне АКПП.

16.05.2023 Как проверить работает ли автомат в щитке

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

Для проверки работоспособности автомата необходимо отключить электропитание квартирного щитка и отключить все автоматы защиты. Затем нужно щелкнуть рычаг взвода автоматического выключателя — если щелчка не слышно, автомат неисправен и требует замены. Если же щелчок есть, необходимо измерить сопротивление между клеммами автомата защиты измерительным прибором.

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

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

Причинами выхода автомата из строя могут стать некачественный стабилизатор или кратковременное превышение номинального тока. Неправильное подключение также может привести к проблемам — плохо притянутые жилы могут нагреваться и запускать тепловой расцепитель.

Для проверки автомата можно выполнить «круг» переключения передач — сначала медленно и плавно, затем быстрее с остановкой не более чем на секунду. Затрудненный переход на пониженную передачу или длительная задержка могут свидетельствовать о неисправности.

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

Несмотря на то, что есть возможность заводить провода на автомат, запрещено обрывать только PE проводник. Но заводить фазу и ноль на разные автоматы запрещено. Подводятся проводники только к одному аппарату, который, в свою очередь, выключит одновременно от сети проводники.

Как проверить и восстановить работу автоматов в электрощите?

Автоматы в электрощите – это устройства, которые отвечают за защиту электрической сети от перегрузки и короткого замыкания. Они играют важную роль в обеспечении безопасности и надежности работы электроснабжения. Но как же проверить и восстановить работу автоматов, если возникли проблемы? В этой статье мы разберем основные шаги по диагностике и ремонту автоматов.

Почему необходимо проверять и поддерживать работу автоматов?

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

Как провести проверку автоматов?

Перед началом любых работ с электричеством необходимо обязательно отключить подачу напряжения на соответствующий участок сети и принять все меры предосторожности. Для проверки автоматов потребуются следующие инструменты:

  • Тестер (мультиметр)
  • Отвертка
  • Набор ключей

В случае, если вы не имеете достаточных знаний и опыта в обращении с электричеством, лучше обратиться к специалистам для проведения проверки и ремонта автоматов.

Первым шагом будет проверка состояния корпуса автомата – он должен быть целым и не поврежденным. Затем нужно проверить контакты – они не должны быть окисленными или размятыми. Если это так, то следует очистить контакты от окисления и при необходимости заменить поврежденные детали.

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

Как восстановить работу автоматов?

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

Если же вы не обнаружили явных повреждений или неисправностей при проверке, но все еще есть проблемы с электрической сетью, то стоит обратиться к специалистам для более детальной диагностики и поиска причин поломки.

В заключение

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

Надеемся, что данная статья помогла вам разобраться в процессе проверки и восстановления работы автоматов в электрощите. Будьте осторожны и следите за состоянием своей электрической сети!

Как проверить работу автомата над словом?

ishyfaq.ru

Автомат в теории формальных языков — это абстрактное математическое устройство, используемое для моделирования различных типов компьютерных систем и вычислительных процессов. Автоматы широко применяются для проверки правильности работы программного обеспечения, в том числе для проверки работоспособности языковых программ.

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

Существует несколько способов проверки работы автомата над словом. Одним из наиболее популярных способов является использование формальных языков и формальных грамматик для описания правил работы автомата. При этом используются различные инструменты, такие как регулярные выражения и контекстно-свободные грамматики.

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

Выбор подходящего инструмента

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

  • Python: язык программирования Python предоставляет широкие возможности для реализации автоматов и проведения проверки. С помощью модуля re можно создать регулярное выражение, которое определит правила работы автомата над словом.
  • Конечный автомат: существуют специализированные инструменты для работы с конечными автоматами, такие как JFLAP, Graphviz, или библиотеки Python, например, networkx. Они предоставляют графический интерфейс или программные средства для создания и проверки конечных автоматов.
  • Регулярные выражения: другой подход состоит в использовании регулярных выражений для проверки соответствия слова заданным правилам. Регулярные выражения широко поддерживаются в различных языках программирования, таких как Python, Java, JavaScript.

Выбор подходящего инструмента зависит от конкретной задачи и требований, предъявляемых к проверке работы автомата. Необходимо учитывать уровень сложности автомата, наличие возможности графической визуализации, доступность языка программирования и другие факторы.

Использование онлайн сервисов

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

  1. RegExr: это мощный онлайн-редактор регулярных выражений, который позволяет проверять работу автомата над словом с использованием регулярных выражений. Вы можете вводить свои регулярные выражения и слова для проверки, а также визуально отслеживать процесс обработки слова.
  2. Regex101: это еще один полезный онлайн-редактор регулярных выражений, который предлагает более подробную информацию о совпадениях и результате проверки регулярного выражения. Здесь вы можете вводить свои регулярные выражения и слова для проверки, а также видеть, как каждая часть регулярного выражения взаимодействует с обрабатываемым словом.
  3. Regex101: это еще один полезный онлайн-редактор регулярных выражений, который предлагает более подробную информацию о совпадениях и результате проверки регулярного выражения. Здесь вы можете вводить свои регулярные выражения и слова для проверки, а также видеть, как каждая часть регулярного выражения взаимодействует с обрабатываемым словом.

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

Анализ частотности слов

Анализ частотности слов является одним из основных инструментов в области обработки естественного языка. Он позволяет выявить, какие слова наиболее часто встречаются в тексте или коллекции текстов.

Для анализа частотности слов существует несколько различных подходов и инструментов. Ниже представлены некоторые из наиболее эффективных и популярных методов и инструментов:

  1. Стоп-слова: Вначале необходимо удалить так называемые «стоп-слова» из текста. Стоп-слова — это слова, которые не несут смысловой нагрузки и встречаются очень часто в тексте (например, предлоги и союзы). Такие слова, как правило, не несут информационной ценности и могут искажать результаты анализа. Для удаления стоп-слов можно воспользоваться готовыми списка, такими как список стоп-слов из библиотеки Natural Language Toolkit (NLTK) для Python.
  2. Токенизация и лемматизация: После удаления стоп-слов необходимо токенизировать текст, то есть разбить его на отдельные слова или токены. Токенизация является важным шагом для дальнейшей обработки текста. Затем можно применить лемматизацию, чтобы привести слова к их базовой форме (лемме).
  3. Частотность слов: Для подсчета частотности слов нужно создать словарь, в котором ключами будут являться все уникальные слова из текста или коллекции текстов, а значениями — количество их вхождений. Этот словарь позволит определить, какие слова наиболее часто встречаются.
  4. Визуализация: Для наглядности и визуализации результатов анализа можно использовать графики и диаграммы. Например, можно построить гистограмму, на которой отображается количество вхождений каждого слова.

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

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

Нейронная сеть и машинное обучение

Нейронные сети и машинное обучение являются одними из наиболее эффективных способов проверки работы автомата над словом.

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

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

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

  • Преимущества использования нейронных сетей и машинного обучения для проверки работы автомата над словом:
    • Высокая производительность и эффективность обработки данных.
    • Способность обрабатывать сложные и неоднозначные задачи.
    • Автоматическое обучение и адаптация системы к новым данным.
    • Возможность работы с большими объемами данных.
    • Гибкость и адаптивность системы.

    Примеры инструментов для работы с нейронными сетями и машинным обучением:

    Сравнение результатов с эталоном

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

    Для сравнения результатов с эталоном можно использовать различные инструменты и методики. Рассмотрим несколько наиболее эффективных способов:

    1. Вручную сравнивать каждый полученный результат с эталоном. Этот метод является самым простым, но при этом требует большого времени и усилий, особенно при большом объеме данных. Используя этот метод, можно отмечать совпадения и расхождения между полученными и эталонными значениями.
    2. Использовать специальные программы и скрипты для автоматического сравнения результатов с эталоном. Эти инструменты позволяют сократить время проведения проверки и уменьшить вероятность ошибок. Например, можно написать скрипт на языке программирования Python, который будет автоматически сравнивать значения и выдавать отчет о совпадениях и расхождениях.
    3. Использовать специализированные программы и библиотеки для сравнения результатов. Некоторые языки программирования, такие как Java и C#, предоставляют программные средства для сравнения строк и других объектов. Также существуют готовые библиотеки, такие как JUnit (Java) и NUnit (.NET), которые позволяют легко и удобно сравнивать значения и генерировать отчеты о совпадениях и расхождениях.

    При сравнении результатов с эталоном важно учесть такие факторы, как возможные погрешности и неопределенности, которые могут возникнуть в процессе работы автомата над словом. Также следует учитывать контекст и особенности задачи, на основе которой был создан эталон.

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

    Участие в коллективном тестировании

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

    В коллективном тестировании каждому участнику предоставляется возможность проверить автомат на различных входных данных и в разных контекстах. Это позволяет более полно охватить все возможные варианты использования автомата и обнаружить потенциальные проблемы.

    Основными преимуществами коллективного тестирования являются:

    • Большее количество проверок, что позволяет более точно выявить ошибки и улучшить работу автомата;
    • Разнообразие входных данных и контекстов использования, что помогает проверить автомат на разные сценарии работы;
    • Обмен опытом и знаниями между участниками, что способствует повышению качества работы.

    Для проведения коллективного тестирования можно использовать различные инструменты и методы:

    1. Совместное обсуждение результатов тестирования и анализ полученных данных;
    2. Использование специальных тестовых сценариев, которые можно разработать заранее;
    3. Использование инструментов для автоматизации тестирования, которые помогут ускорить процесс и повысить его эффективность;
    4. Работа в команде и распределение задач между участниками.

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

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

    Автоматический анализ семантики

    Автоматический анализ семантики — это процесс, при котором компьютерная программа пытается понять смысл текстовых данных. Этот процесс осуществляется с помощью различных алгоритмов и инструментов, которые позволяют обработать и интерпретировать тексты на естественном языке.

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

    Для решения задач автоматического анализа семантики используются различные инструменты и технологии. Например, существуют программы, которые основываясь на знаниях о языке и контексте, способны определить смысловые отношения между словами и предложениями. Также используются статистические методы и машинное обучение, которые позволяют создавать модели, способные автоматически классифицировать и анализировать тексты.

    Одним из наиболее распространенных инструментов автоматического анализа семантики является WordNet. WordNet — это лексическая база данных, которая содержит семантические отношения между словами. Она может быть использована для решения задач классификации текстов, поиска похожих слов, а также для создания семантических моделей.

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

    Вопрос-ответ

    Какие существуют способы проверки работы автомата над словом?

    Существуют различные способы проверки работы автомата над словом. Один из них – это визуальная проверка, когда перечисляются все шаги работы автомата над конкретным словом. Другой способ – это использование специализированных программ или инструментов, которые автоматизируют процесс проверки и дают более точные результаты. Также существует математический подход, связанный с теорией формальных языков и алгоритмами.

    Какой инструмент лучше использовать для проверки работы автомата?

    Для проверки работы автомата над словом можно использовать различные инструменты. Один из самых популярных инструментов – это язык программирования Python с библиотекой automata-lib, которая предоставляет удобные функции для работы с автоматами. Также можно использовать онлайн-сервисы, которые позволяют проверить работу автомата простым вводом его описания и слова. Некоторые программы для работы с автоматами могут быть специализированы для определенных типов автоматов, например, конечных автоматов или стековых автоматов.

    Как можно проверить работу автомата вручную?

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

    Как проверить работу автомата над словом

    Задача 49798 а) Написать таблицу состояний данного.

    а) Написать таблицу состояний данного автомата.
    б) Считая автомат неинициальным, построить эквивалентный автомат
    Мура. Проверить работу данного и построенного автоматов над одним и тем
    же словом.

    математика ВУЗ 1049

    О решение.

    На нашем сайте такое бывает редко, но решение к данной задаче еще никто не написал.

    Что Вы можете сделать?
    1. Выставите данный вопрос вновь. Перейдите на главную страницу.
    2. Найдите похожую задачу. Используйте поиск.

    Решение

    Построим сам граф. Столбцы – вершины графа, строки – его рёбра. Если ребро инцидентно вершине, то клетка будет закрашена. Получим: Составим остовное дерево для данного графа. Остовное дерево графа – это подграф графа, состоящий из всех вершин графа и минимального числа рёбер так, чтобы из любой вершины можно добраться в любую. Сначал включаем в оствное дерево ребро Ребро добавляет к остовному дереву вершину , его также включаем. Ребро добавляет к остовному дереву вершину , его также включаем. Ребро добавляет к остовному дереву вершину , его также включаем. Ребро добавляет к остовному дереву вершину , его также оставляем. Ребро добавляет к остовному дереву вершину , его также оставляем. Ребро не добавляет к остовному дереву новых вершин, поэтому его в остовное дерево не включаем. Ребро добавляет к остовному дереву вершину , поэтому его также включаем. В остовное дерево включены все вершины графа, поэтому остовное дерево построено.

    4. А) Написать таблицу состояний данного автомата.

    б) Считая автомат неинициальным, построить эквивалентный автомат Мура. Проверить работу данного и построенного автоматов над одним и тем же словом. Решение. Изобразим таблицу данного автомата

    A\Q 1 2 3 4
    a 1,0 4,1 1,0 2,1
    b 3,1 3,1 4,0 4,0

    По данному неинициальному автомату Мили строим эквивалентный ему автомат Мура следующим образом: Автомат содержит состояний, каждое из которых мы будем помечать двумя символами. Состояния автомата обозначим так: , , , , , , , , , , , .

    μ 0 1 1 1 0 0 1 0
    A\Q *1 *2 *3 *4 a1 b1 a2 b2 a3 b3 a4 b4
    a a1 a2 a3 a4 a1 a3 a4 a3 a1 a4 a2 a4
    b b1 b2 b3 b4 b1 b3 b4 b3 b1 b4 b2 b4

    Проверим работу исходного автомата над словом , запустив его из 2 состояния: 3 1 1 3 1 0 Построенный автомат Мура запускаем из состояния 0 a3 a1 b1 a3 Как видим, результаты обоих автоматов совпали.

    Синхронизируемые автоматы

    В семестровом спецкурсе будет обсуждён ряд актуальных задач теории конечных автоматов, в частности, гипотеза Черни о синхронизируемых автоматах и ее обобщения, а также задача о раскраске дорог.

    Image:cerny4.jpg

    На рисунке представлен синхронизируемый автомат: можно проверить, что слово baaabaaab синхронизирует его, т.е. переводит в состояние, не зависящее от того, в каком состоянии автомат находился первоначально. Гипотеза Черни утверждает, что для любого синхронизируемого автомата с n состояниями существует синхронизирующее слово длины (n-1)^2. (В примере на рисунке n=4 и указанное слово имеет длину 9=(n-1)^2.) Вопрос о её справедливости остаётся открытым уже более 50 лет.

    В спецкурсе будет освещено современное состояние теории синхронизируемых автоматов и предложено несколько задач для исследовательской работы.

    Для понимания спецкурса требуется владение базовым курсом линейной алгебры (2-й семестр 1-го курса) и элементами теории графов. Желательно (но необязательно) представление об NP-полных задачах. Предварительные знания по теории автоматов не предполагаются. Отчётность — экзамен или зачет (по выбору слушателя). Формально спецкурс адресован студентам потока ФИИТ (3-й -4-й курсы), но приглашаются все заинтересованные студенты бакалавриата и магистратуры.

    Спецкурс читается по понедельникам 2-й парой в MS Teams.

    Лекция 1: определение, история, мотивация

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

    Слайды лекции (на английском языке)

    Лекция 2: Алгоритмические аспекты

    Излагаются алгоритм Лю-Черни проверки автомата на синхронизируемость и жадный алгоритм построения синхронизирующего слова.

    Лекция 3: Теоретико-сложностные аспекты

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

    Лекция 4: Гипотеза Черни

    Доказывается нижняя оценка (n-1)^2 на максимум порогов синхронизируемых автоматов с n состояниями. Формулируется и обсуждается гипотеза Черни о точности этой нижней оценки.

    Лекция 5: Метод расширения

    Обсуждается метод расширения. Доказывается верхняя оценка n^2-3n+3 на порог синхронизации эйлеровых синхронизируемых автоматов с n состояниями

    Лекция 6: Автоматы с нулем

    Доказывается верхняя оценка n(n-1)/2 на порог синхронизации синхронизируемых автоматов с n состояниями, одно из которых является нулем автомата, и точность этой оценки для автоматов с нулем над неограниченным алфавитом. Обозреваются недавние результаты о пороге синхронизации синхронизируемых автоматов с нулем и двумя входными буквами.

    Лекция 7: Апериодические автоматы

    Доказывается верхняя оценка n(n-1)/2 на порог синхронизации апериодических синхронизируемых автоматов с n состояниями.

    Смотрите также:

    • Волков Михаил Владимирович
    • Волков Михаил Владимирович: Читаемые курсы
    • Сайт разработан на основе «Wikipad» v1.4.0
    • © 2009–2020 Кафедра алгебры и фундаментальной информатики (ранее “Кафедра алгебры и дискретной математики”)

    Математические основы информатики: из неопубликованного

    В лекции 2 (напомним, что эти материалы дополняют лекции Педагогического университета “Первое сентября”, опубликованные в № 17–24/2007) рассматривалась математическая модель формального исполнителя — так называемый “конечный автомат”. Для читателя, оформившего подписку лишь с января 2008 г., мы в преамбуле этой статьи очень кратко повторим основные определения.

    С точки зрения информатики совершенно все равно, из чего сделан автомат. Важно лишь то, что он воспринимает некоторые сигналы как команды и по каждой команде выполняет некоторое действие, переходя из одного состояния в другое. Поэтому можно считать, что каждый автомат описывается набором возможных состояний, списком допустимых команд и перечислением того, из какого состояния в какое переходит автомат под воздействием каждой команды. Например, если команд только две, то их можно обозначить буквами, скажем, a и b, или цифрами, состояния автомата — буквами q1, q2, . qm, а перечислить варианты перехода из одного состояния в другое можно с помощью таблицы (см., например, табл. 1). В клетке, стоящей на пересечении строки и столбца, указывается то состояние, в которое переходит автомат, находившийся в состоянии, которое указано в заголовке того же столбца, и получивший команду, указанную в заголовке той же строки.

    Автомат можно описать и другой информационной моделью — орграфом 1 . Вершинами орграфа являются состояния автомата, дугами — переходы из одного состояния в другое. На каждой дуге имеется метка, показывающая, по какой команде осуществляется такой переход. Тогда автомат, описанный табл. 1, изобразится так, как показано на рис. 1. Обратите внимание, что из каждой вершины выходит столько стрелок, сколько символов в алфавите, при этом каждый символ употреблен ровно один раз.

    Одно из состояний называется начальным — именно в нем находится автомат до начала работы. Договоримся начальное состояние всегда обозначать q1. Некоторые из состояний являются заключительными — приведение автомата в это состояние является целью управления автоматом с помощью той или иной последовательности команд. Конечных состояний может быть несколько. Обозначать тот факт, что данное состояние конечное, будем буквой К в скобках около обозначения данного состояния. Например, q2(К).

    Ясно, что целью управления автоматом является выдача ему такой последовательности команд, которая переводит его из начального состояния в какое-либо конечное. Поскольку каждая команда обозначена буквой, то набор команд, понимаемых данным автоматом, можно считать некоторым алфавитом А. Тогда последовательность команд, т.е. программа, будет записываться как слово в этом алфавите. Например, слово abа переводит автомат, описанный табл. 2, из начального состояния q1 в состояние q4. Можно сказать, что слово abа задает на орграфе данного автомата некоторый маршрут из состояния q1 в состояние q4.

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

    В лекции 2 был приведен пример множества слов, которое не является распознаваемым языком. Поэтому возникают естественные вопросы: как можно узнать, распознаваем язык или нет; как строить распознаваемые языки; как построить автомат по распознаваемому языку. Именно эти вопросы мы и намерены обсудить в данной публикации.

    § 4. Недетерминированный автомат

    Обратите внимание: в построенной выше модели автомата этот формальный исполнитель обязательно откликался на каждое к нему обращение с командой и реагировал на нее всегда однозначно. С точки зрения понятия “алгоритм” такое поведение формального исполнителя представляется совершенно естественным — оно отражает то свойство алгоритмов, которое называют детерминированностью (см. лекцию 3, § 5). Давайте, однако, предоставим автомату некоторую свободу. Пусть он уже не будет обязан однозначно реагировать на каждую команду, а может по той или иной команде переходить в какое-нибудь из состояний, или вообще не менять состояние. Конечно, мы по-прежнему можем изображать такой автомат размеченным орграфом, только теперь стрелок с одним и тем же символом алфавита, выходящих из одной вершины, может быть несколько или ни одной (см. рис. 2). Такой автомат называют недетерминированным. Как обычно, в нем одно состояние называют начальным; мы по-прежнему будем обозначать его q1. Одно или несколько состояний являются конечными. Цель та же — перевести последовательностью команд автомат из начального состояния в какое-нибудь конечное. Как и ранее, языком, распознаваемым данным недетерминированным автоматом, называется множество слов, для каждого из которых существует хотя бы один путь, переводящий автомат из начального состояния в какое-либо конечное состояние. Отличие, однако, в том, что теперь слово (т.е. последовательность команд) вовсе не каждый раз переведет автомат из начального состояния в то же самое конечное.
    А может и вообще перевести его в какое-нибудь промежуточное состояние. Например, слово bаb может перевести автомат, изображенный на рис. 2, из состояния q1 как в состояние q1, так и в состояние q3. “Нам не дано предугадать, как наше слово отзовется” — едва ли поэт написал эти слова про недетерминированный автомат, но… Действительно, можно сказать, что недетерминированный автомат до определенной степени моделирует поведение человека — одни и те же слова могут приводить к разным реакциям, а иногда и просто к “зависанию” 2 .

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

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

    Пусть q1, q2, . qm> — множество всех состояний недетерминированного автомата, причем q1 — его начальное состояние. Построим множество В всех подмножеств этого множества. Элементы множества В будем обозначать большими буквами Q с индексами, при этом через Q1 обозначим одноэлементное множество q1>. Как известно, В состоит из 2 m элементов. Именно их мы и возьмем в качестве состояний конструируемого автомата.

    Определим теперь воздействия символов алфавита А на состояние Qk. Пусть Qk = qi1, qi2, . qin>. Для каждого символа а из А и qis построим множество Сs по следующему правилу: рассмотрим все стрелки, выходящие в исходном автомате из состояния qis и отмеченные символом а; тогда в Сs включаем все те состояния исходного автомата, которые записаны на концах этих стрелок (см. рис. 3a).

    А теперь объединим все множества Сs. Получившееся множество состояний совпадает с каким-то Qt. В конструируемом автомате соединим состояния Qk и Qt стрелкой с меткой а на ней (см. рис. 3б). Могло, конечно, случиться так, что ни из одного элемента не выходит ни одной стрелки, помеченной а. Тогда из множества Qk стрелка, отмеченная символом а, ведет в пустое множество.

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

    Построим, к примеру, такой автомат для недетерминированного автомата, изображенного на рис. 2. Множество В имеет восемь элементов:

    Вернемся к доказательству утверждения. Пусть для некоторого слова имеется маршрут в орграфе недетерминированного автомата, который ведет из начального состояния q1 в некоторое конечное, скажем, qi. Но тогда тот же маршрут переводит построенный нами автомат из начального состояния Q1 в то Ql, которое содержит это самое qi. Но такое Ql отмечено как конечное состояние, так что выбранное нами слово принадлежит распознаваемому языку. И наоборот, если некоторое слово переводит автомат из начального состояния Q1 в некоторое конечное состояние Ql, то это Ql содержит некоторое конечное состояние исходного недетерминированного автомата. Но тогда в орграфе недетерминированного автомата существует некоторый маршрут, размеченный символами данного слова и ведущий из начального состояния q1 в то конечное, которое содержится в Ql. Это означает, что множества распознаваемых слов у этих автоматов одинаковы.

    О чем оно свидетельствует? А вот о чем: множество алгоритмов, управляющих обычными автоматами, и множество алгоритмов, управляющих недетерминированными автоматами, совпадают. Но для обычных автоматов эти алгоритмы обладают свойствами детерминированности и результативности, а для недетерминированных — нет. Это еще раз свидетельствует о том, что далеко не все так называемые “свойства алгоритмов” присущи всем алгоритмам (и потому не могут претендовать на роль “аксиом” в определении понятия “алгоритм”). Мы неформально говорили об этом в лекции 3. Далее мы обсудили это на вполне строгом и формализованном уровне.

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

    Вопросы и задания

    1. Для недетерминированного автомата, изображенного на рис. 2, определите те состояния, в которых может оказаться автомат после исполнения последовательности команд

    б) ababbabbb;

    в) babaabaaa;

    (запись a n означает, что буква а повторена n раз).

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

    3. а) Определите, какой язык распознается недетерминированным автоматом, орграф которого изображен на рис. 5а.

    б) Определите, какой язык распознается недетерминированным автоматом, орграф которого изображен на рис. 5б.

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

    § 5. Операции над языками

    Отвлекаясь от смысла слов, хотя, разумеется, смысл — это главное, для чего слова употребляются 3 , можно сказать, что формально любой язык — это произвольное множество слов, составленных из символов некоторого фиксированного алфавита. Как и над любыми множествами, над языками можно выполнять теоретико-множественные операции — находить пересечение, объединение, дополнение.

    Напомним, что пересечением двух множеств М1 и М2 называется такое множество М, которое содержит те и только те элементы, которые одновременно принадлежат обоим множествам М1 и М2. Пересечение множеств М1 и М2 обозначается как . Объединением множеств М1 и М2 называется такое множество М, которое содержит те элементы, которые принадлежат хотя бы одному из множеств М1 и М2. Объединение множеств М1 и М2 обозначается как . Наконец, дополнением к множеству М1 называется множество М, которое содержит те и только те элементы, которые не принадлежат множеству М1. Дополнение к множеству М1 обозначается как .

    Оказывается, что если эти операции применить к распознаваемым языкам, то в результате получится снова распознаваемый язык.

    Теорема 1. Объединение и пересечение двух распознаваемых языков, а также дополнение к распознаваемому языку является распознаваемым языком.

    Доказательство. Пусть L1 и L2 — распознаваемые языки, . Рассмотрим два недетерминированных автомата А1 и А2, первый из которых распознает язык L1, а второй распознает язык L2. Пусть они представлены соответствующими орграфами (см. рис. 6). Чтобы не путать состояния разных автоматов, во втором из них для обозначения состояний использована буква s; при этом через s1 обозначено начальное состояние второго автомата.

    Чтобы построить автомат, распознающий , сделаем у автоматов А1 и А2 вершины q1 и s1 одной общей вершиной (см. рис. 7), все остальное оставим, как и было, в том числе конечными состояниями объявим те состояния, которые были конечными хотя бы у одного из автоматов А1 и А2. Получился новый недетерминированный автомат А. Ясно, что если некое слово распознавалось автоматом А1 или автоматом А2, т.е. в орграфе соответствующего автомата существовал путь, размеченный этим словом, из начального состояния в некоторое конечное, то в орграфе автомата А тоже найдется путь из начального состояния в некоторое конечное, также размеченный этим словом. Разумеется, верно и обратное: слово, распознаваемое автоматом А, обязательно распознается одним из автоматов А1 или А2. Тем самым, недетерминированный автомат А задает язык .

    Нетрудно показать, что если распознаваем язык L, то распознаваем и язык . Доказательство этого утверждения мы оставляем читателю в качестве несложного упражнения (см. задание 2). Утверждение о том, что пересечение распознаваемых языков L1 и L2 — это снова распознаваемый язык, теперь вытекает из уже рассмотренной части утверждений теоремы 1 и довольно известной (и легко доказываемой) формулы теории множеств:

    Легко построить автомат, который будет распознавать язык, состоящий ровно из одного слова. Пусть, к примеру, это будет слово а1а2. аn. На рис. 8 приведен недетерминированный автомат, распознающий этот язык.

    Из теоремы 1 и сделанного наблюдения легко получить следующее следствие.

    Следствие. Любой язык, состоящий из конечного количества слов, распознаваем.

    Конкатенацией двух слов а1а2. аn и b1b2. bm называется слово, полученное приписыванием справа к первому слову второго слова, т.е. слово а1а2. аnb1b2. bm. Конкатенацию слов нередко называют умножением слов или сложением; в языках программирования для обозначения операции конкатенации обычно используют знак “+”. Ясно, что операция конкатенации ассоциативна (т.е. удовлетворяет сочетательному закону), но не коммутативна (т.е. не удовлетворяет переместительному закону). Мы будем обозначать конкатенацию умножением и результат называть произведением слов.

    Произведением языков L1 и L2 называется множество слов, полученных как всевозможные произведения слов языка L1 на слова языка L2. Произведение языков L1 и L2 будем обозначать как L1L2.

    Теорема 2. Произведение двух распознаваемых языков является распознаваемым языком.

    Доказательство. Пусть L1 и L2 — распознаваемые языки, L = L1L2. Рассмотрим два недетерминированных автомата А1 и А2, первый из которых распознает язык L1, а второй распознает язык L2. Пусть они представлены соответствующими орграфами (см. рис. 8). Для доказательства будут важны конечные состояния автомата А1, поэтому на рис. 8 мы два из них изобразили вершинами qk и qm.

    Сделаем теперь столько копий автомата А2, сколько конечных состояний имеет автомат А1. Каждое конечное состояние автомата А1 отождествим с начальным состоянием одной из копий автомата А2 (см. рис. 9). Получился новый автомат с начальным состоянием q1 и множеством конечных состояний, которое состоит из конечных состояний всех взятых нами копий автомата А2. Легко видеть, что построенный автомат распознает слово тогда и только тогда, когда оно является конкатенацией слова, распознаваемого автоматом А1, и слова, распознаваемого автоматом А2. Теорема доказана.

    Еще одна операция, которую выполняют над языками, называется итерацией языка. Вот как она определяется. Обозначим через пустое слово, т.е. слово, не содержащее ни одного символа алфавита. Пусть L — некоторый язык. Тогда определим степени языка L, положив L 0 = <>, L 1 = L, L n + 1 = LL n . Через L* обозначим объединение всех L i для i 0. Множество L* и называется итерацией языка L.

    Теорема 3. Итерация распознаваемого языка является распознаваемым языком.

    Доказательство. Пусть L — распознаваемый язык. Рассмотрим недетерминированный автомат А, который распознает язык L. Пусть он представлен соответствующим орграфом (см. рис. 10). Для доказательства будут важны конечные состояния автомата А и предшествующие им, поэтому на рис. 10 мы два конечных состояния изобразили вершинами qk и qm.

    Построим новый автомат следующим образом. Во-первых, объявим состояние q1конечным (если оно уже не было таковым до этого). Во-вторых, ликвидируем все конечные состояния автомата А, кроме состояния q1, а входящие в них стрелки направим в q1 (см. рис. 11). Теперь ясно, что слово будет распознаваться новым автоматом тогда и только тогда, когда оно принадлежит некоторой степени языка L, т.е. множество слов, распознаваемых новым автоматом, в точности совпадает с итерацией языка L.

    Мы уже отмечали, что любой конечный язык распознаваем. Из рассмотренных теорем немедленно следует, что язык, полученный из конечного набора конечных языков применением конечного числа раз операций объединения, умножения и итерации, будет распознаваемым. Но самое замечательное, что верно и обратное утверждение: если язык распознаваем, то он получается из конечного набора конечных языков применением конечного числа раз операций объединения, умножения и итерации. Это утверждение носит название теоремы Клини — в честь доказавшего ее математика и логика С.Клини.

    Эта теорема отражает важные свойства разработки алгоритмов. Естественно, к примеру, задаться вопросом: почему нет других алгоритмических конструкций, кроме ветвлений, циклов и подпрограмм? Не хватает человеческой фантазии? Но что гласит теорема Клини? Легко видеть, что объединение двух автоматов фактически отвечает за построение программ, реализующих ветвление, — можно исполнять один фрагмент программы, а можно другой. Конечно, здесь еще нет собственно выбора, какой именно фрагмент будет исполняться, но сама программа собрана как бы из двух (или большего числа) частей. Что такое итерация языка? Каждому видно, что это модель циклического алгоритма, когда одна и та же программа повторяется несколько раз. Наконец, что такое произведение языков? Из самого построения соответствующего автомата видно, что второй автомат реализует многократное обращение к одному и тому же комплексу подпрограмм. Так что сама структура распознаваемого языка показывает, что ничего, кроме трех указанных конструкций, не может служить основой для создания языков, управляющих формальными исполнителями.

    Конечно, конечный автомат — это весьма простая, хотя и очень важная модель формального исполнителя. Она отличается от других моделей формальных исполнителей, например машины Тьюринга (см. лекцию 2, § 4), хотя бы уже тем, что не имеет памяти, — если мы видим, что автомат пришел после некоторой последовательности команд в некоторое состояние, то мы не можем ничего сказать о том, как это случилось. Мы не можем сохранить никакую информацию о работе автомата. Если же рассматривать автоматы с памятью (а это, кстати, гораздо ближе к любимым нами компьютерам), то их возможности значительно расширяются. И, соответственно, сильно расширяется класс языков, распознаваемых такими автоматами. Но математическая теория автоматов с памятью потребовала бы намного больше места и времени для своего изложения.

    Вопросы и задания

    2. Докажите, что из распознаваемости языка L следует распознаваемость языка .

    3. Пусть L — распознаваемый язык. Построим новый язык L # , переписав каждое слово языка L “задом наперед” (например, если языку L принадлежало слово abab, то языку L # будет принадлежать слово baba). Будет ли язык L # распознаваемым?

    4. Пусть А — некоторый конечный алфавит. Будет ли распознаваем язык, состоящий из всех слов-палиндромов над алфавитом А? (Палиндромом называется слово, которое слева направо читается так же, как справа налево.)

    § 6. Формальные грамматики

    Как правило, не все возможные слова, построенные из символов заданного алфавита А, входят в тот или иной язык. Известен, пожалуй, единственный случай, когда используемый человеком язык содержит множество всех слов над некоторым алфавитом, — это случай односимвольного алфавита. Такой язык использовался первобытным человеком для счета (единственный знак в алфавите — зарубка); используется он и сейчас при обучении детей счету: здесь знаком алфавита выступает счетная палочка. В технических системах этот язык используется для программного управления шаговыми двигателями — появление единицы означает поворот вала на некоторый фиксированный угол; слово из k единиц воспринимается этим автоматом как команда на последовательное выполнение k поворотов.

    Причины, почему не все возможные слова над данным алфавитом входят в язык, могут быть разные. Вот одна из них: любой естественный язык, как бы много слов в нем ни было, всегда конечен, в то время как общее количество слов бесконечно даже для алфавита, состоящего всего лишь из одного знака. Формализованному языку записи натуральных чисел в позиционной нумерации не принадлежат слова, у которых первый знак “0”. Связано это с желанием иметь взаимно-однозначное соответствие между множеством натуральных чисел и их имен — в противном случае пришлось бы договариваться, что, скажем, число 305 имеет еще и такие имена: 0305, 00305, 000305 и т.д. 4

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

    Как видно из этого рассмотрения, грамматика языка — это правила построения слов не только из символов алфавита, но и уже построенных к этому моменту слов. Иными словами, правила грамматики обычно являются рекурсивными (по-русски — возвратными: как только новое слово построено, оно само может служить “строительным материалом” для построения последующих слов). Отметим, что язык, содержащий бесконечное число слов, может быть построен над конечным алфавитом при помощи конечного числа правил только в том случае, если хотя бы одно из правил рекурсивно. Это обстоятельство учитывается при определении формальной грамматики. Формальной грамматикой Г(A, V, F) называется совокупность конечных множеств V и A, где A — подмножество V, и конечный набор F отображений вида w w’, где w — слово над V\A, а w’ — слово (быть может, пустое, т.е. не содержащее знаков алфавита; пустое слово мы будем обозначать символом “O”) над V. Множество V при этом называется словарем грамматики, множество A — ее терминальным алфавитом, а отображения, принадлежащие F, называются продуционными правилами. Будем говорить, что слово w‘ над алфавитом V непосредственно продуцируется из слова w в грамматике Г(A, V, F), если w и w’ представимы соответственно в виде xuy и xvy для подходящих x и y, а uv — некоторое правило из F. Слово w’ над V называется продуцируемым из слова w (мы будем записывать это как w w’), если существует конечная последовательность слов w0, w1, . wn, для которой w0 = w, wn = w’ и при i > 0 каждое wi непосредственно продуцируется из wi-1. Формальным языком, порожденным над W грамматикой Г(A, V, F), называется множество слов, продуцируемых из символов фиксированного подмножества W, содержащихся в словаре V, и состоящих только символы терминального алфавита A.

    К примеру, формальный язык, состоящий из всех слов над односимвольным алфавитом, скажем, x> (о таком языке речь шла выше), порождается над y> следующей грамматикой Г(A,V,F), где A = x>, V = x, y>, F = y xy; y O>. Здесь правило y xy рекурсивно и обеспечивает “производство” бесконечного числа слов, а правило y O обеспечивает наличие слов над терминальным алфавитом, т.е. непустоту языка.

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

    (NP) — группа подлежащего;

    (VP) — группа сказуемого;

    (AP) — группа определения;

    Терминальный алфавит состоит из слов английского языка. Мы, разумеется, для нашего примера возьмем не весь словарный запас английского языка, а ограничимся следующими пятнадцатью словами: A = — с пробелом (обозначенным как _)
    в конце каждого слова.

    А вот множество правил:

    Вот, например, как можно получить предложение “a_boy_stands_up_”:

    (S)(NP)(VP)(NP)(V)(T)(AP)(VP)(T)(N)(VP)(T)boy_(VP) a_boy_(VP) a_boy_stands_up_

    Аналогично можно получить предложение “a_good_boy_reads_a_book_” или предложение “the_ball_is_red_”. Все эти предложения не только грамматически правильны, но и осмысленны. Однако может получиться грамматически правильное, но бессмысленное предложение. Например, “a_ball_reads_early_”. Это наблюдение может показаться читателю той ложкой дегтя, которая портит бочку меда. Но отметим: в постановке задачи определения формальной грамматики никто ведь и не требовал, чтобы получающиеся лингвистические структуры были осмысливаемы.

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

    x wy или z v,

    где x, y, z — нетерминальные символы, зато w и v — слова (быть может, пустые) над терминальным алфавитом. Грамматики с такими продуционными правилами получили специальное название — праволинейные грамматики.

    Всякий компьютер — это, разумеется, некий конечный автомат (правда, обладающий еще и памятью, о чем мы выше упоминали), так что для управления им годятся соответствующие формальные языки (более широкие, чем просто для конечных автоматов). Фактически это и есть языки программирования. Но описывать язык программирования в указанной выше форме не так уж удобно. Поэтому имеются различные упрощения и сокращения формы записи продуционных правил. Одним из широко применяемых способов записи является так называемая “форма Бэкуса — Науэра”, или, по-другому, бэкусова нормальная форма (сокращенно БНФ). При записи БНФ используются следующие соглашения: определяемое понятие — нетерминальный символ — заключается в угловые скобки (например, ); символ “::=” читается словом “есть”; символ “|” читается словом “или”. Это означает, что в этом случае записано сразу несколько продуционных правил с одной и той же левой частью. Приведем пример определения понятия . (При определении понятия мы, по вполне понятным причинам, не станем перечислять все буквы алфавита.)

    Из этого определения видно, в частности, что всякий идентификатор обязательно начинается с буквы (ограничения на длину идентификатора мы не рассматриваем).

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

    Вопросы и задания

    1. По неформальному описанию (в тексте параграфа) грамматики языка записи натуральных чисел постройте формальную грамматику этого языка. Будет ли она праволинейной?

    2. а) Найдите еще какой-либо путь порождения фразы “a_boy_stands_up_”.

    б) Найдите какой-либо путь порождения фразы “the_ball_is_red_”.

    в) Найдите какой-либо путь порождения фразы “a_ball_reads_early_”.

    г) Какой из двух языков — русский или английский — представляется вам более формализованным и почему?

    3. а) Является ли грамматика описания понятия “идентификатор” праволинейной?

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

    4. Грамматика называется леволинейной, если все ее продуционные правила имеют вид

    x yw или z v,

    где x, y, z — нетерминальные символы, а w и v — слова (быть может, пустые) над терминальным алфавитом. Является ли язык, определенный леволинейной грамматикой, распознаваемым?

    5. Пусть задан терминальный алфавит А = a, b>; грамматика содержит три продуционных правила:
    x
    aby, y bx, x a.

    а) Какой язык порождает эта грамматика?

    б) Постройте автомат, распознающий этот язык.

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

    2 Как мы видим, алгоритмы для недетерминированных автоматов не только не обладают свойством детерминированности, но могут не обладать и свойством результативности. От этого, однако, они не перестают быть алгоритмами.

    3 Впрочем, мы не утверждаем, что этот тезис справедлив для всех ораторов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *