Professional Documents
Culture Documents
1
Bsquedas Bsicas
LNMV
2
Temas:
1. Bsqueda de rbol
2. Bsqueda en profundidad
3. Bsqueda en amplitud
4. Bsqueda no determinstica
LNMV
3 1. Bsqueda de rbol
LNMV
4 Algunos trminos de rbol
rbol Binario:
Es aquel que consta de dos subrboles.
Los rboles binarios se pueden recorrer de tres formas: Inorden,
preorden y en posorden.
LNMV
5 Algunos trminos de rbol
LNMV
6 Algunos trminos de rbol
Nodo Padre Es aquel que tiene por lo menos una rama que lo
una con otro nodo.
Raz del rbol: todos los rboles que no estn vacos tienen un
nico nodo raz. Todos los dems elementos o nodos se derivan o
descienden de l.
LNMV
7 Algunos trminos de rbol
Nodo Hijo : Es aquel que tiene por lo menos una rama que una a
otro nodo con ste.
rbol binario igual: Dos rboles binarios son iguales si los dos son
vacos o si cada una de las subramas son iguales en contenido,
relacin y parentesco.
LNMV
11 Operaciones bsicas de las Estructuras de Datos
LNMV
12
LNMV
13 A. Recorrido en profundidad - Depth First Search
A Continuacin, un ejemplo.
LNMV
14 A. Recorrido en profundidad - Depth First Search
1(2,3,4,5)
1,2,3(2,6,8)
7 1,2,3,6 (7)
2
3 6 1,2,3,6,7 (2)
1,2,3,6,7,8(6)
1
1,2,3,6,7,8,4(3,8)
4 1,2,3,6,7,8,4(3, 8)
5 8
9 1,2,3,6,7,8,4, 5
1,2,3,6,7,8,4, 5,9
LNMV
15 Formas de Recorrerlo en Cdigo
LNMV
int id=0;
int val[V];
16 void buscar() Algoritmo Recorrido en profundidad
{ int k;
for (k=1; k<=V; k++)
val[k]=0;
LNMV
18
LNMV
19 Recorrido en anchura - Breadth-First Search
A continuacin, un ejemplo
LNMV
20 Recorrido en anchura - Breadth-First Search
A B C
D E
LNMV
21 Recorrido en anchura - Breadth-First Search
A
Utilizando una cola:
C ABCDEMFGNH
B
Salida anchura: A B C D E M F
M GNH
D E
F G N
H
LNMV
22 Formas de Recorrer un grafo en anchura
LNMV
struct cola *cola;
LNMV
24 Bsqueda no determinstica
QU ES UN ALGORITMO NO DETERMINISTA?
LNMV
25 4. Bsqueda no determinstica
LNMV
26 Bsqueda no determinstica
3. IF objetivo alcanzado
THEN exito;
ELSE falla;
LNMV
27
RECORRIDOS EN GRAFOS
LNMV
Recorrer un grafo consiste en visitar cada uno de los nodos a
travs de las aristas del mismo. Se trata de realizar recorridos de
manera eficiente. Para ello, se pondr una marca en un nodo en
el momento en que es visitado, de tal manera que, inicialmente,
no est marcado ningn nodo del grafo.
a. Recorrido en profundidad
28 b. Recorrido en anchura
LNMV
RECORRIDO o BUSQUEDA EN PROFUNDIDAD
LNMV
RECORRIDO o BUSQUEDA EN PROFUNDIDAD
LNMV
RECORRIDO o BUSQUEDA EN PROFUNDIDAD
31
LNMV
1. Se selecciona
PASOS cualquier nodo v
V como punto
de partida del
recorrido
5. El algoritmo
2. Se marca el
termina cuando
nodo para
estn marcados
indicar que ha
todos los nodos
sido visitado
de G
33
4. Cuando no haya 3. Se busca un
nodos adyacentes a nodo adyacente a v
v sin marcar, se que no haya sido
buscaun nodo no visitado, se marca
visitado y se contina y se contina a
a partir de l. partir de l.
LNMV
34 EJEMPLO: Como es un grafo no dirigido,
podemos utilizar el principio de
Pre-Orden para abarcar el mximo
1
de nodos
2 11
6
3
5 7 10
4 8 9
Pre-Orden
35
36
38
LNMV
METODO
LNMV
42 EJEMPLO
1
A
2 4
3
B C D
5 6 7
E G H
8 9 10
I J K
11
Solucin F
A-B-C-D-E-G-H-I-J-K-F
LNMV
Bosque de extensin en anchura
43
LNMV
44 EJEMPLO
1
Nivel 1
A B D
Nivel 2
D 3
2
H B C 5
4
Nivel 3
C
H R Nivel 4
T R 6 7
A T Nivel 5
45
LNMV
private void recorrer_ancho(int[][] matriz, LinkedList<String> n, int[] marc, int i)
{
marc[i]=1;
LinkedList<Integer>o=new LinkedList<Integer>();/*lista de aristas*/
LinkedList<Integer>cola=new LinkedList<Integer>();/*guardar aristas*/
cola.add(i);
while (!cola.isEmpty())
{
o.clear();
int vert=(int)cola.getFirst();
JOptionPane.showMessageDialog(null, (String)n.get(vert));
cola.removeFirst();
for(int j=0;j<n.size();j++)
{
if(matriz[vert][j]==1)/*verifica conexiones y las guarda en o*/
47 {
o.add(j);
}
}
LNMV
for(int j=0;j<o.size();j++)
{
if(marc[(int)o.get(j)]==0)
/*verifica si no se visito lo marca y lo guarda en la
cola*/
{
marc[(int)o.get(j)]=1;
cola.add((int)o.get(j));
}
}
}
48
}
LNMV
BIBLIOGRAFIA
http://www.slideshare.net/evansbv/recorrido-de-grafos
http://www.cs.us.es/cursos/cc-2007/varios/dfs.pdf
http://es.wikipedia.org/wiki/B%C3%BAsqueda_en_profundidad
http://www.dcc.uchile.cl/~cc30a/apuntes/Grafos/#2
http://books.google.com.co/books?id=2Fwqu0XE77gC&pg=PA379
&lpg=PA379&dq=estructuras+de+datos+recorridos+grafos&source=
bl&ots=6V346r-CUD&sig=5rFZ4B2sfTMCKeRbw-
s4IZodAFg&hl=es&ei=lCbSSsi2Op2qtgfTkJHCBw&sa=X&oi=book_
result&ct=result&resnum=1&ved=0CAgQ6AEwAA#v=onepage&q=e
structuras%20de%20datos%20recorridos%20grafos&f=false
49 http://www.aic.uniovi.es/edatos/apuntes.php?estado=tema73&estil
o=chicle
http://www.escet.urjc.es/~rmartine/EDAA-grafos-1.pdf
http://di002.edv.uniovi.es/~paule/material/GrafosIV.pdf
LNMV
http://www.algoritmia.net/articles.php?id=18
http://es.wikipedia.org/wiki/B%C3%BAsqueda_en_anchura
http://es.wikibooks.org/wiki/Estructuras_de_datos_din%C3%A1
micas/Algoritmos_de_b%C3%BAsqueda
http://www.dma.fi.upm.es/java/matematicadiscreta/busqueda/
http://docencia.udea.edu.co/regionalizacion/teoriaderedes/infor
maci%F3n/C3_Profundidad.pdf
http://www.cs.us.es/cursos/cc-2007/varios/bfs.pdf
http://80.38.92.221/uned/Prog3/recorridoprofundidad.pdf
http://www.slideshare.net/evansbv/recorridos-de-grafos/
http://www.algoritmia.net/articles.php?id=18
50
LNMV