Ola a todos,
Sou novo no forum e estou comecando a programar em java agora. E surgiu muitas duvidas.
Estou fazendo um trabalho de faculdade que consiste em mapear um quarteirao de uma região aqui de belo horizonte, utilizando grafos. Onde os vertices sao as esquinas das ruas e as arestas sao os nomes das ruas com sua respectiva distancia/peso.
Quem quiser ver o trabalho na integra encontra-se em: https://github.com/lucassimon/GrafosSavassi/blob/master/docs/443998_grafosTP1.pdf. Estou resolvendo o problema 1.
A modelagem ja esta feita: https://github.com/lucassimon/GrafosSavassi/blob/master/docs/modelagemQuarteiraoSavassi.png
O programa que estou desenvolvendo faz a leitura dos vertices e distancias de um arquivo chamado teste.txt, ele pega esses valores e joga em arrylist de vertices e de arestas.
Porem eu estou com duvida 02 coisas exatamente.
Quando executo a minha aplicacao.java ele me retorna pelo console do eclipse o seguinte
Tamanho da matriz de adjacencia:13
[ v1[ Peso:210, Peso:140], v2[ Peso:210, Peso:140, Peso:160], v3[ Peso:140, Peso:140, Peso:140, Peso:140], v4[ Peso:140, Peso:140], v5[ Peso:140, Peso:140, Peso:140], v6[ Peso:140, Peso:140, Peso:140, Peso:140], v7[ Peso:160, Peso:140, Peso:140, Peso:140], v8[ Peso:140, Peso:70], v9[ Peso:70, Peso:140], v10[ Peso:140, Peso:250], v11[ Peso:250, Peso:140, Peso:140], v12[ Peso:140, Peso:140, Peso:140], v13[ Peso:140, Peso:140]]
Matriz de Adjacencia:
0 1 1 1 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1 1 1 1
1 1 1 1 1 1 0 1 1 1 1 1 1
1 1 1 1 1 1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 0
public static void main(String[] args) {
Grafo testando = new Grafo();
testando.setVertices(LerDoArquivo.lerGrafo("teste.txt"));
List<Vertice> teste = testando.getVertices();
int tamanhoMatriz = teste.size();
System.out.println("Tamanho da matriz de adjacencia:"+tamanhoMatriz);
System.out.println(testando.getVertices());
algoritimos.matrizAdjacencia matrizAdjacencia = new matrizAdjacencia();
matrizAdjacencia.montarMatriz(testando,tamanhoMatriz);
Ou seja de acordo com a impressao acimaSystem.out.println(testando.getVertices()); ele gera a seguinte lista:
v1 -> (peso:210) ->(peso:140)
Porem eu nao consigo imprimir os vertices vizinhos, ja tentei colocar no arquivo vertice.java
que deveria ficar assim:
[ v1[ v2 Peso:210, v3 Peso:140],
v2[ v1 Peso:210, v3 Peso:140, v7 Peso:160],
@Override
public String toString() {
String s = " ";
s+= this.getDescricao() + this.getVizinhos() + this.getArestas();
return s;
}
Mas ele da um erro de excecao estranhissimo que nao faco a menor ideia do que seja:
Exception in thread “main” java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.(Unknown Source)
at java.lang.StringBuilder.(Unknown Source)
at estrutura.Vertice.toString(Vertice.java:308)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.util.AbstractCollection.toString(Unknown Source)
at java.lang.String.valueOf(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source) …
1 pergunta) Como eu pego os valores dessa sublista para imprimir corretamente a lista dos vertices?
2 pergunta) Eu preciso gerar uma matriz de adjacencia. E novamente eu preciso pegar os valores dos vizinhos.
por exemplo: na lista v1 eu tenho as listas v2, e v3. Eu preciso pegar esse v1 e v2 e verificar se ele possui aresta. se possuir eu coloco na matriz de adjacencia o valor 1.
Mais precisamente eu preciso pegar o v1, e v2; e depois v1 e v3.
Aqui nao sei se tem jeito e talvez seja ate mais facil, seria transformar essa LISTA de vertices em um array multidimensional automatico. se sim como faz para utilizar o comando .toArray()?
Todos os codigos se encontram aqui:
https://github.com/lucassimon/GrafosSavassi
Fico no aguardo, talvez nao tenha explicado direito ou deve ter ficado confuso o texto…se tiver ficado assim manda uma resposta aew.
Vallew.