Трябва да реша набор от линейни уравнения върху двоичното поле, а именно, имам матрица M и трябва да намеря вектор v, така че M.v=0 (mod 2), където всички елементи на матрица M и вектор v са 0 или 1 и от дясната страна е вектор, чиито всички компоненти са четни числа. Има ли някакъв добър начин да го програмирате в Mathematica или Matlab?
Решаване на набор от линейни уравнения върху двоично поле
Отговори (1)
Ако броят на колоните на M
не е твърде голям, може да се използва подход с груба сила:
M = [0 1 0 1; 1 0 0 1; 1 1 1 0]; %// example matrix M
V = (dec2bin(0:2^size(M,2)-1)-'0').'; %// all possible vectors v, as columns of V
ind = all(mod(M*V, 2)==0); %// index of solution vectors
solutions = V(:,ind); %// each column is a solution vector
В този пример,
solutions =
0 1
0 1
0 0
0 1
person
Luis Mendo
schedule
11.08.2014
Благодаря ви много, но M и v обикновено имат няколкостотин записа...
- person Mr. Gentleman; 11.08.2014
Модифицирането на RHS може да направи необходима груба сила.
- person Yvon; 11.08.2014
v
? Възможен ли е подход с груба сила? - person Luis Mendo   schedule 11.08.2014NullSpace[m, Modulus->2]
ще направи това. - person Daniel Lichtblau   schedule 13.08.2014