Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTELIGENCIA ARTIFICIAL.
INGENIERIA EN SISTEMAS
INDICE
INDICE ............................................................................................................................................................................... 2
RECORRIDO EN ANCHURA
“En Ciencias de la Computación, Búsqueda en anchura (en inglés BFS – Breadth First Search) es
un algoritmo para recorrer o buscar elementos en un grafo (usado frecuentemente
sobre árboles). Intuitivamente, se comienza en la raíz (eligiendo algún nodo como elemento raíz en el
caso de un grafo) y se exploran todos los vecinos de este nodo. A continuación para cada uno de los
vecinos se exploran sus respectivos vecinos adyacentes, y así hasta que se recorra todo el árbol.”
Un recorrido en anchura se refiere a recorrer un grafo por niveles, es decir, partiendo de un nodo inicial
recorro todos sus vecinos, posteriormente los vecinos de los vecinos hasta que todos los nodos hayan
sido visitados.
RECORRIDO EN PROFUNDIDAD
“Una Búsqueda en profundidad (en inglés DFS o Depth First Search) es un algoritmo que permite
recorrer todos los nodos de un grafo o árbol (teoría de grafos) de manera ordenada, pero no uniforme.
Su funcionamiento consiste en ir expandiendo todos y cada uno de los nodos que va localizando, de
forma recurrente, en un camino concreto. Cuando ya no quedan más nodos que visitar en dicho camino,
regresa (Backtracking), de modo que repite el mismo proceso con cada uno de los hermanos del nodo
ya procesado.”
Un recorrido en profundidad es que partiendo de un nodo inicial, visite toda una rama, luego otra hasta
que todos los nodos hayan sido visitados.
A continuación un ejemplo sencillo de ambos recorridos realizado en Java:
Creamos un proyecto
Creamos el proyecto
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package practica_java;
/**
*
* @author UTS
*/
import java.util.ArrayList;
/**
* Clase Grafo
* @author UTS
*/
{1, 2, 1, 0, 0},
{0, 1, 2, 1, 0},
{1, 0, 1, 2, 1},
{0, 0, 0, 1, 2}};
public Grafo() {
return g;
visitiadoAnchura[nodoI] = true;
recorridos.add(nodoI);
cola.add(nodoI);
while (!cola.isEmpty()) {
//Se recorren los hijos del nodo actual de visita y se agrega el recorrido al la lista
recorridos.addAll(recorridoProfunidad(i));
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package practica_java;
import java.util.ArrayList;
/**
*
* @author FLIA BELTRAN MALDONA
*/
public class Practica_Java {
for(int i=0;i<enAnchura.size();i++){
System.out.print(""+enAnchura.get(i)+"");
System.out.println("");
for(int i=0;i<enProfundidad.size();i++){
System.out.print(""+enProfundidad.get(i)+"");