algoritmodebusquedaporamplitud

download algoritmodebusquedaporamplitud

of 2

Transcript of algoritmodebusquedaporamplitud

  • 7/24/2019 algoritmodebusquedaporamplitud

    1/2

    import java.util.ArrayList;public class Grafo {

    public int[][] g = {{2, 1, 0, 1, 0}, {1, 2, 1, 0, 0}, {0, 1, 2, 1, 0}, {1, 0, 1, 2, 1}, {0, 0, 0, 1, 2}}; private boolean[] visitiadoAnchura = new boolean[5]; private boolean[] visitiadoProfunidad = new boolean[5];

    public Grafo() { }

    public int[][] getG() { return g; }

    public ArrayList recorridoAnchura(int nodoI) {//Lista donde guardo los nodos recorridos ArrayList recorridos = new ArrayList();//El nodo inicial ya est visitado visitiadoAnchura[nodoI] = true;//Cola de visitas de los nodos adyacentes

    ArrayList cola = new ArrayList();//Se lista el nodo como ya recorrido recorridos.add(nodoI);//Se agrega el nodo a la cola de visitas cola.add(nodoI);//Hasta que visite todos los nodos while (!cola.isEmpty()) { int j = cola.remove(0); //Se saca el primero nodo de la cola//Se busca en la matriz que representa el grafo los nodos adyacentes for (int i = 0; i < g.length; i++) {//Si es un nodo adyacente y no est visitado entonces if (g[j][i] == 1 && !visitiadoAnchura[i]) { cola.add(i);//Se agrega a la cola de visitas

    recorridos.add(i);//Se marca como recorrido visitiadoAnchura[i] = true;//Se marca como visitado } } } return recorridos;//Devuelvo el recorrido del grafo en anchura }

    public ArrayList recorridoProfunidad(int nodoI) {//Lista donde guardo los nodos recorridos ArrayList recorridos = new ArrayList(); visitiadoProfunidad[nodoI] = true;//El nodo inicial ya est visitado//Cola de visitas de los nodos adyacentes

    ArrayList cola = new ArrayList(); recorridos.add(nodoI);//Listo el nodo como ya recorrido cola.add(nodoI);//Se agrega el nodo a la cola de visitas while (!cola.isEmpty()) {//Hasta que visite todos los nodos int j = cola.remove(0);//Se saca el primer nodo de la cola //Se busca en la matriz que representa el grafo los nodos adyacentes for (int i = 0; i < g.length; i++) {//Si es un nodo adyacente y no est visitado entonces if (g[j][i] == 1 && !visitiadoProfunidad[i]) { cola.add(i);//Se agrega a la cola de visita

  • 7/24/2019 algoritmodebusquedaporamplitud

    2/2

    //Se recorren los hijos del nodo actual de visita y se agrega el recorrido al lalista recorridos.addAll(recorridoProfunidad(i)); visitiadoProfunidad[i] = true;//Se marca como visitado } } } return recorridos;//Se devuelve el recorrido del grafo en profundidad }}

    Para porbar los mtodos se ejecuta el siguiente cdigo:

    public class Prueba {

    /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Grafo g=new Grafo(); ArrayList enAnchura=g.recorridoAnchura(0);//Nodo inicial 0 System.out.println("Recorrido en anchura de un grafo representado como matriz: ");

    for(int i=0;i