0

我正在尝试在飞镖中实现一个图表。

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

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

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

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

你认为这种方法有意义还是我的方法可能有一些市长缺陷?

4

1 回答 1

1

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

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

如果您想提高图表的性能,我会研究我可以与隔离同时运行的内容。请记住,图表可能会变得愚蠢而复杂,因此如果您可以保持简单,请保持简单。

于 2013-10-23T00:06:06.243 回答