Многие приложения используют большие массивы, которые содержат всего
несколько ненулевых элементов. Такие массивы называют разреженными (sparce).
Например, матрица смежности для авиалиний может содержать 1 в позиции A[i, j],
если есть воздушная трасса между городом i и городом j. Многие авиакомпании
обслуживают сотни городов, но число фактически выполняемых рейсов намного
меньше, чем N2 возможных комбинаций. На рис. 4.8 показана небольшая карта
авиалиний, на которой изображены только 11 существующих рейсов из 100 воз-
можных пар сочетаний городов. type
String10 = String[10];
PSparseCell = ^ТsраrsеСе11;
TSparseCell = Record
Col : Longint;
Value : String10;
NextCell : PSparseCell;
end;
TCellArray = array [0..100000000] of TSparseCell;
PCellAfray = ^TCellArray;
Рис. 4.8. Карта рейсов авиакомпании
Можно сформировать матрицу смежности для этого примера с помощью мас-
сива 10x10, но большая его часть окажется пустой. Избежать потерь памяти при
создании такого разреженного массива помогут указатели. Каждая строка массива
представлена связанным списком ячеек, представляющих ненулевые записи в стро-
ках. Метки для каждого списка строки хранятся в массиве. На рис. 4.9 показана раз-
реженная матрица смежности, соответствующая карте рейсов с рис. 4.8.
Следующий код показывает, как можно определить тип данных ячейки, ис-
пользуемой для хранения списка строк. Рис. 4.9. Разреженная матрица смежности
Нужен качественный сайт - http://alfa-com.info/ по привлекательной цене тут.
Опубликовал Kest
October 18 2009 15:00:16 ·
0 Комментариев ·
10394 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.