Pull to refresh

Математическая поисковая система Uniquation

Self Promo
Mы только что открыли α-тестирование проекта Uniquation. Это математическая поисковая система, которая ищет решения среди уравнений, равенств и прочих математических объектов, размещенных в интернете. На текущем этапе развития её можно мыслить как развивающуюся CAS (wiki). Помимо этого поста про неё можно прочитать в нашей презентации.

image




Мы (shai_xylyd, greenman, konfuze) – небольшая команда авантюристов, которым интересно создавать и исследовать что-то новое. В результате нашего сотрудничества родился и продолжает совершенствоваться этот проект. Прежде всего нами движет интерес. Интерес от исследования своих способностей, новых инструментов, и того, что мы создаем.

Возможности


В текущей версии поиск идет по формулам из википедии и eqworld, но мы рассматриваем все математические сайты интернета, как потенциальную базу знаний, и развитие технологий поиска позволит создать систему компьютерной алгебры, которая в сфере символьных вычислений будет лучше существующих.

Сейчас поддерживаются простые арифметические выражения, некоторые функции (sin, cos, ln, факториал…), неопределенные интегралы, суммы и уравнения в частных производных. Не полностью поддерживаются обыкновенные дифференциальные уравнения, пределы и комбинаторика.

История проекта


Идея создать математический поиск пришла мне в голову, когда я пытался посчитать интеграл Ито некоторого выражения и результат не совпадал с ответом упражнения. Тогда я захотел найти решение в интернете, чтобы сравнить решения, но, к сожалению, не смог, так как нужного поисковика тогда не существовало. Текущая альфа пока не умеет искать по стохастическим уравнениям, но она развивается и уже может быть полезна при решении небольшого класса задач.

Разработка движка началась в свободное от работы и учебы время осенью 2008-ого года. Изначально код был написан в императивном стиле, но затем, после более полного анализа предметной области, было принято решение о переходе на функциональную парадигму, в итоге где-то 10 февраля весь код был переписан, что позволило сократить объем исходного кода почти вдвое и ускорить процесс разработки. Примерно в это время мой друг предложил участвовать в конкурсе Imagine Cup, и, как следствие, работа стала более интенсивной. Так как помимо движка нужно было работать над дизайном сайтом, я устроил спам-рассылку по питерским студентам, работающим web-дизайнерами и зарегистрированными на хабре. Такой метод оказался очень плодотворен, почти все, кому я посылал сообщения, ответили; так в команду попал konfuze. 12 января 2009 движок впервые успешно произвел поиск.

17 марта 2009 состоялось выступление на северо-западном этапе конкурса Imagine Cup, где наша команда заняла второе место. О выступлении можно почитать в Деловом Петербугре. После конкурса мы сконцентрировали силы на исправлении тех ошибок, которые были обнаружены во время подготовки к Imagine Cup. Так же участие в конкурсе дало нам уверенность в том, что идея жизнеспособна.

11 апреля 2009 Uniquation был представлен в качестве примера проекта написанного с применением аспектно-ориентированного программирования на Coffee & Code в питере.

С 24 апреля движок стал мультиплатформенным, и далее все версии тестируются как в windows, так и в linux.

Летом к разработке присоединился мой друг greenman для создания нового проекта и интеграции в него технологий Uniquation.

5-6 сентября 2009 проект участвовал в hackday. Мы надеялись найти специалиста по JS, который помог бы нам с созданием графического редактора для ввода формул. К сожалению, он не был найден, и green переключился на адаптацию Java-апплета DrugMath к нашим целям.

2 октября 2009 произошло одно из самых значительных изменений в проекте: был доработан алгоритм нормализации формул; именно он позволяет искать формулы вне зависимости от переменных, которые в них использованы, и вне зависимости от порядка аргументов в коммутативных операциях. Эта задача относится к классу NP-полных, поэтому быстрого алгоритма для всех возможных формул теоретически быть не может, но наш алгоритм работает достаточно быстро на тех формулах, которые имеет смысл искать.

В конце октября произошла заморозка разработки новых возможностей и все силы были отданы на подготовку этой α-версии.

Архитектура


В основе поиска лежит простая идея — привести формулу к стандартному виду и найти её в базе. То, что мы не отступали от неё ни на шаг, позволило нам написать код, который легко поддерживать, и добиться того, что базу данных мы используем только на чтение (за исключением логов). Что в свою очередь не вызвало проблем при переносе приложения в облако от amazon.

Open source


Мы любим open source, но, хотя сам по себе проект uniquation является некоммерческим, мы не можем открыть его исходники, так как планируем запустить стартап на основе технологий, которые в нем используем. Но мы наедимся, что мы приносим пользу сообществу, так как совершенствуем открытый редактор формул.

Зачем мы пиаримся?


Очень хотелось бы получить обратную связь. Например, если вы думаете, что сервис может быть вам полезен, то напишите, что вам в нем не хватает сейчас. У нас множество идей как можно улучшить поиск, но всегда приятней работать, зная что есть кто-то, кому это нужно. Это могут быть совершенно разные пожелания, например, «стоит объединять одинаковые по смыслу формулы в выдаче», или «улучшить поддержку пределов | многомерных интегралов | ODE | ...», или «создать сайт, где пользователи могут делиться решениями и их обсуждать», или «индексировать dxdy.ru».
Tags:
Hubs:
Total votes 100: ↑85 and ↓15 +70
Views 1.7K
Comments Comments 56