Elton,
Veja no link http://www.markwatson.com/opencontent/aisearch/index.html
uma exemplo de busca em java.
Waldomiro.
----- Original Message -----
From: "Elton de Albuquerque" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, May 04, 2001 7:12 PM
Subject: [java-list] Ajuda
> Olá pessoal!!!
>
> Sou novo na lista e tb na programação java.
>
> Programa na em C++, e além do mais não orientado!!!
>
> Fiz um pequeno programa pra calcular o menor caminho entre dois vértice
> de um grafo.
>
> Se alguém puder de dar um dica de como fazê-lo em java, ficarei muito
> agradecido!
>
> Obrigado!!!
>
> Elton
>
>
****************************PROGRAMA****************************************
**
>
> //Em 23/04/2001
> #include<iostream.h>
> #include<conio.h>
> #define TAM 30
> #define pinfinito 3.4e34
>
>
> struct vertex{ int ant,
> saiu;
> float peso;};
>
> void inicializamat(float[TAM][TAM],int);
> void inicializavet(vertex[TAM],int,int);
> void calcula(float[TAM][TAM],vertex[TAM],int,int,int,int&);
>
> void imprime(vertex[TAM],int i);
>
> void main()
> {
> vertex vertice[TAM];
> float caminho[TAM][TAM];
>
> int resultado[TAM],
> i,
> vertexinicio,
> vertexfim,
> nvertex; //armazema a quantidade de vertice do grafo
>
> cout<<" Informe a quantidade de vertice do grafo: ";
> cin>>nvertex;
>
> inicializamat(caminho,nvertex);
>
> cout<<"informe o vertice inicial e o final: ";
> cin>>vertexinicio>>vertexfim;
>
> inicializavet(vertice,vertexinicio,nvertex);
>
> calcula(caminho,vertice,nvertex,vertexinicio,vertexfim,i);
>
> if(i != vertexfim)
> cout<<"Nao exite caminho de "<<vertexinicio<<" e "<<vertexfim;
> else
> imprime(vertice,vertexfim);
>
>
> getch();
>
>
> }
>
> void inicializamat(float caminho[TAM][TAM], int n)
> {
> int i,
> j;
>
> for(i = 0; i < n; i++)
> {
> for(j = 0; j <n; j++)
> {
> clrscr();
> cout<<"Existe caminho entre o vertice "<<i<<" e "<<j<<":";
> cin>> caminho[i][j];
> }
> }
> }
>
> void inicializavet(vertex v[TAM], int vinicial, int qd)
> {
> for(int i = 0; i < qd; i++)
> {
> v[i].ant = -1;
> v[i].peso = -1.0;
> v[i].saiu = 0;//falso
> }
> v[vinicial].peso = 0.0;
> v[vinicial].saiu = 1;//verdadeiro
> }
>
> void calcula(float caminho[TAM][TAM], vertex vertice[TAM],int qd, int
> vi,int vf int& i)
> {
> int i = vi, //armazena a linha corrente
> menor_peso = -1;//armazena o vertice que e' atingido pelo vertice
> //atual e possui menor peso
>
> while(i != vf && vertice[i].peso != -1.0){
> for(int j = 0; j < qd; j++)
> {
>
> if(caminho[i][j] != -1.0)// existe caminho
> {
> if(vertice[j].peso == -1.0)
> {//ainda nao foi visitado
> vertice[j].ant = i;
> vertice[j].peso = caminho[i][j] + vertice[i].peso;
> menor_peso = j;
> }
> else
> {
> if(vertice[j].peso > caminho[i][j] + vertice[i].peso)
> {
> vertice[j].peso = caminho[i][j] + vertice[i].peso;
> vertice[j].ant = i;
> menor_peso = j;
> }
> }
> }
> }
> for( j = 0; j < qd; j++)
> {//procurar o indice do vertice que e' atingido com menor peso
>
> if(menor_peso == -1)
> {//o vertice[i], nao tem saida para nenhum outro vertice
> if(vertice[j].saiu == 0)
> menor_peso = j;
> }
> else{
> if(vertice[j].saiu == 0 && vertice[j].peso <
> vertice[menor_peso].peso && vertice[j].peso != -1.0)
> menor_peso = j;
> }
>
>
> }
> if(menor_peso == -1)
> {//percorre o vetor e nao encontra caminho
> vertice[i].peso = -1.0; //termina
> }
> else{
> vertice[menor_peso].saiu = 1;//verdadeiro
> i = menor_peso;
> menor_peso = -1;
> }
> }
>
> }
>
> void imprime(vertex vertice[TAM], int vf)
> {
> int pilha[30];
> int topo = 0;
>
> int corrente = vf;
> while(corrente != -1)
> {
> pilha[topo++] = corrente;
> corrente = vertice[corrente].ant;
> }
>
> while(topo != 0)
> {
> cout << pilha[--topo] << " ";
> }
> }
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------