Разреженная матрица – это двумерный массив , также известный как разреженный массив . В этой матрице большинство элементов равно нулю, и очень немногие являются ненулевыми элементами.
Например, рассмотрим матрицу из двух строк и трех столбцов. В этой матрице есть только два значения, а остальные пустые. Это вакантное место заполнено нулем.
Почему мы используем разреженную матрицу? |
Это означает, что для поиска всех элементов нам потребуется 2500-кратное сканирование, чтобы найти значение.
Таким образом, вместо сканирования 2500 раз вы можете использовать разреженную матрицу. В разреженной матрице вы можете напрямую получить значения, существующие в матрице.
Каковы различные способы представления разреженной матрицы в памяти?
Разреженная матрица и ее представления в java
Существует два способа представления разреженной матрицы,
- Массив представление или форма из трех столбцов
- представление связанного списка
Форма из трех столбцов или представление массива
Мы должны создать разреженную матрицу вышеупомянутой матрицы 4 X 4. Для этого у нас есть три столбца: строка, столбец и значение.
В приведенной выше таблице первая строка представлена общим количеством строк, общим количеством столбцов и общим количеством ненулевых значений, существующих в приведенной выше матрице 4 X 4.
Первое общее количество строк в приведенной выше матрице 4 X 4 равно 4. Общее количество столбцов равно 4, а общее количество ненулевых значений равно 6. Прежде чем перейти к следующей строке, вот как выполняется индексация в матрице,
В следующей строке представления формы из трех столбцов рассмотрим строку 0 (матрицы 4 X 4), значение столбца 1 равно 3.
В следующей строке (матрицы 4 X 4) у нас есть строка 1, столбец 0, а значение равно 2. Далее в той же строке у нас значение индексации столбца равно 2, а значение равно 4.
Переходя к следующей строке, значение R2 существует в первом и третьем столбцах. Таким образом, значение равно 1 и 2.
В последней строке (матрицы 4 X 4), которая равна R3, значение столбца 1 равно 3. Вот полная таблица представления формы из трех столбцов,
Как вы можете видеть на изображении выше, представление представлено в этом формате. Для представления формы с тремя столбцами мы должны учитывать ненулевые значения.
Благодаря этому представлению в форме трех столбцов мы можем напрямую обращаться только к ненулевым значениям и игнорируем нулевые значения.
Представление связанного списка
Теперь мы собираемся изучить связанный список для представления разреженной матрицы в java. Для представления связанного списка нам требуются три узла, а три узла имеют разную структуру. Вот структура,
Как вы можете видеть на изображении выше, первый узел состоит из четырех столбцов. Где первый столбец – общая строка, второй – общий столбец, третий – общие ненулевые значения в этой матрице, а последний – указатель, указывающий на следующую строку.
Аналогично предыдущему представлению формы с тремя столбцами (у нас была строка, столбец, значение) после трех столбцов требуется один указатель, указывающий на следующую строку.
Далее идет узел строки. В режиме raw первым является номер строки, вторым – указатель на следующую строку (потому что любая матрица после сканирования всех столбцов должна быть перемещена в следующую строку.
Таким образом, есть один указатель, который приведет вас к следующей строке), а третий – указатель на столбец.
Последним является узел столбца. В узле столбца первым является номер столбца, вторым – значение, существующее в столбце, а третьим – указатель на следующее значение в той же строке. Давайте разберемся в представлении связанного списка на примере,
Я использую ту же матрицу 4 X 4, которая используется в представлении в виде трех столбцов. Таким образом, для представления связанного списка матрицы 4 X 4 первым является головной узел.
Этот головной узел содержит четыре строки, четыре столбца и шесть ненулевых значений. Далее идет указатель, который будет указывать на первую строку матрицы.
Первая строка означает R0 ( см. изображение “Индексирование” выше), а ее следующий указатель указывает на следующую строку R1. Следующий указатель указывает на строку 2 (R2), а его следующий указатель указывает на последнюю строку R3.
Итак, в строке 0 значение первого столбца равно 3. Поскольку в той же строке нет другого значения, последний указатель будет равен нулю ( см. Изображение выше, представленное как X ).
Переход к следующей строке, то есть указатель первой строки (R1) указывает на столбец 0, а значение равно 2.
Затем он снова указывает на следующий столбец, где значение столбца равно 4, и в той же строке нет другого значения, поэтому оно равно нулю.
Теперь вторая строка ( R2) имеет два значения итак, у меня есть два узла. Первый в строке 2 столбец 1, значение равно 1, и оно указывает на значение следующего столбца.
Столбец номер 3 имеет значение 2 и не указывает на следующую строку, поэтому он равен нулю. Переходим к последней строке R3; узел столбца в столбце 1 у нас есть значение 3, и оно не указывает ни на какое другое ненулевое значение в той же строке, поэтому оно равно нулю.
Итак, это все о разреженной матрице и ее представлениях в java.
Оригинал: “https://dev.to/lohith/sparse-matrix-and-its-representations-in-java-b90”