SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Recursividad
Divide y Vencerás

Programación
Lester Sánchez
Universidad de La Habana
2013 – 2014
Divide y Vencerás
1. Dividir el problema complejo en subproblemas
simples
2. Conquistar (resolver) los problemas simples

3. Vencer (resolver) el problema original a partir de
las soluciones de los problemas simples

Programación, UH 2013-2014

2
Estructura general de un algoritmo
recursivo
Algoritmo RECURSIVO
IF (Problema Simple)

Resolverlo directamente
Dividir

ELSE
Dividir en subproblemas P1, P2, ..., Pn

Resolver(P1); Resolver(P2); ... Resolver(Pn)
Conquistar

Combinar las soluciones de cada subproblema
Vencer

Programación, UH 2013-2014

3
Composition with Large Red Plane, Yellow, Black, Gray and Blue
Piet Mondrian, 1921
Quiero generar esta figura
Programación, UH 2013-2014

5
1

Problema Inicial:
Dividir el rectángulo
en varias regiones

Subproblema: Dividir el
rectángulo en dos rectángulos
más pequeños, y resolver el
mismo problema en cada uno

Programación, UH 2013-2014

6
1

Subproblema 1:
Resolverlo de la
misma forma
Caso Base: Cuando
Alto o Ancho sean
demasiado pequeños

Subproblema 2: Caso
Base. No hay que
dividirlo más

2

Programación, UH 2013-2014

7
1

2

4

7

8

6

10

5

1

9

4

11
3

3

2

6

5

7
9

8
k Problema Complejo
k Problema Simple (Caso Base)

10

11

Cada problema complejo se divide en dos nuevos subproblemas
Programación, UH 2013-2014

8
Ejemplo: Mondrian

Dividir los dos
nuevos rectángulos
que se forman

Obtener
punto de
división
Dividir los dos
nuevos rectángulos
que se forman

Dibujar
línea
divisoria
Programación, UH 2013-2014

9
DEMO
Mondrian

Programación, UH 2013-2014

10
Ejemplo: Máximo de un Array
4, 17, 44, 10, 30, 25, 6 Max (44, 25)=44
Max (17, 44)=44

Max (25, 6)=25

20, 25, 6

4, 17, 44, 10
Max (4, 17)=17

Max (44, 10)=44

4 17
4

17

44 10
44

10

Max (20, 25)=25

20 25
20

6

25

Cada problema se divide en dos nuevos subproblemas (buscar máximo en cada mitad)
Hasta que la mitad tenga 1 elemento (caso base), el máximo

Programación, UH 2013-2014

11
Ejemplo: Máximo de un Array
El método público
se limita a invocar
al recursivo con los
parámetros iniciales
Método Recursivo.
Recibe índices para
limitar el rango
donde buscar
Si hay un único
elemento, es el máximo

Programación, UH 2013-2014

El máximo del array es el
máximo de los máximos
de cada mitad

12
Búsqueda Binaria
Ejemplos de la vida cotidiana
‐ Buscar una palabra en un diccionario
‐ Buscar un nombre en el directorio telefónico
‐ Buscar una página de un libro
‐ Retomar la visualización de un video

En general optimizamos la búsqueda cuando los
elementos están ordenados
Optimización en este caso significa hacer menos comparaciones para
encontrar el elemento… o determinar que no está
Programación, UH 2013-2014

13
Búsqueda Binaria
0

1

4

6

2

3

4

5

6

7

8

9

10 12 17 25 29 30 41 44

29 > 17

25 29 30 41 44

29 < 30

25 29

29 > 25

29

29 = 29

Se encontró el elemento haciendo solo 4 comparaciones!
Programación, UH 2013-2014

14
Búsqueda Binaria
0

1

4

6

2

3

4

5

6

7

8

9

10 12 17 25 29 30 41 44

28 > 17

25 29 30 41 44

28 < 30

25 29

28 > 25

29

28 != 29

Se determinó que el elemento no está haciendo solo 4 comparaciones!

Programación, UH 2013-2014

15
Búsqueda Binaria
1

2

3

4

5

6

7

8

…

n

n/2

(n/2)/2 = n/4 = n/22
((n/2)/2)/2 = n/8 = n/23
.
.
.

Cantidad de elementos
del nuevo fragmento
Cuando n/2k = 1 no hay
nada más que dividir

(((n/2)/2)/2) … /2 = n/2k
k es la cantidad
máxima de divisiones

Programación, UH 2013-2014

