【问题标题】:Java Adjacency list implementation of graph with directed weighted edges具有有向加权边的图的Java邻接表实现
【发布时间】:2016-10-28 12:34:03
【问题描述】:
我正在尝试使用邻接列表在 Java 中实现有向加权边图。它由一个大小等于顶点数的数组组成,数组的每个条目是每个特定Vertex 的后继的LinkedList。
我想为每条边添加权重,我想通过为LinkedList 中的每个successor 对象添加一个权重标签,此外我想为每个Vertex 添加其他变量以供将来使用。如果我想这样做,我必须为顶点创建一个新的数据结构,并为邻接列表创建一个单独的数据结构。将两者结合为一个数据结构的有效设计是什么?
【问题讨论】:
标签:
java
graph
linked-list
adjacency-list
【解决方案1】:
您应该将图形表示为 HashMap,其中键是顶点标签,值是顶点对象。
HashMap<String,Vertex> graph = new HashMap<String,Vertex>();
Vertex是一个封装顶点属性的类,相邻的顶点会有一个属性HashMap,有权重。
HashMap<Vertex,Integer> adjListWithWeights = new HashMap<Vertex,Integer>();
您可以通过 Vertex 类向图形添加更多功能和属性。