Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
technicalz
0 / 2 / 0
Регистрация: 09.09.2016
Сообщений: 8
1

Моделирование ДКА

24.03.2018, 13:14. Просмотров 709. Ответов 1
Метки нет (Все метки)

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

Примеры:
00000 - принять
01000 - не принять (нечетное число "1")
00011 - не принять (две "1" подряд)
10100 - принять
10110 - не принять (нечетное число "1" и две "11" подряд)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2018, 13:14
Ответы с готовыми решениями:

ДКА
Построить дка распознающий числа в двоичной системе которые делятся на 3

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

Минимизация ДКА
Привет всем. Впервые минимизирую ДКА и прошу меня проверить, верно ли я все сделал. Дан...

Построить ДКА
Построить ДКА, допустимым для которого является язык над алфавитом {0,1}, состоящий из множества...

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

1
OlyaClimova
15 / 15 / 12
Регистрация: 27.02.2018
Сообщений: 44
24.03.2018, 13:54 2
Лучший ответ Сообщение было отмечено technicalz как решение

Решение

technicalz,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <string>
using namespace std;
 
bool analyze(string sequence) {
    enum StateType { ENTRY, ZERO, ONE, END_OF_LINE, EXIT };
    
    int oneNumber = 0,
        currentSymbol = 0;
    bool result = true;
    StateType state = ENTRY;
    
    while (state != EXIT) {
        switch (state) {
            case ENTRY:
                if (currentSymbol >= sequence.length()) {
                    state = END_OF_LINE;
                } else if (sequence[currentSymbol] == '0') {
                    state = ZERO;
                    currentSymbol++;
                } else if (sequence[currentSymbol] == '1') {
                    state = ONE;
                    oneNumber++;
                    currentSymbol++;
                } else {
                    result = false;
                    state = EXIT;
                }
                break;
            case ZERO:
                if (currentSymbol >= sequence.length()) {
                    state = END_OF_LINE;
                } else if (sequence[currentSymbol] == '0') {
                    state = ZERO;
                    currentSymbol++;
                } else if (sequence[currentSymbol] == '1') {
                    state = ONE;
                    oneNumber++;
                    currentSymbol++;
                } else {
                    result = false;
                    state = EXIT;
                }
                break;
            case ONE:
                if (currentSymbol >= sequence.length()) {
                    state = END_OF_LINE;
                } else if (sequence[currentSymbol] == '0') {
                    state = ZERO;
                    currentSymbol++;
                } else {
                    result = false;
                    state = EXIT;
                }
                break;
            case END_OF_LINE:
                if (oneNumber % 2 == 1) {
                    result = false;
                }
                state = EXIT;
                break;
        }
    }
    return result;
}
 
int main() {
    string input;
    cout << "> ";
    cin >> input;
    if (analyze(input) == true)
        cout << "OK\n";
    else
        cout << "NOT OK\n";
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2018, 13:54

Регулярное выраженив в ДКА
Добрый день. В данный момент у меня реализован уже перевод регулярного выражения в ДКА. Но есть...

Представление ДКА в коде
Здравствуйте! Подскажите пожалуйста, как можно представить детерминированный конечный автомат в...

Регулярное выражение в НКА и ДКА
Доброго времени суток! У меня проблема с построением НКА, и преобразованием его в ДКА из...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru