13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
1 | |
Алгоритм нахождения минимального конечного автомата13.08.2011, 02:13. Показов 13713. Ответов 21
Метки нет (Все метки)
данный алгоритм уже давно известен, а мне нужен его код на с++. Не хотелось бы изобретать велосипед и запариваться с написанием своего кода. Поэтому если кто то знает где взять исходник, будте добры скинуть ссылочку!!! Буду очень благодарен!!!
0
|
13.08.2011, 02:13 | |
Ответы с готовыми решениями:
21
Построение конечного недетерминированного автомата Реализация работы конечного автомата Создать программу конечного автомата Построение конечного автомата по регулярной грамматике |
Модератор
8736 / 3361 / 244
Регистрация: 25.10.2010
Сообщений: 13,601
|
|
13.08.2011, 03:30 | 2 |
Как понять минимального конечного автомата? Можно поподробней
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
13.08.2011, 09:17 | 3 |
Persk1976, Например, при построении автомата для распознавания и преобразования дробных чисел получается обычно 7-8-9 состояний. Алгоритм минимизации позволяет сократить это количество.
Алгоритм зависит от представления конечного автомата. Я лично не видел в сети текстов программ.
0
|
13.08.2011, 12:36 | 4 |
да есть они есть. Просто автомат автомату рознь и какая конкретно у тебя задача, как бы не понятно.
если нужен сам принцип то смотри книгу Мозговой М. В. Классика программирования: алгоритмы, языки, автоматы, компиляторы. Практический подход страница 45. Там есть исходник на С#, но простой, переписать не составит труда.
2
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
13.08.2011, 15:25 [ТС] | 5 |
В моем случае задача немного большая чем алгоритм нахождения минимального конечного автомата. Но этот алгоритм будет использоваться в 1-ой части моей задачки. Мне нужен пример, для простой минимизации графа(поиск эквивалентных состояний и потом склейка).
0
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
13.08.2011, 22:51 [ТС] | 6 |
Мне бы желательно етот алгоритм на С++ увидеть, так как в С# я нуль без палочки. Есть предложения?
0
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
14.08.2011, 20:08 [ТС] | 7 |
Вопрос остается открытым...
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
16.08.2011, 21:45 | 8 | |||||
Сообщение было отмечено как решение
Решение
Вот так можно:
7
|
ValeryLaptev
|
16.08.2011, 23:31
#9
|
Не по теме: Я хренею, дорогие товарищи! Насколько развито иждивенчество среди начинающих программеров! МистерХ проделал нехилую работу (либо сам все писал, либо искал в инете), а топикстартер в это время ЖДАЛ результатов! Вместо того, чтобы САМОМУ проделать всю эту работу. Найти первоисточники, почитать литературу. Разобрать программу на C#, на которую ему указали... Как же народ работать собирается????
3
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
17.08.2011, 16:56 [ТС] | 10 |
Не нужно писать что я иждевенец!!! Я давно перевел эту программу с С# на С++ и знаете она работает не так как мне нужно. И на данный момент я пишу собственную реализацию. Mr.X спасибо за помощь, а звездоболов прошу не писать мне всякое г*вно, тем более без основательно...
0
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
17.08.2011, 17:15 [ТС] | 11 |
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
17.08.2011, 17:57 | 12 |
Во-первых, поаккуратней с выражениями!
Между стартовым сообщением и этим - нет ни одного конструктивного сообщения. Ни собственных текстов программ. Напротив, только просьбы о помощи. Вот теперь, когда вы покажете собственный вариант, будет предмет для разговора.
0
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
17.08.2011, 19:03 [ТС] | 13 |
Алгаритм показать не могу, не хочу рисковать с антиплагиатом. В двух словах, алгаритм таков. Входным параметром служит граф заданный в виде матрицы(напр G)(столбцы - вершины, строки - метки дуг), а так же массив с перечнем всех вершин(напр A).
Далее в цикле просматривается массив G и первая пара элементов (с учетом того что автомат будет двухленточным) будет присваиваться заранее заданным вершинам, а далее опять просматриваем эту же матрицу, начиная со строки i+1 дабы строка не сравнивалась сама с собой. Далее в случае совпадения строк, вершина записывается в массив(напр Y - массив для хранения вершин с совпадающими выходами). Далее динамически создается массив(В) и в него копируются элементы массива А, за исключением тех элементов которые совпадали, эти элементы в новом массиве просто обнуляются. Те элементы которые совпали копируются уже в следующую строку динамически созданного массива. Далеесоздается еще один динамический массив (например С), и в него копируются элементы массива В, после чего массив В удаляется.Затем все повторяется по новому и когда опять пары были найдены динамичски создается массив В и в него копируются элементы массива С, а с последующей строки записываются совпавшие вершины. Далее в каждой строке массива С остается только 1-ая вершина, и исходящие дуги из удаленных вершин удаляются а входящие в удаленные вершины теперь входят в оставшиеся вершины. Вот так в 2-ух словах. Код правда не могу скинуть, поймите, антиплагиат!!!
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
17.08.2011, 19:25 | 14 |
gr_8_zizu, непонятно несколько вещей:
1. Ваш алгоритм никаким образом не напоминает алгоритм получения минимального автомата. Я, во всяком случае, узнать его никак не могу. Может вы подробнее задачу распишете? Чтобы стало понятнее, что нужно делать. 2. Какой антиплагиат, если есть конкретная ссылка на автора идеи-алгоритма? Так и пишется: алгоритм рассмотрен в такой-то книге, таким-то автором. Его реализация - на C#. Моя реализация - на С++. Сделаны такие-то модификации, требуемые по задаче...
0
|
13 / 8 / 3
Регистрация: 07.01.2011
Сообщений: 149
|
|
17.08.2011, 21:39 [ТС] | 15 |
Антиплагиет - система которая проверяет дипломные или всяческие другие работы если требуется, т.е. проверка на "самопись" грубоговоря. Алгоритм я более менее расписал для выделения классов эквивалентности, дальнейшая часть - склейка, довольно просто, поэтому описывать не стал. А вообще мне ето нужно для многоленточных автоматов, а данных алгоритм будет являтья только частью чего то большего.
0
|
Евгений М.
|
18.08.2011, 06:05
#16
|
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||||||||||||
18.08.2011, 14:39 | 17 | |||||||||||||||
Ну, если задачка интересная, то почему бы ее и не порешать. Я от программы Мозгового отталкивался, но изменил кое-что.
Кстати, в моей предыдущей программе обращение через итератор к элементам сложных мэпов, состоящих из пар, выглядели малопонятно, например обращение к символу правила выглядело как
1
|
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 4
|
||||||
15.01.2015, 19:25 | 18 | |||||
Извините, но нельзя ли переделать эту программу под такие исходные. на вход файл в формате kiss2 с данными
чтото типа
помогите((
0
|
0 / 0 / 0
Регистрация: 15.01.2015
Сообщений: 4
|
|
17.01.2015, 11:13 | 19 |
все разобралась.
кроме одного. не понимаю что такое допускающие состояния автомата. зачем они нужны? это типа множество F, или что это.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
17.01.2015, 11:22 | 20 |
Ну да. Просто в разных источниках немного по-разному называется.
Цитата из Википедии: Если это состояние является заключительным, то говорят, что автомат допустил цепочку x.
1
|
17.01.2015, 11:22 | |
17.01.2015, 11:22 | |
Помогаю со студенческими работами здесь
20
Реализовать поиск подстрок с помощью недетерминированного конечного автомата Удаление пробелов перед знаками препинания (нарисовать диаграмму конечного автомата) Конечный автомат(Разработать граф переходов конечного автомата для выделения в тексте исходной программы на С++ комментариев) Функция для нахождения минимального элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |