![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
![]()
Доброе время суток.
Занимаюсь реализацией генетических алгоритмов оптимизации функций. Возникла следующая проблема: в связи с большой размерностью решаемых задач необходимо в огромных количествах выполнять подсчет значения функции в точках. Функция задается пользователем как строка, которая разбивается и переводится в постфиксную форму, по которой потом строится дерево выражения. Подсчитал, что очень много времени уходит на эти операции, порой даже минут 40. Собственно, возник следующий вопрос: есть ли алгоритмы подсчета значения выражения, заданного в виде строки, который бы работал быстрее, чем описанный? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Что у Вас за выражение такое, разбор которого требует 40-ка минут? Вы пытаетесь одной формулой описать Вселенную?
Дерево выражения? Можно не строить, по-крайней мере для математических выражений можно пытаться вычислить непосредственно через рекурсию (в естественном виде без всяких там постфиксных форм). Не могу ничего сказать по поводу эффективности - никогда не проводил такого сравнения. Вообще условие описано очень мутно, можно сказать, что задача не описана вообще. Приведите примеры выражений которые Вы разбираете по 40 минут.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 18.09.2012 в 20:11. |
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А что это за функция такая что 40 мин компилируется?
Проекты из тысяч строк и то компиляторы за секунды проводят, а у тебя более получаса...
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 17.12.2008
Сообщений: 250
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
![]()
Извиняюсь, немного некорректно описал проблему: 40 минут идет не на построение дерева выражений - это происходит почти моментально, простые задачи долго обсчитываются. Проблема в долгом подсчете самого выражения по дереву.
Последний раз редактировалось wol4aravio; 18.09.2012 в 21:41. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Покажите образец выражения
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
![]() |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Обратная польская нотация не понравилась? А вообще, скачайте какой-нибудь математический парсер с возможностью компиляции выражений, и вперёд. Если просто пипец как нужна скорость, есть OpenCL/CUDA или шейдеры, но думаю вам это не нужно.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Решение математического выражения | DeadWarlock | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 18.09.2012 18:23 |
вычисление математического выражения | Gunina | Помощь студентам | 4 | 12.09.2012 17:34 |
чтение из файла математического выражения | Student1992 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 14.11.2011 02:40 |
решение математического выражения | akum905 | Общие вопросы C/C++ | 0 | 12.11.2011 00:04 |
Cоздание дерева математического выражения | CilCatblack | Общие вопросы C/C++ | 3 | 20.04.2009 14:22 |