16
Búsqueda Binaria

O sale por aquí
Buscar en la 2da mitad

Buscar en la 1ra mitad
O sale por aquí
Programación, UH 2013-2014

17
Ordenación por Mezcla (Merge
Sort)
Si se tienen dos arrays ordenados, se pueden mezclar
de forma tal que el array resutante siga ordenado
ALGORITMO RECURSIVO
1. Dividir el array en dos mitades
2. Ordenar cada mitad de la misma forma
3. Mezclar las dos mitades
4. Una mitad de 1 elemento está ordenada

Programación, UH 2013-2014

18
Ejemplo: Ordenación por Mezcla
38

38

43

3

43

27
27

38
27

43

27

38

27

3

43

38

10

82

38

10

82

9
27

10

82

9

43

9

10

82

9

3

27

82

9

3

3
Programación, UH 2013-2014

9
9

43

38
3

3

10

43

82

82
19
Ordenación por Mezcla
Se utiliza para
hacer la mezcla

Si el fragmento tiene un solo
elemento, está ordenado!
Ordenar la 1ra mitad
Ordenar la 2da mitad
Mezclar las dos
mitades ordenadas
Programación, UH 2013-2014

20
Ordenación por Mezcla

Copiar los restantes
de la 1ra mitad
Copiar los restantes
de la 2da mitad
Copiar el fragmento
ordenado al array original

Programación, UH 2013-2014

21
Clase Práctica
Implementar la búsqueda en un array desordenado
int Buscar (int[] a, int n)
Determinar cantidad mínima de inserciones requeridas para
convertir una cadena en palíndromo
Ejemplo: A la cadena “abcb” basta con insertarle una “a” por
detrás para convertirla en palíndromo (abcba) y a “abecba”
basta con insertarle una “e” en el medio (abeceba) o una “c”
(abcecba).
int InsercionesPalindromo(string s)
Programación, UH 2013-2014

22
Clase Práctica
Implemente el algoritmo de ordenación QuickSort.
void QuickSort(int[] a)
El QuickSort se basa en la idea de reorganizar los elementos
de un array, seleccionando un elemento (pivote) y colocando
todos los menores que él al inicio del array y los mayores e
iguales al final. Implemente esta estrategia en un algortimo
recursivo utilizando la técnica de divide y vencerás.

Programación, UH 2013-2014

23
Clase Práctica
Un TAXISTA se desplaza por una ciudad en la que solo está
permitido conducir hacia el ESTE y hacia el SUR. Calcule la
cantidad de caminos desde un origen hasta un destino.

int CantidadCaminos(int xOrig, int yOrig, int
xDest, int yDest)
Calcule la cantidad de cadenas balanceadas que pueden
formarse con n pares de paréntesis.
int CadenasBalanceadas(int n)

Programación, UH 2013-2014

24
Clase Práctica
Implemente un método que imprima en la Consola la
descomposición en sumandos de un número n.
Ejemplo: n = 5
1+1+1+1+1
1+1+1+2
1+2+2
1+1+3
1+4
2+3
5
void DescomposicionSumandos(int n)

Programación, UH 2013-2014

25

Weitere ähnliche Inhalte

Was ist angesagt?

Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 
Ejercicios resueltos de c++
Ejercicios resueltos de c++Ejercicios resueltos de c++
Ejercicios resueltos de c++Jhon TRUJILLO
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Algoritmo congruencial aditivo
Algoritmo congruencial aditivoAlgoritmo congruencial aditivo
Algoritmo congruencial aditivoEwing Ma
 
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Stalin Eduardo Tusa Vitar
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numericomorenito9001
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraAlexandraMolinaSanchez
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOWilmer Quintero
 
Desarrollo de lógica algorítmica
Desarrollo de lógica algorítmicaDesarrollo de lógica algorítmica
Desarrollo de lógica algorítmicaOmar B.
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Simeon Bordones
 
ANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOSANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOSEvans Balcazar
 
Sincronizacion de Procesos
Sincronizacion de ProcesosSincronizacion de Procesos
Sincronizacion de Procesosmastermind87
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSlorenapardo
 

Was ist angesagt? (20)

Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
Ejercicios resueltos de c++
Ejercicios resueltos de c++Ejercicios resueltos de c++
Ejercicios resueltos de c++
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Algoritmo congruencial aditivo
Algoritmo congruencial aditivoAlgoritmo congruencial aditivo
Algoritmo congruencial aditivo
 
