|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.09.2012, 19:46 | #1 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
Обработка и вычисление математического выражения
Доброе время суток.
Занимаюсь реализацией генетических алгоритмов оптимизации функций. Возникла следующая проблема: в связи с большой размерностью решаемых задач необходимо в огромных количествах выполнять подсчет значения функции в точках. Функция задается пользователем как строка, которая разбивается и переводится в постфиксную форму, по которой потом строится дерево выражения. Подсчитал, что очень много времени уходит на эти операции, порой даже минут 40. Собственно, возник следующий вопрос: есть ли алгоритмы подсчета значения выражения, заданного в виде строки, который бы работал быстрее, чем описанный? |
18.09.2012, 20:09 | #2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Что у Вас за выражение такое, разбор которого требует 40-ка минут? Вы пытаетесь одной формулой описать Вселенную?
Дерево выражения? Можно не строить, по-крайней мере для математических выражений можно пытаться вычислить непосредственно через рекурсию (в естественном виде без всяких там постфиксных форм). Не могу ничего сказать по поводу эффективности - никогда не проводил такого сравнения. Вообще условие описано очень мутно, можно сказать, что задача не описана вообще. Приведите примеры выражений которые Вы разбираете по 40 минут.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 18.09.2012 в 20:11. |
18.09.2012, 20:12 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А что это за функция такая что 40 мин компилируется?
Проекты из тысяч строк и то компиляторы за секунды проводят, а у тебя более получаса...
I'm learning to live...
|
18.09.2012, 20:22 | #4 | |
Форумчанин
Регистрация: 17.12.2008
Сообщений: 250
|
Цитата:
|
|
18.09.2012, 21:39 | #5 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
Извиняюсь, немного некорректно описал проблему: 40 минут идет не на построение дерева выражений - это происходит почти моментально, простые задачи долго обсчитываются. Проблема в долгом подсчете самого выражения по дереву.
Последний раз редактировалось wol4aravio; 18.09.2012 в 21:41. |
18.09.2012, 22:03 | #6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Покажите образец выражения
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
18.09.2012, 22:25 | #7 |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
|
19.09.2012, 00:10 | #8 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
19.09.2012, 07:19 | #9 | |
Пользователь
Регистрация: 27.04.2012
Сообщений: 18
|
Цитата:
|
|
19.09.2012, 10:50 | #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 |