节点(顶点)是否应该知道图中的邻居?

时间:2013-10-22 21:07:34

标签: graph dart vertex edge neighbours

我正在尝试用飞镖实现图表。

我想过创建Node(顶点),Edge和Graph类。

主要思想是图表有一个节点列表和一个边缘列表。

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

我还想到为每个节点添加一个邻居列表(列表邻居),以便每个节点都知道它的邻居(后续节点是精确的)。我的想法是,当节点具有此信息时,获取一个节点的后继节点比每次算法必须检查边缘列表时更快。我知道更改(删除边,节点,添加新边,节点)也会花费更多,因为我必须在两个位置更新它们。但目前我并不打算让图表在创建后过于动态。

你认为这种方法是否有意义,或者我的方式可能有一些市长缺陷?

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

即使您在创建图表后没有更改图表,也可以通过对图表进行非规范化来创建Technical Debt,使其更加复杂/难以处理。你可能会得到一些难以追查的奇怪错误。当你在一两个月内回到这段代码时,它会变得更加混乱,因为它在你的记忆中并不新鲜,并且它不直观。

你必须有一个荒谬的节点数来实现任何性能提升,如果你有一个荒谬的节点数量,你可以加倍对边缘的引用量,增加内存占用量。此外,如果您正在编译JavaScript,那么通过不要对对象进行更多的引用来对垃圾收集器很好。

如果您想提高图表的性能,请查看我可以与隔离区同时运行的内容。请记住,图表可能会变得愚蠢复杂,所以如果你能保持简单,那就保持简单。