Arboles y grafos
Arboles y grafosArboles y grafos
Arboles y grafos
 
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numerico
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Trabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandraTrabajo de compiladores completo alexandra
Trabajo de compiladores completo alexandra
 
ORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIOORDENAMIENTO POR INTERCAMBIO
ORDENAMIENTO POR INTERCAMBIO
 
Desarrollo de lógica algorítmica
Desarrollo de lógica algorítmicaDesarrollo de lógica algorítmica
Desarrollo de lógica algorítmica
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos
 
ANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOSANALISIS DE ALGORITMOS
ANALISIS DE ALGORITMOS
 
Sincronizacion de Procesos
Sincronizacion de ProcesosSincronizacion de Procesos
Sincronizacion de Procesos
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
 

Ähnlich wie Recursividad (Divide y Vencerás)

Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)
Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)
Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)ArmandoC42
 
Guia didactica final numeros enteros z
Guia didactica final numeros enteros zGuia didactica final numeros enteros z
Guia didactica final numeros enteros zandr3ava
 
Guia didactica final
Guia didactica finalGuia didactica final
Guia didactica finalandr3ava
 
Guia didactica 1
Guia didactica 1Guia didactica 1
Guia didactica 1andr3ava
 
Solucionar problemas por_medio_de_algoritmos
Solucionar problemas por_medio_de_algoritmosSolucionar problemas por_medio_de_algoritmos
Solucionar problemas por_medio_de_algoritmosEspitiaGiancarlo
 
jaisan
jaisanjaisan
jaisanjai
 
Tema 3 - Técnicas básicas de diseño de algoritmos
Tema 3 - Técnicas básicas de diseño de algoritmosTema 3 - Técnicas básicas de diseño de algoritmos
Tema 3 - Técnicas básicas de diseño de algoritmosPablo Haya
 
Clase 1 álgebra 2010 (pp tminimizer)
Clase 1 álgebra 2010 (pp tminimizer)Clase 1 álgebra 2010 (pp tminimizer)
Clase 1 álgebra 2010 (pp tminimizer)Karla Martinez
 
ARITMETICA 1 ejercicios de aplicacion(1).docx
ARITMETICA 1 ejercicios de aplicacion(1).docxARITMETICA 1 ejercicios de aplicacion(1).docx
ARITMETICA 1 ejercicios de aplicacion(1).docxMargotGomez2
 
POLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdf
POLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdfPOLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdf
POLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdfCamilaLpez87
 
Modulo estructura de_datos_2014
Modulo estructura de_datos_2014Modulo estructura de_datos_2014
Modulo estructura de_datos_2014Carlos Morales
 
Presentaciones exitosas
Presentaciones exitosasPresentaciones exitosas
Presentaciones exitosasJanninaD
 
Marian Dominguez
Marian DominguezMarian Dominguez
Marian DominguezJanninaD
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosWilliam Diaz S
 

Ähnlich wie Recursividad (Divide y Vencerás) (20)

Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)
Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)
Centro de estudios_tecnologicos_industril_y_de_servicios_no(2)
 
Guia didactica final numeros enteros z
Guia didactica final numeros enteros zGuia didactica final numeros enteros z
Guia didactica final numeros enteros z
 
Guia didactica final
Guia didactica finalGuia didactica final
Guia didactica final
 
Guia didactica 1
Guia didactica 1Guia didactica 1
Guia didactica 1
 
Solucionar problemas por_medio_de_algoritmos
Solucionar problemas por_medio_de_algoritmosSolucionar problemas por_medio_de_algoritmos
Solucionar problemas por_medio_de_algoritmos
 
jaisan
jaisanjaisan
jaisan
 
Tema 3 - Técnicas básicas de diseño de algoritmos
Tema 3 - Técnicas básicas de diseño de algoritmosTema 3 - Técnicas básicas de diseño de algoritmos
Tema 3 - Técnicas básicas de diseño de algoritmos
 
ECUACIONES LINEALES 2º
ECUACIONES LINEALES  2ºECUACIONES LINEALES  2º
ECUACIONES LINEALES 2º
 
Solucionario Guia Ipn 2011 - Guia resuelta del IPN
Solucionario Guia Ipn 2011 - Guia resuelta del IPN Solucionario Guia Ipn 2011 - Guia resuelta del IPN
Solucionario Guia Ipn 2011 - Guia resuelta del IPN
 
Clase 1 álgebra 2010 (pp tminimizer)
Clase 1 álgebra 2010 (pp tminimizer)Clase 1 álgebra 2010 (pp tminimizer)
Clase 1 álgebra 2010 (pp tminimizer)
 
Documento para el_facilitador_u2
Documento para el_facilitador_u2Documento para el_facilitador_u2
Documento para el_facilitador_u2
 
ARITMETICA 1 ejercicios de aplicacion(1).docx
ARITMETICA 1 ejercicios de aplicacion(1).docxARITMETICA 1 ejercicios de aplicacion(1).docx
ARITMETICA 1 ejercicios de aplicacion(1).docx
 
POLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdf
POLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdfPOLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdf
POLINOMIOS Y ECUACIONES ALGEBRAICAS EN NUMEROS COMPLEJOS.pdf
 
Modulo estructura de_datos_2014
Modulo estructura de_datos_2014Modulo estructura de_datos_2014
Modulo estructura de_datos_2014
 
Presentaciones exitosas
Presentaciones exitosasPresentaciones exitosas
Presentaciones exitosas
 
Marian Dominguez
Marian DominguezMarian Dominguez
Marian Dominguez
 
Números racionales
Números racionalesNúmeros racionales
Números racionales
 
Números racionales
Números racionalesNúmeros racionales
Números racionales
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 

Kürzlich hochgeladen

plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxdkmeza
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxnandoapperscabanilla
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 

Kürzlich hochgeladen (20)

plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 

