To fazendo um trabalho de grafos e to precisando de ajuda
Queria saber como criar uma matriz de adjacencia
Eu sei como ela funciona
Mas eu tenho que criar um metodo?
Fazer um construtor?
[code]
public class Aresta {
private Vertice v1;
private Vertice v2;
public Aresta(Vertice v1, Vertice v2) {
super();
this.v1 = v1;
this.v2 = v2;
}
public Aresta() {
super();
}
public Vertice getV1() {
return v1;
}
public void setV1(Vertice v1) {
this.v1 = v1;
}
public Vertice getV2() {
return v2;
}
public void setV2(Vertice v2) {
this.v2 = v2;
}
}
[/code][code]import java.util.ArrayList;
public class Grafo {
private ArrayList arestas;
private ArrayList vertices;
private int [][]matrizAdjacencia;
public Grafo() {
vertices = new ArrayList();
arestas = new ArrayList();
}
public Vertice addVertice(char nome){
Vertice v = new Vertice();
vertices.add(v);
return v;
}
public int getQtdVertices(){
return(vertices.size());
}
}[/code][code]
public class Principal {
public static void main(String[] args) {
Grafo grafo = new Grafo();
grafo.addVertice('A');
grafo.addVertice('B');
grafo.addVertice('C');
grafo.addVertice('D');
grafo.addVertice('E');
grafo.addVertice('F');
System.out.println(grafo.getQtdVertices());
}
}
[/code][code]
public class Vertice {
char nome;
public Vertice(char nome) {
super();
this.nome = nome;
}
public Vertice() {
super();
}
public char getNome() {
return nome;
}
public void setNome(char nome) {
this.nome = nome;
}
}[/code]
já consegui implementar a matriz
agora não to conseguindo adicionar as arestas
nçao sei se to fazendo o main errado
ou se o metodo é que tá errado
alguém pode dar uma olhada pra mim
[code]import java.util.ArrayList;
public class Grafo {
private ArrayList arestas;
private ArrayList vertices;
private int [][]matrizAdjacencia;
private int [][]matrizIncidencia;
public Grafo() {
vertices = new ArrayList();
arestas = new ArrayList();
}
public Grafo(int[][] matrizAdjacencias){
vertices = new ArrayList();
arestas = new ArrayList();
for (int i=0;i<matrizAdjacencias.length;i++) {
this.addVertice( );
}
for (int i=0;i<matrizAdjacencias.length;i++) {
for (int j=0;j<matrizAdjacencias.length;j++) {
if(matrizAdjacencias[i][j]==1){
Vertice v1 = this.getVertice(i);
Vertice v2 = this.getVertice(j);
this.addAresta(v1,v2);
}
}
}
}
public Vertice addVertice(){
Vertice v = new Vertice();
vertices.add(v);
return v;
}
public Aresta addAresta(Vertice _v1, Vertice _v2){
if(this.getArestaEntreVertices(_v1,_v2)==null){
Aresta aresta = new Aresta(_v1,_v2);
arestas.add(aresta);
this.updateMatrizAdjacencias();
this.updateMatrizIncidencias();
return(aresta);
}
return(null);
}
public Aresta getArestaEntreVertices(Vertice _v1, Vertice _v2){
Aresta aresta;
for(int i=0;i<arestas.size();i++){
aresta = this.getAresta(i);
if(aresta.contemAresta(_v1,_v2))
return(aresta);
}
return(null);
}
private void updateMatrizAdjacencias(){
Vertice vertice;
Vertice verticeAux;
ArrayList v_adjacencias;
matrizAdjacencia = new int[vertices.size()][vertices.size()];
for(int i=0;i<vertices.size();i++){
vertice = this.getVertice(i);
v_adjacencias = this.getAdjacencias(vertice);
for(int j=0;j<v_adjacencias.size();j++){
verticeAux = (Vertice)v_adjacencias.get(j);
matrizAdjacencia[i][verticeAux.nome-1] = 1;
}
}
}
private void updateMatrizIncidencias(){
Aresta aresta;
matrizIncidencia = new int[vertices.size()][arestas.size()];
for(int j=0;j<arestas.size();j++){
aresta = this.getAresta(j);
matrizIncidencia[aresta.getV1().nome-1][j] = 1;
matrizIncidencia[aresta.getV2().nome-1][j] = 1;
}
}
public Aresta getAresta(int i){
return((Aresta)arestas.get(i));
}
public Vertice getVertice(int i){
return((Vertice)vertices.get(i));
}
public ArrayList getAdjacencias(Vertice v){
Aresta aresta;
ArrayList adjacencias = new ArrayList();
for(int i=0;i<arestas.size();i++){
aresta = this.getAresta(i);
if(aresta.getV1() == v){
adjacencias.add(aresta.getV2());
}
if(aresta.getV2() == v){
adjacencias.add(aresta.getV1());
}
}
return(adjacencias);
}
public int getQtdVertices(){
return(vertices.size());
}
}[/code]