PDA

View Full Version : [JAVA] implementazione grafi con matrice delle adiacenze


bo615
27-02-2011, 16:05
ciao!

ho dei problemi a capire l'argomento nel titolo.
avete del materiale utile per aiutarmi a capirlo???

Grazie :)

Don[ITA]
27-02-2011, 23:45
Cosa non ti è chiaro di preciso?

bo615
28-02-2011, 08:21
ciao.

la cosa che non mi è chiara i particolar modo è questa:
quando io implemento il grafo con la lista delle adiacenze lo implemento attraverso l'uso di HashMap<Vertex<V>,List<Edge<E>>> graph, quindi tratto i vertici e i lati del grafo come oggetti della classe Vertex ed Edge che mi creo.

Nel caso della matrice delle adiacenze non so come devo rappresentare i vertici e i lati del grafo, se come interi o come oggetti della classe Vertex ed Edge oppure come qualcos'altro.
una cosa del genere potrebbe andare bene secondo te???

public class Graph{

public int [][] matrice;
public int vertice;
public int nodo;

public Graph(int vertice, int nodo){
this.vertice=vertice;
this.nodo=nodo;
matrice=new int[vertice][vertice];
}
}

se invece volessi rappresentare i vertici e i lati con delle classi (come nel caso della lista delle adiacenze) come dovrei fare?

grazie in anticipo :)

Don[ITA]
28-02-2011, 09:41
Beh, la matrice di adiacenza ti dice solo se due nodi sono connessi da un arco, o il peso di quell'arco. Detto ciò puoi sempre usare delle classi costruite ad hoc per rappresentare archi e nodi del grafo in un modo simile a questo:

private int matrice[][];
private List<Node> nodi;
private List<Edge> archi;

public Grafo(List<Node> nodi, List<Edge> archi) {
this.nodi = nodi;
this.archi = archi;
matrice = new int[nodi.size()][nodi.size()];
(...popola matrice...)
}


Volendo puoi usare contenitori diversi da int[][] per rappresentare la matrice, e fare in modo che i tuoi nodi diventino le chiavi della matrice stessa, ad esempio:

HashMap<Node, HashMap<Node, Integer>>

ma credo che complichi solo le cose :D

Spero di esserti stato utile

bo615
28-02-2011, 10:10
grazie mille per il tuo aiuto!
:)