Dart 一个节点(顶点)应该知道它在图中的邻居吗?

Dart 一个节点(顶点)应该知道它在图中的邻居吗?,dart,graph,vertex,neighbours,edge-list,Dart,Graph,Vertex,Neighbours,Edge List,我正在尝试在dart中实现一个图形 我想创建类节点(顶点)、边和图 其主要思想是该图有一个节点列表和一个边列表 稍后我将在图上实现一些搜索算法 我还考虑向每个节点添加一个邻居列表(列出邻居),这样每个节点都知道自己的邻居(准确地说是后续节点)。我在这里的想法是,当一个节点具有此信息时,获取一个节点的后续节点比算法每次都必须检查边列表时要快。我知道更改(删除边、节点、添加新边、节点)的成本也会更高,因为我必须在两个位置更新它们。但目前,我不打算在创建图形后使其过于动态 您认为这种方法有意义吗?或者

我正在尝试在dart中实现一个图形

我想创建类节点(顶点)、边和图

其主要思想是该图有一个节点列表和一个边列表

稍后我将在图上实现一些搜索算法

我还考虑向每个节点添加一个邻居列表(列出邻居),这样每个节点都知道自己的邻居(准确地说是后续节点)。我在这里的想法是,当一个节点具有此信息时,获取一个节点的后续节点比算法每次都必须检查边列表时要快。我知道更改(删除边、节点、添加新边、节点)的成本也会更高,因为我必须在两个位置更新它们。但目前,我不打算在创建图形后使其过于动态


您认为这种方法有意义吗?或者我的方法可能有一些缺陷吗?

即使您在创建图形后不更改图形,也可以通过对您正在创建的
技术债
图形进行非规范化,使其更加复杂/困难。你可能会发现一些很难找到的奇怪的虫子。当你在一两个月内回到这段代码时,它会变得更加混乱,因为它在你的记忆中并不新鲜,也不直观

要实现任何性能提升,您必须拥有大量的节点,如果节点数量过多,则对边缘的引用数量将增加一倍,从而增加内存占用。此外,如果您正在编译为JavaScript,请不要对对象进行超出需要的引用,从而对垃圾收集器很好


如果您想提高图形的性能,我将研究与隔离并行运行的功能。请记住,图表可能会变得愚蠢复杂,所以如果你能让任何事情保持简单,那么就让它保持简单。

也许我错了,但这个问题不会得到更多的关注吗?