| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Сохранение матрицы |
| Автор: AppleMan 6.10.2006, 11:38 |
| Надо решить такую задачу: есть матрица взаимосвязи слов приблизительно такого вида: Вася Маша Коля Лена Вася 0 2 3 4 Маша 2 0 1 2 Коля 3 1 0 1 Лена 4 2 1 0 Надо сохранить матрицу на жестком диске так, чтобы потом можно было довольно быстро доставать данные (размерность матрицы будет где-то 300'000х300'000, так что обычная БД загнется). |
| Автор: MBo 6.10.2006, 11:54 |
| Файл, содержащий N*(N-1)/2 элементов (судя по приведенной таблице, A->B =B->A, и достаточно хранить ее половину), интерпретируется как треугольный массив. P.S. А что, разве нет БД, которые ~10^11 элементов могут хранить? |
| Автор: Akina 6.10.2006, 16:46 |
| Взаимосвязи - именно целого типа? или по-иному - существует ли полное множество значений связи, и если да - сколько в нем элементов. Является ли матрица связности разреженной? Что планируется делать с этой матрицей связности? |
| Автор: Rodman 6.10.2006, 18:40 |
ну это ты загнул.... но мои варианты это: 1. Программа которая по именнам сама будет формировать матрицу по именам (так что храниться придется только именна)... 2. База данных, но таблица с таким большим количеством столбцов, предется долго создавать, но работать будет. 3. Создать структуру и хранить в типизированном файле, но также кол-во полей большое... |
| Автор: Earnest 9.10.2006, 15:00 |
| Обычно графы хранят в виде пар Маша-Вася. Естественно, чтобы не дублировать строки, лучше приделать узлам какие-либо ид-ры, сохранить один раз список пар ид-р - строка, а потом уже хранить пары ид-р - ид-р. Хочешь - базу данных используй, хочешь проприентарный файл. |