LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

это плохой подход.

Why? Не представляю, как можно внятно написать всё это на бинарных деревьях. Как определить понятие цены для n-арных операций — вполне себе очевидно: количество потомков минус один (можно ещё умножить на коэффициент).

Просто далеко не всегда тебе известны все переменные, т.е. в качестве ответа ты не всегда можешь получить число. Часто ответ тоже имеет вид выражения.

Естественно. Более того, мне в виде выражения ответ и нужен. Потому и говорю, что считаю символьно.

не получится. Понятие «красоты» не формализуется. Лучше будет заменить «красоту» на что-то конкретное

Да, это верно... Уже думал об этом. Но пока что все эвристики прокатывают, если их тупо применять одну за другой к целому дереву.

Оптимизируется это всё очень просто, а именно подобными членами

Уже (хотя пока что умею приводить только константы, т. е. x*y + x*z -> x*(y+z) сработает только если y и z — числа).

При этом важно вовремя остановиться, например sqrt(3) считать не нужно

Отрицательные степени тоже не нужно считать тем же типом, что и обычные числа

Действительно, надо это захэндлить, спасибо.

Исходная версия intelfx, :

это плохой подход.

Why? Не представляю, как можно внятно написать всё это на бинарных деревьях. Как определить понятие цены для n-арных операций — вполне себе очевидно: количество потомков минус один (можно ещё умножить на коэффициент).

Просто далеко не всегда тебе известны все переменные, т.е. в качестве ответа ты не всегда можешь получить число. Часто ответ тоже имеет вид выражения.

Естественно. Более того, мне в виде выражения ответ и нужен. Потому и говорю, что считаю символьно.

не получится. Понятие «красоты» не формализуется. Лучше будет заменить «красоту» на что-то конкретное

Да, это верно... Уже думал об этом. Но пока что все эвристики прокатывают, если их тупо применять одну за другой к целому дереву.

Оптимизируется это всё очень просто, а именно подобными членами

Уже (хотя пока что умею приводить только константы, т. е. x*y + x*z -> x*(y+z) не сработает).

При этом важно вовремя остановиться, например sqrt(3) считать не нужно

Отрицательные степени тоже не нужно считать тем же типом, что и обычные числа

Действительно, надо это захэндлить, спасибо.