![]() |
|
|
![]()
|
|
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 2 Всего: 17 |
Каким образом они это делают?
Маткад например. В нём есть функция (или оператор) simplify. Применяешь его и иногда ему удается действительно упростить выражение. Правда редко. Так вот мне интересно, какие методы они используют для этого. -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Я не знаю, какие методы именно в маткаде используются, но вообще в теории примерно так (вроде недавно была похожая тема, я как раз тогда какую-то книжку проглядел по диагонали): строится дерево разбора выражения, ну и сначала, понятно, к нему можно применить некоторые упрощения, основанные на стандартных арифметических правилах (удаление константных подвыражений, типа 2+2), а вот дальше уже начинается недетерминированное шаманство - пытаемся, например, раскрыть скобку, и применить к получившемуся выражению рекурсивно этот же алгоритм, или там как-нибудь обнаруживаем сумму квадратов a^2+2ab+b^2 и сворачиваем её, и т.д.
Вообще, насколько я понял, мало-мальски чёткого алгоритма здесь не существует. Может, конечно, я чересчур "диагонально" проглядел книгу |
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 2 Всего: 17 |
Про приведение подобных более-менее как-то понятно. Меня интересуют более сложные случаи.
Например для тригонометрических наворотов. Типа sin(x)/cos(x) -> tg(x). Не помнишь как книжка называлась? -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
По запросу "simplification of algebraic expressions algorithms" кое-что находится (на acm'е и springer'е немало), вот например какая-то обзорная статья:
http://www.cecm.sfu.ca/CAG/Projects/nsercOPG04.pdf А книжка называлась - что-то про multiterm rewriting. |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Просматривал сегодня книгу "Символьный C++" (Тан, Стиб, Харди), в ней несколько страниц уделено упрощению выражений (стр. 283-286), можешь посмотреть. Там тоже в принципе элементарный алгоритм, но утверждают, что на практике упрощает хорошо.
|
|||
|
||||
| ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 2 Всего: 17 |
Спасибо за информацию. Если найду книгу, обязательно гляну. Даже название уже заинтриговало.
-------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
| Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
Я думаю, что перебором: применяются поочерёдно различные правила, по какой-то шкале оценивается сложность выражения и она минимизируется.
|
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 2 Всего: 49 |
Есть такая (уже довольно старая) книжка: Ж.-Л.Лорьер, "Системы искусственного интеллекта"), ее легко найти. Почитайте, там очень неплохо изложены основные принципы работы подобных систем.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |