![]() |
Сопоставление математическим формулам их названий
Всем доброго времени суток!
Нужно сделать программу, которая бы сопоставляла введённой математической формуле её название... Я смог сделать только проверку на корректность введённой формулы, а что делать дальше - не знаю... Вот что я пока что имею: Код:
function proverka (s:ShortString): byte; |
Насколько я понял, мне нужна что-то типа БД с самыми распространёнными мат. формулами, которая бы содержала саму формулу, + её название, а дальше, методом сравнения двух формул, введённой пользователем с теми, что находятся в базе я бы находил нужную...
Как бы это всё реализовать? |
Ghost, вводи табуляцию! Твой код сложно читать.
Конструкцию PHP код:
Мы первым условием смотрим на s[1] зачем проверка на другие символы? Ладно, если работает, то пусть будет. А вот это что? PHP код:
Или exit - безусловный выход из процедуры? Это знаете ли моветон. (Я не спорю, есть случаи когда Exit применим, но это явно не тот случай) Блок //проверяем оставшиеся символы переписать с использованием конструкции case of Где формулировка задачи? Где возможные варианты написания формул? (Интересно наличие там символов '&',''~','@','|', а умножение кстати где?) Это отправная точка, из-за чего весь сыр-бор собственно. ИМХО можно попробовать получить строение формулы, и сравнить с известными конструкциями. Как дальше делать по шагам, не скажу :) |
1. формулу нужно разобрать в дерво выражений
2. ввести оценочную функцию близости деревьев (наложения скелетов выражений) с параметрами сложности (кол-во ветвей) и похожести (расположение операторов на своих местах) 3. создать базу данных деревьев - названий 4. выбирать из базы максимально сложные, затем максимально похожие Может возникнуть ситуация, когда формулу невозможно узнать. Вообще как работает разбор (если натолкнёт на идеи) можно посмотреть на мат.пакете Wolfram Reserach Mathematica. Там движок позволяет делать пользовательските замены (assumptions) при упрощении формул (simplify) |
pva, эх ты! Взял, все рассказал.
Придется отыгрываться на реализации алгоритма. :) |
lxa85, это твой студент? Я дико извиняюсь :sorry: Но если он через неделю сможет вслух воспроизвести идею алгоритма и ответить на каверзные вопросы про подбор функции сравнения - ставь зачёт не думая :yes:
А вообще тема очень интересная. Если будет рабочий вариант тестового примера, я помогу довести его до ума. По сути это простейший переводчик иностранных языков. Программа разбирает текст на синтаксические конструкции, а потом ищет их "перевод" в базе данных. |
pva,
Цитата:
Цитата:
Посмотрим как Ghost "отсреливаться" будет, если что, материал по переводу текстов подкину, тут его скопилось немного :) |
Время: 08:22. |
Время: 08:22.
© OSzone.net 2001-