AlgStr / Практические занятия / Матрица / Практическая №1_1
.doc
Практична робота №1
Матриці.
Послідовна структура даних - це структура, в якій обробка і розташування елементів виконується послідовно. До даної структури відносяться двовимірні масиви (матриці) (1), доступ до елементів якого обчислюваний (по індексах).
, , (1)
У пам'яті машини масиви мають суцільне подання, у вигляді лінійного способу (послідовно). Для визначення місце розташування в лінійному вигляді використовують формули приведеного індексу.
Визначення: Приведений індекс - порядковий номер елементу від початку масиву подання вектора пам'яті.
Лінійне подання матриці можливе
-
По стовпцях;
(2)
Формула приведеного індексу має вигляд:
(3)
Таким чином, адреса , де
Існує зворотне завдання: як по приведеному індексу отримати індекси . Для знаходження приведений індекс ділимо без остачі на і до результату додаємо 1.
-
По рядках;
(4)
Формула приведеного індексу має вигляд:
(5)
Аналогічно лінійному уявленню по стовпцях визначаємо індекси .
Подання розріджених матриць.
Визначення: Розріджена матриця - матриця, в якій кількість ненульових елементів меньше нульових.
Всі подання, у тому числі і подання розріджених матриць складається з дескриптора і тіла (рис.1).
Рис.1 Подання об’єкту.
Дескриптор містить загальні властивості і додаткові відомості для оптимальної реалізації об'єкту.
Наприклад: необхідно описати об'єкт - група студентів. В якості дескриптора може виступати: шифр групи, куратор. Зазвичай дескриптор - це запис, який зазвичай містить явний або неявний зв'язок з тілом.
Існує два способи подання тіла:
· Обмежене (на базі масиву);
· Необмежене (на базі списку).
Розглянемо подання даних.
Існує два способи подання даних:
-
За допомогою масиву;
-
За допомогою списку.
Виды представления разреженных матриц:
А) Нижняя треугольная матрица
Для подання нижньої треугольної матриці необхідно представити її у лінійному вигляді. Нехай тіло – вектор ненульових елементів нижче головної діагоналі.
Тоді подання матриці має вигляд:
a11
a21 a22
A: rep a31 a32 a33
. . .
an1 an2 an3 . . . ann
Функція абстракції є:
Наступним кроком реалізації є необхідність системи типів. Наприклад: за допомогою Turbo Pascal реалізація має вигляд:
Type
Intarray = array[1..65520 div SizeOf(integer)] of integer;
TMatr = record
n: word;
tbody: Intarray;
end;
PMatr = TMatr;
Наступним кроком є опис інтерфейсу типу. Запишемо операції для роботи з матрицею.
Function Create (n:word):PMATR; // створення матриці
Function GetEl (M:PMATR;i,j:word):integer; // отримання елементу матриці
Procedure Destroy (var M: PMATR); //знищення матриці
Зауваження: функція Create повинна працювати за максимумом тобто 65520 div sizeof(integer).
Всі ці пункти повинні бути відображені в окремому модулі роботи з матрицею.