【问题标题】:Should a node (vertex) know about its neighbours in a graph?一个节点(顶点)应该知道它在图中的邻居吗?
【发布时间】:2013-10-22 21:07:34
【问题描述】:

我正在尝试在 dart 中实现图表。

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

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

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

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

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

【问题讨论】:

标签: dart graph vertex neighbours edge-list


【解决方案1】:

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

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

如果您想提高图表的性能,我会研究一下我可以与隔离同时运行什么。请记住,图表可能会变得非常复杂,所以如果您可以保持简单,那就保持简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 2019-10-20
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多