Система со случайными связями
От: Barbar1an Украина  
Дата: 14.07.17 17:04
Оценка:
давно хотел это обсудить

(речь про с++ поэтому управление памятью тоже учитывается)

есть грубо говоря набор агентов, агентами может управлять юзер, в том числе делать операции в результате которых один агент ссылается на другого
в итоге может образоваться абсолютно случайный граф вплоть до наличия ссылок самого на себя, косвенных ссылок и т.п.
выследить , запретить подобные вещи и сложно и нельзя поэтому не вариант

в тоже этот создать легко и сохранить просто, но когда загружаешь,
вот тут начинается веселуха, если юзер намудрил не дерево, а граф, то очень вероятно что при загрузке создание одного объекта потребует себя же но уже созданного

как такое разрулить?

у меня есть хреновые идеи:

— сделать всё на сообщениях, узлы напрямую друг на друга не ссылаются вообще
— попробовать реализовать типа асинхронный лайф-сайкл так скзать, типа переделать все операции уставноки связи на асинхронные и меть центральный узел который будет все мониторить и откладывать установку свзяи когда нада и уведовлять о ее создани икогда она доступна (я бы попробовал но не могу в уме все проработать — все ли проблемы решаются таким образом? а переделка займет много времени)
— еще чтото не помню....

как нужно? среда — нативная так что, память нада освобождать прваильно
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: Система со случайными связями
От: Sharowarsheg  
Дата: 14.07.17 17:14
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>(речь про с++ поэтому управление памятью тоже учитывается)


B>в итоге может образоваться абсолютно случайный граф вплоть до наличия ссылок самого на себя, косвенных ссылок и т.п.

B>выследить , запретить подобные вещи и сложно и нельзя поэтому не вариант

B>в тоже этот создать легко и сохранить просто, но когда загружаешь,

B>вот тут начинается веселуха, если юзер намудрил не дерево, а граф, то очень вероятно что при загрузке создание одного объекта потребует себя же но уже созданного

B>как такое разрулить?


Грузить в два прохода — сначала загрузить все объекты, а потом загрузить все связи?
Хранить последовательность создания объектов и связей, и грузить в той же последовательности?
Re: Система со случайными связями
От: Qulac Россия  
Дата: 14.07.17 19:16
Оценка:
Здравствуйте, Barbar1an, Вы писали:


B>в тоже этот создать легко и сохранить просто, но когда загружаешь,

B>вот тут начинается веселуха, если юзер намудрил не дерево, а граф, то очень вероятно что при загрузке создание одного объекта потребует себя же но уже созданного

А в чём проблема, стандартные серелизаторы и десерелизаторы легко с этим справляются.
Программа – это мысли спрессованные в код
Отредактировано 14.07.2017 19:17 Qulac . Предыдущая версия .
Re: Система со случайными связями
От: Тёмчик Австралия жж
Дата: 25.07.17 04:51
Оценка:
Здравствуйте, Barbar1an, Вы писали:

Присваивать новому узлу уникальный id, хранить в узле список id ссылающихся на него узлов. Хранить узлы в map где id это ключ. Как может происходить загрузка, хотя бы из sql, вообще любого хранилища: затянуть все в мап, и пробежать по каждому узлу, чтобы он по id направил на себя указатели. Заодно получишь точки входа в граф- т.е. узлы, на которые нет ссылок.

Afterthought. Если у тебя задание на правильный порядок инициализации обьектов, например как при компиляции или при dependency injection- тебе нужна топологическая сортировка.
Отредактировано 25.07.2017 5:00 Артём . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.