Показать сообщение отдельно
Старый 12.02.2010, 06:09   #39
Местный
 
Аватар для peacefully
 
Регистрация: 21.10.2009
Сообщений: 690
Сказал Спасибо: 125
Имеет 180 спасибок в 68 сообщенях
peacefully пока неопределено
По умолчанию

Вообщем, суть была, к чему вопрос. Надо построить сеть с фрактальной топологией (граф, короче). Нашел три способа:
1) Строить матрицу смежности. Самое простое. На каждом шаге роста сети вполне примитивно матрица изменялась, сделать не составило труда. Еще в начале темы было сказано, что это N*N бит. А когда построил оказалось, что процентов 80% (ну не важно по числу, ОЧЕНЬ много, короче) матрицы занимают нули. Потому вторая идея была (в теме озвучил тоже), чтобы избавиться от нулевых ячеек. С простейшими начальными параметрами прога сдохла на 3126 вершинах (следующий шаг не осилила).
2) Список смежности. Организовал как массив массивов. Без нулей работает шустрее гораздо, оно и понятно. С теми же параметрами генерация превысила 15к вершин, дальше прога корректно отказалась че-то делать по причине 'Out of memory'. До реальных размеров все равно не дотягивает...
3) Затрудняюсь сказать, какое у этого название и есть ли вообще. Что-то среднее между деревьями и списками. Мультисвязанный двунаправленный список какой-то, короче. Есть объект-вершина, у которой указаны следующие смежные вершины-потомки и предыдущая вершина-предок. Че-то схожее с сетью гиперссылок в WWW: заходишь на какую-нить страницу и знаешь: а) откуда пришел; б) куда можно уйти с нее, глядя на ссылки на ней. Кажись, чОтче отражает реальность, но вот памяти жрать будет больше, чем список смежности из п.2 (хоть и всего на ~N).

Забыл уже, к чему писал это.. короче, вопрос об том, как обойти 'Out of memory'. Что читать на тему "как разместить данные на жестком диске, чтобы быстро к ним обращаться (читать, редактировать)"? "Жесткий диск" и "быстро" - это, понимаю, не очень, но как-то надо. Пока в голову приходит только N файлов (=кол-ву вершин) с перечисленными смежностями, но уверен, что есть че-то рациональнее))
peacefully вне форума   Ответить с цитированием