![]() |
|
|
![]()
|
|
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Приветствую!
Ищу САБЖ. Проект встал из-за того, что парсер, который я пишу использует недетерминированный автомат. Поскольку мне надо парсить текстовые файлы > 1 гига, необходимо перевести автомат в детерминированный (очень важна скорость). -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Однако: http://is.ifmo.ru/download/determ.pdf
Хорошо, когда знаешь несколько языков. Поиск по английскому гуглу не дал результатов. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
можно тезисно: хотя бы название у этого алгоритма есть?
|
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Я понятия не имею. Сам ищу что-нибудь съедобное...
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Брауэр В. Введение в теорию конечных автоматов. - М.: Радио и связь, 1987
вот в этой книжке есть глава "перевод НРС автоматов в РС" (НРС - недетерминированые РС) (сам эту главу не читал) |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Что-то я не понял задачу.
Недетерминированный автомат, насколько я понимаю, это просто-напросто параллельный компьютер, то есть, автомат, который движется сразу несколькими путями. Поскольку все современные компьютеры последовательны, то недетерминированный автомат и невозможно исполнить без преобразования в детерминированный. При "детерминизации" быстродействие не увеличивается, а уменьшается, так как переходы, которые недетерминированный автомат способен выполнить параллельно, детерминированный автомат будет выполнять последовательно. При этом может даже возникнуть "комбинаторный взрыв", то есть, может оказаться практически невозможно выполнить программу автомата на последовательном компьютере. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Мдя...
Недетерминированный автомат - это автомат с лямбда (епсилон) переходами и возможностью перехода из одного состояния в два разных по тем же самым терминальным символам. Вот и все. Да, по такому автомату надо идти паралельно. И да, по детерминированному автомату обход получается быстрее. Почему? Да потому что не надо идти по нескольким направлениям параллельно. Думаю так понятно. В теории может случиться так, что при детерминировании автомата получиться 2^н состояний. Но это теория. У меня автомат не такой страшный. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
мне кажется, что образно говоря, "детерминированный" - это "поиск в глубину", а "недетерминированный" - это "поиск в ширину". и в общем случае, мне кажется, "поиск в ширину" быстрее даст результат, чем N поисков в глубину. я не прав? а недостаток недетерминированного аппарата - не в скорости, как таковой, а в необходимости сохранять промежуточные состояния, где происходит выбор одного из нескольких вариантов обработки. или я что-то путаю? |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
системная функция seek?
а что нужно сделать поиск? или сам файл откоректировать? во многих языках программирование применяется детерминированный поиск, даже в awk (foo|foobar) Это сообщение отредактировал(а) gcc - 11.8.2009, 16:46 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
gcc, эй-эй, ты чего?
|
|||
|
||||
| Franka |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 18.9.2009 Репутация: нет Всего: нет |
Вы, по сути, ничего не путаете, но проблема в следующем: недетеринированный автомат может содержать очень большое количество переходов типа <q, aw_1, q_1>, <q,aw_2, q_2>. В итоге с момента каждого такого перехода прохождение автомата "расслаивается" на несколько вариантов. Вот тут память и полетит, потому что необходима уже действительно параллельная обработка. Объективно получается, что детерменированный автомат в худшем случае будет содержать действительно 2^n - 1 состояние. Базовый алгоритм жутко тормозной по этой причине. Просто в тот момент, когда выбираем подмножества, нужны определенные правила того, как их отсеивать. Я сейчас говорю скорее как математик. Более программистский подход представлю завтра, если это интересно и актуально. Только тогда хотелось бы знать, в какой степени алгоритм расписывать. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Franka,
В понятной А лучше сразу на каком-нибудь языке программирования. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| AndryG |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 10.9.2009 Репутация: нет Всего: нет |
А можно поинтересоваться, с чем вообще автомат работает?
И насколько он у Вас недетерминированный? Может просто его тут переведут в КА да и алгоритм не понадобится А алгоритм приведения НКА в КА хорошо описан в "красном драконе". Не помню алгоритма, но помню что там описан хорошо |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
автомат - несколько сот состояний.
Не пошлете? -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| AndryG |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 10.9.2009 Репутация: нет Всего: нет |
http://www.infanata.org/computers/prog/114...ekhnologii.html
![]() Добавлено через 1 минуту и 21 секунду Что же Вы такое разбираете ?! Может стоит разбить на несколько более простых автоматов? Задача проще смотрится по частям. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |