tema 21. búsqueda dicotómica en vectores...
TRANSCRIPT
![Page 1: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/1.jpg)
1Diego Gutiérrez
Tema 21. Búsqueda dicotómica en vectores ordenados
![Page 2: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/2.jpg)
3Diego Gutiérrez
Por qué algoritmos de búsqueda?
![Page 3: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/3.jpg)
4Diego Gutiérrez
![Page 4: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/4.jpg)
5Diego Gutiérrez
Habíamos visto:
Búsqueda secuencial o lineal en un fichero secuencial:Con garantía de éxitoSin garantía de éxito
Búsqueda secuencial o lineal en una tabla:Búsqueda secuencial o lineal (con y sin garantía de éxito)Búsqueda lineal con centinelaBúsqueda lineal por eliminación
![Page 5: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/5.jpg)
6Diego Gutiérrez
Habíamos visto:
Búsqueda secuencial o lineal en un fichero secuencial:Con garantía de éxitoSin garantía de éxito
Búsqueda secuencial o lineal en una tabla:Búsqueda secuencial o lineal (con y sin garantía de éxito)Búsqueda lineal con centinelaBúsqueda lineal por eliminación
![Page 6: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/6.jpg)
7Diego Gutiérrez
Búsqueda secuencial en una tabla sin garantía de éxito:
algoritmo buscarEnTabla (E T:tpTabla; ES éxito:booleano; ES datoBuscado:tpDato){ Pre: n≥1Post: el valor de “éxito” es cierto si y sólo si alguno de los datos almacenados en “T”
satisface la condición de búsqueda; en tal caso el valor de “datoBuscado” es igual a uno de ellos y, en caso contrario, su valor queda indefinido }
variablesíndice: tpÍndice;
principio{ La búsqueda empieza por el índice menor }índice:=1;{ Realiza una búsqueda lineal en T }mientrasQue ¬(índice=n) Y ¬condiciónDeBúsqueda(T[índice]) hacer
índice:=índice+1;finMQ{ Se satisface (índice=n) O condiciónDeBúsqueda(T[índice]) }{ Discrimina si ha habido éxito en la búsqueda }si condiciónDeBúsqueda(T[índice])
entonces datoBuscado:=T[índice]; éxito:=cierto;si_no éxito:=falso;
finSiFin.
![Page 7: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/7.jpg)
8Diego Gutiérrez
![Page 8: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/8.jpg)
9Diego Gutiérrez
Si los datos están ordenados, hay otros algoritmos más eficientes!
¿Cuál es la idea básica?
Reducir el tamaño del problema en cada iteración
Búsqueda binaria o dicotómica: reducir el tamaño del problema a la mitad en cada iteración
Divide y vencerás…
![Page 9: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/9.jpg)
10Diego Gutiérrez
http://www.di.uniovi.es/~dani/asignaturas/transparencias-leccion17.PDF
![Page 10: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/10.jpg)
11Diego Gutiérrez
Cuando el espacio de búsqueda quede reducido a un único elemento podrá concluirse, de forma inmediata, si ha habido éxito o fracaso en la búsqueda del dato sin más que comprobar si dicho elemento satisface o no la condición de búsqueda.
Conviene comparar este algoritmo con los algoritmos de búsqueda lineal presentados en los apartados previos en los que, en cada iteración, sólo se reduce en una unidad la dimensión del espacio de búsqueda.
![Page 11: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/11.jpg)
12Diego Gutiérrez
Búsqueda lineal:http://www.cosc.canterbury.ac.nz/mukundan/dsal/LSearch.html
Búsqueda dicotómica:http://desdemona.la.asu.edu/~mat243/applets/BS/BSApplet.phphttp://www.cosc.canterbury.ac.nz/mukundan/dsal/BSearch.html
![Page 12: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/12.jpg)
13Diego Gutiérrez
El diseño interno de un algoritmo de búsqueda binaria o dicotómica debe resolver, esencialmente, el problema de la gestión de los valores de los índices, I y S, que definen el espacio de búsqueda T[I..S] en cada iteración.
10 45 71 88 102 102 221 234Buscar el número 71
![Page 13: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/13.jpg)
14Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
I<>S
![Page 14: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/14.jpg)
15Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
M
I<>S
![Page 15: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/15.jpg)
16Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
M
I S
I<>S
![Page 16: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/16.jpg)
17Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
M
I S
I<>S M
![Page 17: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/17.jpg)
18Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
M
I S
I<>S M
I S
![Page 18: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/18.jpg)
19Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
M
I S
I<>S M
I S
M
![Page 19: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/19.jpg)
20Diego Gutiérrez
BÚSQUEDA DICOTÓMICA
V[3] = dato buscado ?→ SI : ÉXITO→ NO : FRACASO
1 2 3 4 5 6 7 8
V 10 45 71 88 102 102 221 234
WHILE I S
M
I S
I<>S M
I S
M
I, S
![Page 20: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/20.jpg)
21Diego Gutiérrez
Recordemos…
En general, asociado a cada elemento (tanto en ficheros como en tablas) suele existir un campo relevante que lo distingue y sobre el que basamos la búsqueda
PIN de un estudiante
A este campo se le llama clave
En nuestro contexto:La clave de un dato simple es el propio datoLa clave de un dato estructurado de tipo registro es uno de sus campos
Los algoritmos de búsqueda funcionan comparando la clave de cada uno de los elementos con la que buscamos
![Page 21: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/21.jpg)
22Diego Gutiérrez
algoritmo buscarEnTabla (E T:tpTabla; E clave:tpClave; S éxito:booleano; S datoBuscado:tpDato){ Pre: los datos de la tabla “T” están ordenados según valores no decrecientes (“≤”) de sus atributos
“clave”Post: el valor de “éxito” es cierto si y sólo si alguno de los datos almacenados en “T” presentan un valor
de “clave” igual al parámetro de búsqueda; en tal caso el valor de “datoBuscado” es igual a uno de ellos y, en caso contrario, su valor queda indefinido }
variablesI,S: tpÍndice; { Límites del espacio de búsqueda }medio: tpÍndice; { Punto medio del espacio de búsqueda }
principioI:=1; S:=n; { Se acota el espacio inicial de búsqueda }mientrasQue ¬(I=S) hacer { Se realiza una búsqueda binaria o dicotómica }
medio:= (I+S) div 2;si clave≤T[medio].clave
entonces S:=medio;si_no I:=medio+1;
finSifinMQ{ Al llegar a I=S, se discrimina si ha habido éxito en la búsqueda }si clave=T[I].clave
entonces datoBuscado:=T[I]; éxito:=cierto;si_no éxito:=falso;
finSiFin.
![Page 22: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/22.jpg)
23Diego Gutiérrez
Vectores: operaciones de búsqueda y fusión
1 2 3 4 5 6 7 8
10 45 71 88 102 102 221 234
∆I ∆S
∆I ∆S
∆I ∆S
∆I ∆S∆I∆S
1 2 3 4 5 6 7 8
10 45 74 88 102 102 221 234
∆I ∆S∆I ∆S
∆I∆S
![Page 23: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/23.jpg)
24Diego Gutiérrez
Por qué hacer esto?
Diccionario: parece lógico…Ejemplo anterior: no tan evidente…
![Page 24: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/24.jpg)
25Diego Gutiérrez
Los algoritmos de búsqueda secuencial en tabla ordenada requieren, en el caso peor y en casos intermedios, un tiempo de ejecución que crece lineal o proporcionalmente al valor de la dimensión n de la tabla.
Buscar en una tabla de 10 millones de elementos lleva, esencialmente, 10 veces más que en una de un millón (de media)
Los algoritmos de búsqueda dicotómica requieren un tiempo de ejecución proporcional a log(n)
Buscar en una tabla de 10 millones de elementos lleva, 1.16 vecesmás que en una de un millón (de media)
![Page 25: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/25.jpg)
26Diego Gutiérrez
Supongamos un segundo para buscar en un millón de elementos
Lineal Dicotómica2 millones 2 sg 1.05 sg4 millones 4 sg 1.10 sg64 millones 64 sg 1.30 sg
Y si no, probad a buscar una palabra en el diccionario secuencialmente!
![Page 26: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/26.jpg)
27Diego Gutiérrez
Supongamos que el tiempo de ejecución de cada algoritmo es proporcional al número de veces que deben iterar sus respectivos bucles de búsqueda…
…y que cada iteración del algoritmo secuencial es 100 veces más rápida que la del algoritmo de búsqueda dicotómica.
![Page 27: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/27.jpg)
28Diego Gutiérrez
![Page 28: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/28.jpg)
29Diego Gutiérrez
Ejercicio planteado:
Si existen elementos repetidos en la tabla, ¿cuál devolverá el algoritmo?
Supongamos una tabla muy grande con registros ciudades; cada registro contiene el nombre de la ciudad y el país al que pertenece. La tabla está ordenada por orden alfabético del país, y puede haber más de una ciudad perteneciente a un país.Escribir un programa que saque por pantalla los nombres de todas las ciudades de la tabla que pertenezcan a un país suministrado como parámetro
![Page 29: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/29.jpg)
30Diego Gutiérrez
Ejercicio planteado:
La clave de búsqueda es por tanto el paísRegistro.nombrePais
Una vez encontrado por búsqueda dicotómica (“tabla muy grande”), dado que no se puede saber qué elemento de todos los posibles va a devolver el algoritmo, podemos realizar una búsqueda secuencial a izquierda y derecha del elemento devuelto e ir sacando por pantalla las ciudades mientras pertenezcan al mismo país
![Page 30: Tema 21. Búsqueda dicotómica en vectores ordenadosgiga.cps.unizar.es/~diegog/ficheros/teaching/21.Busqueda... · 2007-12-17 · Los algoritmos de búsqueda secuencial en tabla ordenada](https://reader033.vdocuments.co/reader033/viewer/2022042110/5e8ba19876dd206af5624e13/html5/thumbnails/30.jpg)
31Diego Gutiérrez
Conclusiones: