Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AlgStr / Библиотека / POSIBNIK / Главы для пособия / Практическая работа2

.doc
Скачиваний:
33
Добавлен:
23.03.2015
Размер:
76.29 Кб
Скачать

Практическая работа № 2

Описание разреженных матриц

Пример 1: Упакованный способ хранения разреженных матриц

I.Описание

Идея:

i j aij

Все ненулевые элементы хранятся

строка столбец

указатели

M1

M2

2. Необходимо описать на языке программирования

type

PNode=^Node; (указатель на узел)

Node=record

j: word ; (используется для индекса столбца)

wel: real; (значение матрицы aij)

Next: Pnode;

end;

PtrArray=array[1...65520 div size of(PNode) of PNode];

Matr=record

n,m: word;

Pbody: PtrArray;

end;

Pmatr=^Matr;

После этого можно описывать интерфейс объекта.

Чтобы приступить к реализации, первое, что необходимо сделать-описать функцию абстракции.

В интерфейсной части описываются спецификации.

В блоке implamentation описываем функцию абстракции и инвариант представления

Ф

a11 a12 …. a1m

- - - - - - ----- - - - - - -

- - - - - - - - - - - - - - -

an1 an2 ….anm

ункция абстракции есть:

Типичная прямоугольная матрица есть

признак,все что там будет м-во

A[r]= [aij] aij= 0, если в списке с головой r^.PBody^[i] нет узла, что для js=j для

всех узлов списка.

таких ajsS,если в списке с головой r^.PBody^[i] есть узел,такой что js=j.

что

для всех i=1,n j=1,m

*

Если я допускаю нулевую матрицу, то необходимо описать, что все элементы Nill.

Инвариант представления:: требование к правильному представлению, чтобы извлечь матрицу.

* функция инв. представления есть:

<размер вектора r^.PBody^>= n & < в списке r^.PBody^[i]<=m для всех i=1,n>R<в списке r^.PBody^[i] для разных узлов js<jp для всех i=1,n.

*

(<<действие, <-понятие)

Пример2: Схема1 (nxm) (по столбцам)

r

i aij

-число ненулевых элементов

Матрица хранится в виде:

Всегда номер строки признак начала столбца признак конца

0 1 2 а21 4 а41 0 2 5 а52 0 0 0

Номер

столбца, представление I-го столбца

где есть

не нулевые элементы

Вселенная

объективного представления

Нумеруем пары для вычисления размера вектора:

ℓ=(n+1+r)-максимальный размер числа пар

r-должно храниться в образе матрицы или вычисляться, но может храниться и в

дискрипторе.

Описываем тип: (В этом случае возникает проблема в том,что ji-целое, aij1-может быть любым,поэтому использование значений этих пар разное при этом используется тип запись с вариантами)

type

Para=record

case K: word of тип i-й пары , она может быть 0 ji

0: (j:word); i aiji

else (val: real); (_ _ _ _ _; _ _ _ _ _ );

end;

Пример 3: Схема 3

Элементы хранятся по столбцам.

PVE-элементы;

PLD-приведенный индекс элемента в сплошном представлении по столбцам.

Возникает вопрос:

Как зная к и размер матрицы определить индексы?

Соседние файлы в папке Главы для пособия