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] 
-------------------------------------------------------------------------

Responder a