Мм.. познавательно, надо переварить.. такая топология точнее отражает реальность, а для исследования это важно. Аналогия с тривью действительно прямая, точн, спасибо))
Там вся трабла с тем, что число вершин по времени растет по N^(yt) закону, очень резко. Потому и теоретически, и практически (мои наработки по первым двум пунктам) показывают, что не всегда больше 15к вершин можно достигнуть, прежде чем память забьется. Максимально пока что получилось 67.5 тыщ нащупать. Потому хоть и тяжелее вершины, но зато красивее, чем матрицы и списки.
Цитата:
Сообщение от alexteam
проверил.
у меня макс кол-во вершин в графе составило 52022554. дальше - закончилась память выделяемая приложению ~2гб. сурсы проверялки прикрепил. -)
Значит-с, представь граф. В начальный момент времени есть элементарный график (маленький граф т.е.)))) из N вершин, которые соединены звездой - к одной присоединены (N-1) других. Матрица выглядит как-то так:
0 1 1 1 1
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
(5 узлов, 1-ый соединен со всеми, 2-5-ые - только с первым).
k - степень вершины (т.е. число вершин, с которыми соединена данная; например, у 1-ой k=4, а у 3-ей k=1). На каждом шаге к каждому узлу (вершине) прибавляется k*m число узлов (m - какое-то постоянное целое число). Таким образом, получается однородный фрактал..
Далее второй метод, при котором принцип такой же, но в конце каждого шага связи с предыдущего шага с вероятностью e (e=0..1) будут пропадать и появляются между потомками того узла и потомками другого. Однородность нарушится.
Но меня интересует первый, с однородной структурой. Как его хранить, чтобы потом просчитывать. В матрице это не вариант ваще
__________________
Легит, 200%.
Хочу конец света в 2014.
Слава роботам!
peacefully, на нейронную сеть похоже)
хранить.., ну alexteam, хороший вариант предложил, но если памяти всё равно не хватает, то надо кэшировать данные на диск и извлекать по маленьку куски с которыми работаешь, правда при данных условиях не представляю себе структуру которую при каждом шаге не придётся полностью пересоздавать так как каждый элемент будет расширяться, а в виду того что элементов тож заоблачно, то и хранить каждый элемент в отдельном файле не выход.
думаю тут надо писать программу не на 32битной а 64битной адресации, тогда операционка сможет выдать мнооого гигов программе сама складывая не помещающееся на диск (ток виртуальную память надо будет сделать огромной, ну и ОС и компилятор должны быть 64разрядными, тоесть дельфи не катит)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Подскажите, плиз, 64-битные среды, я нуп в этом, но разбираться умею) Си-шарпы последние держат? Или мб редакции какие-то отдельные... Че-то не могу найти.
__________________
Легит, 200%.
Хочу конец света в 2014.
Слава роботам!
peacefully, С# в принципе 64бита использовать умеет, у него на 64битной системе ограничение будет только на количество элементов в массиве (2 миллиарда с небольшим)
ЗЫ на C# и древовидную структуру которая тебе нужна будет проще намутить, единственное хз насколько оптимально оно будет память жрать, но думаю для твоей задачи приемлемо
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Сишарп ето аналог джавы, еще тормознутее, ехе содержит не выполняемый код а промежуточный, который компилит в процесе выполнения дотнет.
Я бы юзал Си билдер, он дает самый быстродействующий результат, впридачу Си компиляторы оптимизируют код.
Я бы запихивал в 1 чар 8 бит и побитно разбирал их if a=00000001b, записывать 1 бит в чар путем сложения с бинарным 10000b где количество нолей номер бита. Ето будет очень економично и быстродейственно, в отличии от делфовских 1 и 0 стрингов ))))
Последний раз редактировалось Xa4ik, 28.02.2010 в 01:46.
ну аналог впринципе да, а вот насчет тормознутости ты загнул, нифига не медленнее, а в вопросе GUI дык даст фору яве в пол версты
Цитата:
Сообщение от Xa4ik
Я бы юзал Си билдер
ну ты и велосипед видимо одноколесный юзаешь
Цитата:
Сообщение от Xa4ik
он дает самый быстродействующий результат
ага, если писать код асм вставками то да результат будет наибыстрейшим, впрочем как и на любом другом языке если писать асм вставками
Цитата:
Сообщение от Xa4ik
впридачу Си компиляторы оптимизируют код
открою тебе секрет, все компиляторы оптимизируют код, причем виртуальная машана явы и .NET фреймворк оптимизируют намного лучше чем компиляторы нативных языков в иду того что они могут оптимизировать под конкретную платформу на которой работают
лучший оптимизатор на сколько я слышал у gcc, только вот это чисто компилятор, без удобного IDE типа визуал студии или дельфийской рад студии
Цитата:
Сообщение от Xa4ik
Я бы запихивал в 1 чар 8 бит и побитно разбирал их if a=00000001b, записывать 1 бит в чар путем сложения с бинарным 10000b где количество нолей номер бита
вроде бы мы тут уже отказались от битовых матриц в пользу деревьев, так что к чему ты это написал хз
Цитата:
Сообщение от Xa4ik
Ето будет очень економично и быстродейственно, в отличии от делфовских 1 и 0 стрингов ))))
причем тут дельфийские стринги дающие фору сишным пчарам я тоже не понял, все битовые операции дельфи поддерживает как и си
ЗЫ Xa4ik, кончай выпендриваться и делать вид что ты всё знаешь...
__________________
Я здесь практически не появляюсь!, Skype - ikskor