【问题标题】:Graphs implementation in javajava中的图形实现
【发布时间】:2012-04-21 01:42:33
【问题描述】:

我正在尝试创建一个 Graph 类,它使用另一个类 Vertex 类来表示图形的所有顶点。我不确定是否需要一个代表两个顶点之间可能连接的 Edge 类,因为每个顶点都可以跟踪它所连接的其他节点。但我不确定这是否正确。你怎么看?

谢谢。

【问题讨论】:

  • 问:这是“功课”吗?如果是这样,请将其标记为这样。无论如何,看看这个:en.literateprograms.org/Dijkstra%27s_algorithm_%28Java%29
  • 这不是家庭作业。我知道如何使用和不使用边缘类来实现该类。我只想知道没有 Edge 类是否正确。谢谢你的链接。

标签: java graph implementation


【解决方案1】:

您不必使用Edge 类。您可以使用邻接列表并仍然正确地表示 未加权 图。对于加权图,您需要一种表示边成本的方法,因此使用 Edge 类是合适的。

class Graph<E> {
    private List<Vertex<E>> vertices;

    private static class Vertex<E> {
        E elem;
        List<Vertex<E>> neighbors;
    }
}

【讨论】:

  • 是的,这就是我的想法。完全不使用 Edge 类来跟踪其他顶点。谢谢!!!!
  • 一切都很好,直到您需要加权有向图。然后,您将需要元数据或更好的 Edge 类。
  • @AndrewFinnell:谢谢。已更新。
【解决方案2】:

通常,representation 是根据其是否适合预期用途来选择的。在这个简单的示例中,GraphPanel 仅使用 List&lt;Edge&gt; 作为其模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多