Я пытаюсь написать функцию solve e k expr
, где e
- это набор линейных уравнений, составляющих часть линейной системы, k
- это набор переменных, используемых в e
. Функция должна по возможности решать для expr
, используя только переменные, присутствующие в k
.
Цель состоит в том, чтобы решить некоторые проблемы сетевого потока. Например, учитывая эту сеть , назовем ее электрической цепью и применим закон тока Кирхгофа (сумма токов, протекающих в узел, равна тем, которые истекают). В этом случае e
является
[ 'x1 - x2 + x5 = 0'
, 'x2 - x3 - x4 - x5 = 0' ]
и скажем, мы можем измерить ток на k = [x2, x5]
Тогда случайные случаи будут
solve e k 'x2' => Just 'x2'
solve e k 'x5' => Just 'x5'
чуть сложнее было бы
solve e k 'x1' => Just 'x2 - x5'
solve e k 'x3 + x4' => Just 'x2 - x5'
solve e k 'x1 - x2 + x5' => Just '0'
Некоторые выражения, очевидно, было бы невозможно найти для:
solve e k 'x3' => Nothing
Хотя псевдокод похож на ML, я работаю на виртуальной машине Java, но применяемые алгоритмы и стратегии должны быть одинаковыми.