Сериализация/десериализация графа
От: mrUmka  
Дата: 10.01.07 20:49
Оценка:
Нужно сериализовать и десериализовать граф объектов. В графе могут существавать ссылки не только между соседними узлами графа, а любыми.
В частночти, есть коллекция нодов, в каждом ноде есть своя коллкция ссылок. Объект ссылка хранится в обеих нодах, которые она связывает.
Думаю, что народ уже решал подобную задачку с сериализацией графа объектов. Поделитесь решением или поделитесь мыслями.

Бинарная сериализация не подходит.
--
То, что вы уникальны еще не значит, что от вас есть толк
Re: Сериализация/десериализация графа
От: Mab Россия http://shade.msu.ru/~mab
Дата: 10.01.07 21:44
Оценка:
Здравствуйте, mrUmka, Вы писали:

Перед тем, как изобретать собственный велосипед, неплохо бы знать, чем именно не подходит стандартный?
Re[2]: Сериализация/десериализация графа
От: mrUmka  
Дата: 10.01.07 22:17
Оценка:
Mab>Перед тем, как изобретать собственный велосипед, неплохо бы знать, чем именно не подходит стандартный?

1. Нужна совместимость с предыдущими версиями графа. Есть конечно выход — это ISerializable интерфейс, он позволяет решать такие проблемы.
2. Нужно полученный xml не сохранять, как отдельный файл, а включать его, как отдельную ветвь в xml файл проекта поэтому ни binary ни soap formatters не подходят.

Остается XmlSerializer, но он досточно прмитивен. Как в нем при десериализации проверять, что объект уже создан и нужно просто восстановить ссылку на него не известно. Да это и не возможно помоему. Поэтому и спрашиваю методы решения проблемы.
--
То, что вы уникальны еще не значит, что от вас есть толк
Re[3]: Сериализация/десериализация графа
От: Mab Россия http://shade.msu.ru/~mab
Дата: 10.01.07 22:24
Оценка:
U>2. Нужно полученный xml не сохранять, как отдельный файл, а включать его, как отдельную ветвь в xml файл проекта поэтому ни binary ни soap formatters не подходят.
Не понял. Все эти форматтеры могут писать в Stream. Что мешает потом этот stream включить куда требуется?

U>Остается XmlSerializer, но он досточно прмитивен.

Он не предназначен для сериализации произвольных графов объектов.
Re: Сериализация/десериализация графа
От: jhfrek Россия  
Дата: 11.01.07 07:52
Оценка: :)
Здравствуйте, mrUmka, Вы писали:

U>Нужно сериализовать и десериализовать граф объектов. В графе могут существавать ссылки не только между соседними узлами графа, а любыми.

U>В частночти, есть коллекция нодов, в каждом ноде есть своя коллкция ссылок. Объект ссылка хранится в обеих нодах, которые она связывает.
U>Думаю, что народ уже решал подобную задачку с сериализацией графа объектов. Поделитесь решением или поделитесь мыслями.

U>Бинарная сериализация не подходит.


Матрица связанности?
Re[2]: Сериализация/десериализация графа
От: mrUmka  
Дата: 11.01.07 13:13
Оценка:
J>Матрица связанности?

Да.
--
То, что вы уникальны еще не значит, что от вас есть толк
Re[3]: Сериализация/десериализация графа
От: jhfrek Россия  
Дата: 11.01.07 13:22
Оценка: +1
Здравствуйте, mrUmka, Вы писали:

J>>Матрица связанности?


U>Да.


Чего да?

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

В общем идея в том, что бы преобразовать граф из представления с которым удобно работать в представление, которое удобно сохранять.
Re[4]: Сериализация/десериализация графа
От: Mab Россия http://shade.msu.ru/~mab
Дата: 11.01.07 19:57
Оценка:
Здравствуйте, jhfrek, Вы писали:

J>Если граф — суть набор списков с сложной структурой перекрестных ссылок, о запихать информацию о ребрах в матрицу связанности и сохранить ее плюс вершины.


Не знаю, что ты имеешь в виду под матрицей связности, Бывают матрицы смежности и инцидентности, но ни одна из них не годится для эффективного представления графа, поскольку ее размер растет нелинейно. Если уж сохранять, то списки дуг.
Re[5]: Сериализация/десериализация графа
От: jhfrek Россия  
Дата: 12.01.07 09:44
Оценка:
Здравствуйте, Mab, Вы писали:

J>>Если граф — суть набор списков с сложной структурой перекрестных ссылок, о запихать информацию о ребрах в матрицу связанности и сохранить ее плюс вершины.


Mab>Не знаю, что ты имеешь в виду под матрицей связности, Бывают матрицы смежности и инцидентности, но ни одна из них не годится для эффективного представления графа, поскольку ее размер растет нелинейно. Если уж сохранять, то списки дуг.


Их самых. А что сохранять — не важно, вопрос в преобразовании исходного графа в что-то удобное для записи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.