Algorithm for slicing a dynamic graph
我目前正在研究一个基于图形的项目,我正在寻找一个分割动态图形的算法。我已经做了一些研究,但我发现大多数算法只适用于静态图。在我的环境中,图形是动态的,这意味着用户在运行时添加/删除元素,创建/删除依赖项。(实际上,我正在使用UML模型,但是UML模型也可以用类型图表示,它由类型化的顶点和边组成)我还搜索术语图碎片,但没有找到任何内容。我想知道是否存在这样的分割动态图的算法?
[更新]
很抱歉我不清楚,我正在更新我的问题。让我先公开一下上下文。
在MDE(模型驱动工程)中,大型工业系统涉及到当今数百个开发人员,他们致力于研究代表整个系统规范的数百个模型。在这种情况下,通常采用的方法是使用中央存储库。我为我的项目提供的解决方案(我目前在一个研究实验室工作)是面向对等的解决方案,这意味着每个开发人员都有自己的系统规范复制。
我的主要问题是如何复制这些数据,模型。例如,假设Alice和Bob正在处理这个UML图,Alice在他的存储库中有整个图。Bob想要元素feedorEntry,entry,如何分割这个图UML?我搜索了"模型切片"的术语,我找到了一篇论文,它给出了一种分割UML类图的方法,但是这个算法的问题是它只适用于静态图。在我们的上下文中,开发人员不断地添加/更新/删除元素,共享元素应该与其他副本保持一致。
由于UML模型也可以看作一个图,所以我也搜索"图切片"或"图片段"的术语,但是我没有发现任何有用的东西。我想知道是否存在这样的分割动态图的算法
如果您使切片成为原子的,我认为使用本文所链接的算法没有问题。
但是,对于您的一致性约束,我认为您的P2P方法是不兼容的。另一种选择是合并操作,但我不知道该操作如何工作。可能,至少部分,必须手动完成。
如何将图形规范化为相邻的树模型?然后你可以使用一个DFS或BFS来分割图表?
听起来您可能需要一个NoSQL图形数据库,如Neo4j或FlockDB。它们可以存储数十亿个顶点和边。