Busca em Profundidade numa matriz

0 respostas
T

bom gente, preciso de um help... eu tenho uma busca em profundidade q funciona uma matriz, pegando o valor inserido nela... mas eu preciso q ela funciona mostrando as posições da matriz.... pois eh uma matriz de 0 e 1 (um labirinto 0 espaço vaizio e 1 parede) só q não tou conseguindo desembolar...

esse eh o meu grafo:

public class Digrafo
{
  int numVertice;
  int matAdj[][];

  public Digrafo(int num)
  {
     int i,j;
     this.numVertice=num;
     int matAdj[][]=new int[num+1][num+1];
     for(i=1;i<=num;++i)
        for(j=1;j<=num;++j)
           matAdj[i][j]=0;
      this.matAdj = matAdj;
  }

  public void insereVertice(int v1, int v2)
  {
    if (v1<=numVertice && v2<=numVertice)
       matAdj[v1][v2]=1;
  }

  public void retiraVertice(int v1, int v2)
  {
    if (v1<=numVertice && v2<=numVertice)
       matAdj[v1][v2]=0;
  }

  public String Grafo()
  {
    int i,j;
    String x="";
    for(i=1;i<=numVertice;++i)
       for(j=1;j<=numVertice;++j)
          if(matAdj[i][j]==1)
            x=x+"\n("+i+", "+j+")";
    return x;
  }

}
esse eh a minha busca...
private void jBtnBuscaemProfundidade_actionPerformed(ActionEvent e)
  {
     int visited[] = new int[G.numVertice+1];
     int pai[]    = new int[G.numVertice+1];
     int p[]   = new int[G.numVertice*G.numVertice+1];
     int orig =Integer.parseInt(jTxtFldVertice1.getText());
     int dest =Integer.parseInt(jTxtFldVertice2.getText());
     int topo=1, atual, i;
     boolean encontrou = false;
     String caminho = "";
     for (i=1;i<=G.numVertice;++i)
     {
       pai[i]=0;
       visited[i]=0;
     }
     for (i=1;i<=G.numVertice*G.numVertice;++i)
       p[i]=0;
     p[topo]=orig;
     while (topo>0)
     {
       atual = p[topo];
       --topo;
       if (atual == dest)
       {
         encontrou = true;
         break;
       }
       if (visited[atual]==0)
          for (i=1; i<=G.numVertice;++i)
              if (G.matAdj[atual][i]==1)
              {
                 ++topo;
                 p[topo]=i;
                 if (pai[i]==0)
                    pai[i]=atual;
              }
     }
     if (encontrou)
     {
        topo=0;
        caminho=""+dest;
        i=pai[dest];
        while (i!=orig)
        { ++topo;
          caminho=i+"\n"+caminho;
          i=pai[i];
        }
        caminho=orig+"\n"+caminho;
        JOptionPane.showMessageDialog(null,caminho);
     }
  }

grato aew...
valew

Criado 13 de setembro de 2007
Respostas 0
Participantes 1