Михаил Денисенко, Нигма
Закончил факультет вычислительной математики и кибернетики МГУ. Завершает работу над диссертацией, посвященной математическим аспектам информационной безопасности. Занимался исследованиями в области обработки видеопоследовательностей и компьютерной безопасности в компании Intel. С 2009 года является старшим разработчиком математического сервиса в компании Nigma.ru. С 2011 года — системный архитектор поисковой системы ITim.vn.
Тема доклада
В поисках математики.
Тезисы
Nigma-Математика – это сервис, с помощью которого пользователи могут решать различные математические задачи (упрощать выражения, решать уравнения, системы уравнений и т. д.), вводя их прямо в строку поиска в виде обычного текста. Система распознает более тысячи физических, математических констант и единиц измерения, что позволяет пользователям производить операции с различными величинами (в том числе решать уравнения) и получать ответ в указанных единицах измерения. Помимо уравнений система решает все задачи, характерные для калькуляторов поисковых систем и конвертеров валют. В докладе будет описана общая схема функционирования сервиса, базовые и новые алгоритмы системы символьных вычислений (алгоритмы решения уравнений и неравенств, алгоритм учета области допустимых значений, алгоритм исследования функций и т.п.). Также будет рассказано об ускорении работы сервиса, распределении нагрузки на систему, распознавании математичности запроса, преобразовании валют и метрических величинах.
1. В поисках математики
Денисенко Михаил, Нигма.РФ
YaC, Москва, 19 сентября 2011 года 1
2. Статистика
использования
50 000 запросов в день
источники запросов:
- сайт нигма.рф
- приложение по
математике
для сайта vkontakte.ru
(~625 000 пользователей)
2
4. Пользовательская
аудитория
школьники
студенты младших курсов
Возможности системы:
математические рассчеты,
исследование функций,
упрощение выражений,
преобразование метрических
величин,
конвертация валют, ... –
всего около 30 различных типов
задач
4
5. Краткая архитектура системы
Пользовательский запрос
Front-end.
Проверка на математичность
Система символьных
вычислений.
Обработка символьного
представления, генерация
Back-end. ответа и шагов решения.
- Замена констант, единиц
измерения.
- Текстовая запись числовых
выражений.
- Нормализция запроса.
- Генерация вариантов
разбора.
- Преобразование в синтаксис
системы символьных Отрисовка формул в формате TeX
вычислений 5
6. Проверка на
математичность
Отбраковка запросов,
похожих на математику.
Например, телефонные Химический тест на
номера, названия математичность
моделей различной
техники
Выделение констант,
метрических величин,
математических
конструкций
6
7. Цепочка преобразований запроса
Исходный запрос
Обработка единиц измерения
Front-end
Замена буквенного ввода на символьно-числовой
Замена всех оставшихся объектов на
математические эквиваленты
Обработка нормализатором: преобразование к
строгому синтаксису системы символьных
вычислений, разрешение неоднозначности,
разбиение на варианты
Back-end
Выделение формулы и управляющих фраз
Угадывание задачи по типу выражения
Запрос в систему символьных вычислений
Дополнительные ответы и шаги решения
Удаление дублирующихся ответов, TeX
7
11. Введение в символьные
вычисления
«Недостойно одаренному человеку тратить, подобно рабу, часы на
вычисления, которые безусловно можно было бы доверить любому лицу, если
бы при этом применить машину.»
Готфрид Вильгельм фон Лейбниц
11
12. Символьные вычисления и
численные расчеты
Символьные вычисления –
преобразования и работа с
математическими равенствами и
формулами, как с
последовательностью символов
Численные методы оперируют
приближенными численными
значениями, стоящими за
математическими выражениями,
т.е. числами (целыми и с
плавающей запятой)
12
13. Компьютерная алгебра
уцкауц
Символьные вычисления или
компьютерная алгебра – научная
дисциплина, ставящая целью
разработку алгоритмов и программного
обеспечения для решения задач,
записанных с помощью математических
выражений и формул (аналитическая
запись), на компьютере.
Недостатки систем символьных
вычислений:
- отсутствие компилятора в машинный код;
- неудобная стыковка с другими языками
программирования;
- неудобная обработка ряда типов, в том
числе классов ООП
13
14. MACSYMA
уцкауц
MACSYMA
(Project MAC’s SYmbolic Manipulator),
разрабатывалась в MIT с 1968 по 1982 годы.
Project MAC (Project on Mathematics and
Computation) финансировался Министерством
энергетики США (DOE) и другими
государственными организациями.
14
15. Maxima 1
Maxima произошла от системы MACSYMA.
Первоначальный вариант – DOE MACSYMA, 1982 год.
Maxima — система символьных вычислений:
- дифференцирование;
- интегрирование;
- разложение в ряд, преобразование Лапласа;
- обыкновенные дифференциальные уравнения;
- СЛАУ;
- многочлены, множества, списки, векторы, матрицы,...
15
15
16. Maxima 2
Проблемы в решателе уравнений.
1. Потеря решений.
(input) solve(sin(x)=0,x);
(output) [x=0]
2. Не учитывается область определения и значения
функций.
(input) solve(x*log(x)=0,x);
(output) [x=0, x=1]
3. Набор алгоритмов решения недостаточно полон.
(input) solve(x+sqrt(x)=2,x);
(output) [x=2-sqrt(x)]
16
17. Maxima 3
Жй
Проверка ложных решений.
Для уравнения
Нужно проверить, является ли решением следующее число:
17
18. Maxima 4
Полиномизация
Попробуем решить уравнение
Сделаем замену
В результате получаем систему:
Путем проверки, отбраковываются ложные решения.
Получается ответ
В Maxima есть алгоритмы для решения полиномиальных систем.
18
19. Maxima 5
Приведение к полиномиальному виду различных уравнений
Рассмотрим уравнение:
Делаем подстановку и эквивалентное преобразование :
В результате получаем уравнение, которое содержит все корни исходного:
19
21. Maxima 7
Общая схема решения многих типов уравнений:
Уравнение Полином
Решение +
проверка корней
Проблема в системе упрощения:
различная аналитическая запись одних и тех решений,
21
21
необходимо удаление дубликатов корней.
23. Пример
Периодические решения
Другие примеры и описание возможностей сервиса
можно посмотреть по ссылке
http://info.nigma.ru/index.php/nigma-matematika.html
23
23
24. Интересные доказательства
(input) b+a=c;
(output) b+a=c
(input) expand(%*(b+a));
(output) b2 +2 ab + a2 = bc + ac
(input) -a*c-b^2-a*b+%;
(output) −ac + ab + a2= bc − b2− ab
(input) map(factor,%);
(output) −a (c − b − a)= b (c − b − a)
(input) %/(c-b-a);
(output) −a = b
(input) a+%;
(output) 0= b + a 24
24
25. Доказательство log(-1)=0
(input) expand((y-1)^2)=(y-1)^2;
(output) y^2− 2*y +1=(y − 1)^2
(input) map(log,%);
(output) log(y^2− 2*y +1)=2*log(y − 1)
(input) subst(x,log(y-1),%);
(output) log(y^2- 2*y+1)=2*x
(input) subst(0,y,%);
(output) 0=2*x,
где x – это log(y-1) при y=0
25
25
26. Выводы
- Разработан универсальный сервис для проведения
точных математических вычислений в поисковой системе.
- Позволяет решать множество математических проблем
с шагами решения, поддерживает работу с метрическими
величинами, конвертирует валюты, распознает и
пытается угадать различные варианты запросов.
26
27. Перспективы развития
- точность определения математичности запроса;
- расширение типов задач;
- шаги решения для всех видов математических
запросов;
- улучшение алгоритмов решения уравнений,
разработка новых обобщенных алгоритмов;
- возможность легкого и удобного ввода
математических конструкций произвольной сложности;
- оптимизация производительности ядра системы
символьных вычислений.
27
27