Russian Qt Forum

Программирование => Алгоритмы => Тема начата: foxexe от Январь 18, 2010, 16:22



Название: Равенство формул
Отправлено: foxexe от Январь 18, 2010, 16:22
Подскажите в какую сторону копать с определением равенства двух формул.

Есть формула эталон и нужно проверить, равна ли ей другая формула.

При условии существования отношений коммутативности, ассоциативности и дистрибутивности выглядит довольно непросто(


Название: Re: Равенство формул
Отправлено: Akaiten от Январь 18, 2010, 16:39
Разобрать оба выражения, а затем по определённым правилам привести их к некоторой канонической форме и наконец сравнить на эквивалентность. В тривиальном случае это может быть раскрыть все скобки и сгруппировать одинаковые члены, а затем сравнить на наличие одинаковых частей. Для других случаев надо думать.

Как эту задачу представляет себе человек? Два выражения эквивалентны если одно можно преобразовать в форму другого и наоборот. Это преобразование, если существует, возможно за некоторое количество шагов. На каждом шаге рассматривается структура текущего выражения и в соответствии с этим применяется некоторое правило. Чем больше правил Вы знаете и умеете применять, тем большее количество таких задач можете решить.


Название: Re: Равенство формул
Отправлено: lit-uriy от Январь 18, 2010, 17:42
>>Как эту задачу представляет себе человек?
порой, без должной тренировки одну формулу к другой не просто привести.

Если сделать програмулину решающую эту задачу и  потихоньку раскрутить, то можно и Маткаду конкуренцию составить


Название: Re: Равенство формул
Отправлено: foxexe от Январь 18, 2010, 18:02
Да вот где как задачу представляет чеговек это как-то слишком уж абстракстно, и вобщем дальше как двигаться пока не представляю.

С канонической формой попроще, но вот пока никак не придумаю как её так вот представить. Формулу конечно же можно представить деревом, но копаться в нём всё же не так просто, хотя лучше чем со строкой)

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

В какой бы области знаний порыться интересно


Название: Re: Равенство формул
Отправлено: Igors от Январь 18, 2010, 21:09
>>Как эту задачу представляет себе человек?
порой, без должной тренировки одну формулу к другой не просто привести.

Если сделать програмулину решающую эту задачу и  потихоньку раскрутить, то можно и Маткаду конкуренцию составить
"Та отож" - и пусть она решает задачки для поступающих в ВУЗы (сборник Сканави, сложность "В"). Реальные задачи надо ставить (даже с мощным Qt)


Название: Re: Равенство формул
Отправлено: BlackTass от Январь 18, 2010, 22:46
я думаю что просто стоит приводить формулы к единому виду (в случае дискретной алгебры к одному из канонических), в случае с дифурами к системе дифуров и т.д.


Название: Re: Равенство формул
Отправлено: ilot от Январь 19, 2010, 07:42
Есть формула эталон и нужно проверить, равна ли ей другая формула.

При условии существования отношений коммутативности, ассоциативности и дистрибутивности выглядит довольно непросто(
Я так понимаю, что речь идет не о формулах, а о функциях. И нужно ответить на вопрос, представляют ли две различные формулы одну и ту же функцию? Например, формулы (a + b) - c и a + (b - c) разные, но представляют собой одну функцию (при условии существования в системе коммутативности и ассоциативности конечно).

С чего начать? Определите сперва функции из какого класса хотите на эквивалентность проверять...
А то тут некоторые на диффуры даже ссылались  ;D


Название: Re: Равенство формул
Отправлено: kamre от Январь 22, 2010, 14:19
Подскажите в какую сторону копать с определением равенства двух формул.

Есть формула эталон и нужно проверить, равна ли ей другая формула.

При условии существования отношений коммутативности, ассоциативности и дистрибутивности выглядит довольно непросто(
Вообще эта задача не такая уж простая: http://en.wikipedia.org/wiki/Word_problem_for_groups В общем случае неразрешимая, алгоритма нет.