Recursividad (Divide y Vencerás)

  • 1. Recursividad Divide y Vencerás Programación Lester Sánchez Universidad de La Habana 2013 – 2014
  • 2. Divide y Vencerás 1. Dividir el problema complejo en subproblemas simples 2. Conquistar (resolver) los problemas simples 3. Vencer (resolver) el problema original a partir de las soluciones de los problemas simples Programación, UH 2013-2014 2
  • 3. Estructura general de un algoritmo recursivo Algoritmo RECURSIVO IF (Problema Simple) Resolverlo directamente Dividir ELSE Dividir en subproblemas P1, P2, ..., Pn Resolver(P1); Resolver(P2); ... Resolver(Pn) Conquistar Combinar las soluciones de cada subproblema Vencer Programación, UH 2013-2014 3
  • 4. Composition with Large Red Plane, Yellow, Black, Gray and Blue Piet Mondrian, 1921
  • 5. Quiero generar esta figura Programación, UH 2013-2014 5
  • 6. 1 Problema Inicial: Dividir el rectángulo en varias regiones Subproblema: Dividir el rectángulo en dos rectángulos más pequeños, y resolver el mismo problema en cada uno Programación, UH 2013-2014 6
  • 7. 1 Subproblema 1: Resolverlo de la misma forma Caso Base: Cuando Alto o Ancho sean demasiado pequeños Subproblema 2: Caso Base. No hay que dividirlo más 2 Programación, UH 2013-2014 7
  • 8. 1 2 4 7 8 6 10 5 1 9 4 11 3 3 2 6 5 7 9 8 k Problema Complejo k Problema Simple (Caso Base) 10 11 Cada problema complejo se divide en dos nuevos subproblemas Programación, UH 2013-2014 8
  • 9. Ejemplo: Mondrian Dividir los dos nuevos rectángulos que se forman Obtener punto de división Dividir los dos nuevos rectángulos que se forman Dibujar línea divisoria Programación, UH 2013-2014 9
  • 11. Ejemplo: Máximo de un Array 4, 17, 44, 10, 30, 25, 6 Max (44, 25)=44 Max (17, 44)=44 Max (25, 6)=25 20, 25, 6 4, 17, 44, 10 Max (4, 17)=17 Max (44, 10)=44 4 17 4 17 44 10 44 10 Max (20, 25)=25 20 25 20 6 25 Cada problema se divide en dos nuevos subproblemas (buscar máximo en cada mitad) Hasta que la mitad tenga 1 elemento (caso base), el máximo Programación, UH 2013-2014 11
  • 12. Ejemplo: Máximo de un Array El método público se limita a invocar al recursivo con los parámetros iniciales Método Recursivo. Recibe índices para limitar el rango donde buscar Si hay un único elemento, es el máximo Programación, UH 2013-2014 El máximo del array es el máximo de los máximos de cada mitad 12
  • 13. Búsqueda Binaria Ejemplos de la vida cotidiana ‐ Buscar una palabra en un diccionario ‐ Buscar un nombre en el directorio telefónico ‐ Buscar una página de un libro ‐ Retomar la visualización de un video En general optimizamos la búsqueda cuando los elementos están ordenados Optimización en este caso significa hacer menos comparaciones para encontrar el elemento… o determinar que no está Programación, UH 2013-2014 13
  • 14. Búsqueda Binaria 0 1 4 6 2 3 4 5 6 7 8 9 10 12 17 25 29 30 41 44 29 > 17 25 29 30 41 44 29 < 30 25 29 29 > 25 29 29 = 29 Se encontró el elemento haciendo solo 4 comparaciones! Programación, UH 2013-2014 14
  • 15. Búsqueda Binaria 0 1 4 6 2 3 4 5 6 7 8 9 10 12 17 25 29 30 41 44 28 > 17 25 29 30 41 44 28 < 30 25 29 28 > 25 29 28 != 29 Se determinó que el elemento no está haciendo solo 4 comparaciones! Programación, UH 2013-2014 15
  • 16. Búsqueda Binaria 1 2 3 4 5 6 7 8 … n n/2 (n/2)/2 = n/4 = n/22 ((n/2)/2)/2 = n/8 = n/23 . . . Cantidad de elementos del nuevo fragmento Cuando n/2k = 1 no hay nada más que dividir (((n/2)/2)/2) … /2 = n/2k k es la cantidad máxima de divisiones Programación, UH 2013-2014 16
  • 17. Búsqueda Binaria O sale por aquí Buscar en la 2da mitad Buscar en la 1ra mitad O sale por aquí Programación, UH 2013-2014 17
  • 18. Ordenación por Mezcla (Merge Sort) Si se tienen dos arrays ordenados, se pueden mezclar de forma tal que el array resutante siga ordenado ALGORITMO RECURSIVO 1. Dividir el array en dos mitades 2. Ordenar cada mitad de la misma forma 3. Mezclar las dos mitades 4. Una mitad de 1 elemento está ordenada Programación, UH 2013-2014 18
  • 19. Ejemplo: Ordenación por Mezcla 38 38 43 3 43 27 27 38 27 43 27 38 27 3 43 38 10 82 38 10 82 9 27 10 82 9 43 9 10 82 9 3 27 82 9 3 3 Programación, UH 2013-2014 9 9 43 38 3 3 10 43 82 82 19
  • 20. Ordenación por Mezcla Se utiliza para hacer la mezcla Si el fragmento tiene un solo elemento, está ordenado! Ordenar la 1ra mitad Ordenar la 2da mitad Mezclar las dos mitades ordenadas Programación, UH 2013-2014 20
  • 21. Ordenación por Mezcla Copiar los restantes de la 1ra mitad Copiar los restantes de la 2da mitad Copiar el fragmento ordenado al array original Programación, UH 2013-2014 21
  • 22. Clase Práctica Implementar la búsqueda en un array desordenado int Buscar (int[] a, int n) Determinar cantidad mínima de inserciones requeridas para convertir una cadena en palíndromo Ejemplo: A la cadena “abcb” basta con insertarle una “a” por detrás para convertirla en palíndromo (abcba) y a “abecba” basta con insertarle una “e” en el medio (abeceba) o una “c” (abcecba). int InsercionesPalindromo(string s) Programación, UH 2013-2014 22
  • 23. Clase Práctica Implemente el algoritmo de ordenación QuickSort. void QuickSort(int[] a) El QuickSort se basa en la idea de reorganizar los elementos de un array, seleccionando un elemento (pivote) y colocando todos los menores que él al inicio del array y los mayores e iguales al final. Implemente esta estrategia en un algortimo recursivo utilizando la técnica de divide y vencerás. Programación, UH 2013-2014 23
  • 24. Clase Práctica Un TAXISTA se desplaza por una ciudad en la que solo está permitido conducir hacia el ESTE y hacia el SUR. Calcule la cantidad de caminos desde un origen hasta un destino. int CantidadCaminos(int xOrig, int yOrig, int xDest, int yDest) Calcule la cantidad de cadenas balanceadas que pueden formarse con n pares de paréntesis. int CadenasBalanceadas(int n) Programación, UH 2013-2014 24
  • 25. Clase Práctica Implemente un método que imprima en la Consola la descomposición en sumandos de un número n. Ejemplo: n = 5 1+1+1+1+1 1+1+1+2 1+2+2 1+1+3 1+4 2+3 5 void DescomposicionSumandos(int n) Programación, UH 2013-2014 25