Я реализую некоторые алгоритмы, чтобы научить себя графам и как работать с ними. Что вы порекомендуете, это лучший способ сделать это на Java? Я думал примерно так:
public class Vertex {
private ArrayList<Vertex> outnodes; //Adjacency list. if I wanted to support edge weight, this would be a hash map.
//methods to manipulate outnodes
}
public class Graph {
private ArrayList<Vertex> nodes;
//algorithms on graphs
}
Но я в основном только что сделал это. Есть ли лучший способ?
Кроме того, я хочу, чтобы он мог поддерживать вариации на ванильных графах, таких как орграфы, взвешенные ребра, мультиграфы и т.д.