2015-06-12 3 views
5

У меня возникла небольшая проблема, и я хотел бы получить помощь. Дело в том, что я дал этот контроль матрицы H.Получить все векторы из матрицы в Java

 0000111111111 
H = 0111000111222 
     1012012012012 

Я спросил получить все слова этого кода. Теория линейных и блочных кодов, говорит, что слово V является то, что слово, которое H * Vt = 0 (ноль) где Vt транспонируется В.

На данный момент я знаю, что есть 3^10 = 59049 можно слова. Это размер матрицы, который получается путем включения тела q в этом случае q = 3 матрицы в размерность, которая представляет собой столбцы-строки.

Моя проблема Я не знаю, как сгенерировать все векторы (слова), поэтому H * Vt = 0. Как я могу это сделать на Java? Все возможные комбинации с использованием 13-n векторов с 0,1 и 2. Я также хотел бы знать, можно ли работать с матрицами в Java.

[0,0,0,0,0,0,0,0,0,0,0,0,0] 
[0,0,0,0,0,0,0,0,0,0,0,0,1] 
[0,0,0,0,0,0,0,0,0,0,0,1,0] 
[0,0,0,0,0,0,0,0,0,0,0,1,1] 
.... 
[0,0,0,0,0,0,0,0,0,0,0,0,0] 
[0,0,0,0,0,0,0,0,0,0,0,0,2] 
[0,0,0,0,0,0,0,0,0,0,0,2,0] 
[0,0,0,0,0,0,0,0,0,0,0,2,2] 
.... 
[0,0,1,1,1,1,1,1,1,1,1,1,1] 
[0,1,1,1,1,1,1,1,1,1,1,1,1] 
[1,1,1,1,1,1,1,1,1,1,1,1,1] 
... 
[1,1,2,2,2,2,2,2,2,2,2,2,2] 
[1,2,2,2,2,2,2,2,2,2,2,2,2] 
[2,2,2,2,2,2,2,2,2,2,2,2,2] 

Большое вам спасибо! Я хотел бы реализовать его в общем виде, я имею в виду, не только для этой матрицы, но и для каждой матрицы я мог бы работать с

+0

Что такое лежащее в основе скалярное поле (R? C? Z/3Z?) –

+0

Все операции по модулю q (в этом случае по модулю 3) – Razvi

+1

Похоже, что делать это, более простые способы решения проблемы с математикой. –

ответ

2

Что вы ищете в основном перечисляя все векторы в ядре H. Чтобы избежать повторного использования колеса, вам понадобится библиотека линейной алгебры Java, которая поддерживает решение линейных систем на конечных полях (что исключает большинство популярных библиотек линейных алгебр Java).

Я искал «конечные поля линейной алгебры Java» и нашел эту библиотеку: JLinAlg, которая утверждает, что поддерживает ее.

Все, что вам нужно сделать, это найти основание для ядра H; после этого перечисление - это просто вопрос перечисления всех линейных комбинаций (координат) в этом базисе.

Я бы выбрал метод org.jlinalg.LinSysSolver#solutionSpace(), который дает AffineSubSpace, который имеет метод generatingSystem(), который дает вам необходимую основу.

+0

Благодарим вас за обмен. Я позабочусь о том, чтобы прочитать это. http://codereview.stackexchange.com/questions/41510/calculate-all-possible-combinations-of-given-characters Кажется, это тот, который мне нужен – Razvi

Смежные вопросы