Форум программистов, компьютерный форум, киберфорум
Теория автоматов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 5

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

11.06.2017, 13:01. Показов 6644. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Построить конечный автомат (КА–распознаватель) для распознания регулярного множества цепочек трехсимвольного алфавита в соответствии с описанием:

Содержит два символов “а”, заканчивается на “ b ”, а символы “а” и "с " не стоят рядом.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2017, 13:01
Ответы с готовыми решениями:

Построить конечный автомат, распознающий среди цепочек из нулей и единиц такие, где на каждом третьем месте 0
Доброго времени суток! Помогите, пожалуйста, с решением задачи, а то совсем никак -_- Постройте конечный автомат, распознающий среди...

Построить детерминированный автомат для регулярного выражения
Построить детерминированный автомат для регулярного выражения ((c+a)b*)* Я построил этот автомат какие состояния будут финальными и почему?...

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

4
477 / 280 / 90
Регистрация: 15.11.2013
Сообщений: 530
13.06.2017, 11:33
В чём проблема?
1
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 5
13.06.2017, 11:38  [ТС]
AdmiralHood, Я сам заочник, ни капли не знаю о чем идёт речь. Скоро экзамен, нужна срочная помощь.
0
477 / 280 / 90
Регистрация: 15.11.2013
Сообщений: 530
14.06.2017, 03:47
А здесь ничего не надо знать. Здесь чистая незамутнённая логика. Формулируете, что вам нужно. А нужно, чтобы в строчке два раза встретились буквы a, причём ни перед, ни после них не стояла буква c, и строчка кончалась на b.

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

Здесь самое главное понять, как автомат запоминает информацию о предыдущих событиях. Вот представьте себе, что у человека специфическое расстройство памяти. Он не помнит, что было вчера. У него есть дом, в доме 100 комнат, и каждая комната что-то означает. Если, например, он утром проснулся в комнате № 23, это значит, что надо позвонить родителям. Если в комнате 56, значит сегодня будет корпоратив. А если в комнате 82, значит и то, и другое. Точно так же автомат. Комната – это состояние. Автомат не помнит, что было раньше. Вся его память заключается в том, в каком состоянии он в данный момент находится. Ваша задача придумать минимальный набор состояний, которые покрывают все существенные для решения вашей задачи ситуации.

Начинаете строить автомат с исходного состояния, которое я обозначу 0. Это состояние означает «не пришло ещё ни одной буквы а, и предыдущая буква была не с». Почему нас волнуют именно буквы а и с? Буква а вообще имеет глобальное значение. Нам нужно их пересчитать и убедиться, что их ровно две. Если больше или меньше, значит строка неправильная. Буква с нас интересует постольку-поскольку за ней не должна следовать буква а, иначе строка тоже будет неправильной.

Если автомат в состоянии 0 получает букву а, он переходит в состояние 1. Оно означает «пришла первая буква а, и перед ней не было буквы с». По букве с автомат переходит из состояния 0 в состояние 2. Оно означает «не было ещё ни одной буквы а, а предыдущая буква была с».

Далее, если в состоянии 1 пришла буква c, то это ошибка, автомат должен перейти в какое-то состояние, которое будет означать ошибку. Из этого состояния автомат не должен выходить и по любой букве должен возвращаться в него. Это состояние я условно обозначу 99. В состояние 99 автомат также должен перейти из состояния 2 по букве а.

Название: 01.png
Просмотров: 208

Размер: 6.3 Кб

Желательно, чтобы из каждого состояния по любой букве можно было бы куда-то перейти. Поэтому в каждом состоянии должен быть определён переход по любой букве. Что будет, если в состоянии 1 придёт буква b? Автомат должен перейти в состояние 3, которое означает «была уже одна буква а, и предыдущая буква была не с».

Что будет, если в состоянии 1 придёт буква a? Автомат должен перейти в состояние 4, которое означает «было уже две буквы а, и предыдущая буква была не с».

Что будет, если в состоянии 2 придёт буква b? Нужно вернуться в состояние 0. Что будет, если в состоянии 2 придёт буква с? Нужно остаться в состоянии 2.

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


И так перебираете каждое состояние по каждой букве. Должно получиться что-то типа

Построить конечный автомат для распознания регулярного множества цепочек трехсимвольного алфавита
1
0 / 0 / 0
Регистрация: 11.06.2017
Сообщений: 5
14.06.2017, 09:52  [ТС]
AdmiralHood, Огромное тебе спасибо! ты столько сделал! можно с тобой связаться лично в Вк или по почте? Есть ещё один вопрос. Напиши мне сюда:del
 Комментарий модератора 

Правила форума
4.6. Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
4.12. Не стоит просить или предлагать выслать ответ в icq, e-mail и другие средства общения. Эта просьба все равно не будет выполнена, а сообщение будет отредактировано модератором.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2017, 09:52
Помогаю со студенческими работами здесь

Построить конечный автомат
Здравствуйте, пытаюсь построить конечный автрмат, который бы распознавал только те последовательности, которые имеют парное число букв а и...

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

Построить детерминированный конечный автомат
Построить детерминированный конечный автомат, распознающий язык L над алфавитом {a,b}, состоящий из цепочек следующего вида: если цепочка...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер