SlideShare una empresa de Scribd logo
1 de 12
INSTITUTO UNIVERSITARIO POLITECNICO
“SANTIAGO MARIÑO”
CATEDRA: Programación No Numérica II
Enfoques
Realizado por:
TenjoV. Jhoan M
C.I: 20326602
Porlamar, Julio del 2014
(Tail Recursion) o Método de ir hacia adelante
La recursividad es una técnica de programación que consiste en que una serie de instrucciones se
repiten como una sub tarea de la tarea principal, es decir, las funciones, procesos o rutinas se llaman a sí
mismos cada vez que lo requieran y se ejecutan repetidas veces hasta que se satisface una condición
específica.
Sin embargo, la recursividad en algunos casos, tiene un costo computacional alto, debido a las constantes
llamadas a la misma función, rutina y muchas veces estas llamadas consumen demasiada memoria.
En algunos algoritmos recursivos, se puede implementar un caso de recursividad especial llamado Tail
recursión (recursividad por cola), la cual es una técnica para optimizar la recursividad eliminando las
constantes llamadas recursivas. Tail recursion es cuando la llamada recursiva es la última instrucción de la
función.
Sin embargo, las funciones tail recursive deben cumplir la condición que en la parte que realiza la llamada
a la función, no debe existir ninguna otra sentencia.
Una ventaja de la recursividad por cola es que podemos evitar la sobrecarga de cada llamada a la
función y nos evitamos el gasto de memoria de pila. Con una función tail recursive se puede evitar lo que
se conoce como stack overflow, que ocurre cuando la pila de llamadas (call stack) consume mucha
memoria.
Veamos esta técnica con un ejemplo muy conocido que es encontrar el factorial de un número.
Esta simple función obtiene el factorial de un número de la manera recursiva convencional: La explicación
es sencilla, llamamos a la misma función fact hasta que n sea igual a 1, en ese momento la recursividad
se detiene.
Esta simple función obtiene el factorial de un número de la manera recursiva convencional: La explicación
es sencilla, llamamos a la misma función fact hasta que n sea igual a 1, en ese momento la recursividad se detiene.
Digamos que ingresé 15, si compilamos el programa la función me daría 2004310016, lo cual es correcto, pero hay que
tener en cuenta todas las llamadas recursivas que hizo la función fact_recursivo, es decir, la función tiene que calcular
el factorial de 14 y este el fact de 13, y este el fact de 12… sucesivamente hasta 1. Tenemos un crecimiento del
número de llamadas recursivas.
Ahora vamos a realizar la misma función usando tail recursion. En este caso no se necesita guardar un
marco de pila para cada llamada recursiva, y el algoritmo se comporta como si fuera iterativo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int fact_recursivo(int n)
{
if(n == 1)
return n;
else
return n * fact_recursivo(n-1);
}
int main() {
int num = 0;
cout << "Ingresa un nro " << endl; cin
>> num;
cout << "Su factorial es " <<
fact_recursivo(num);
return 0;
}
(Backtracking) o Método de ir hacia atrás
Backtracking o método de ir hacia atrás se asemeja a un recorrido en
profundidad dentro de un grafo dirigido.
La técnica crea todas las posibles combinaciones de elementos para
obtener una solución. Su principal virtud es que en la mayoría de las
implementaciones se puede evitar combinaciones, estableciendo funciones
de acotación reduciendo el tiempo de ejecución. El backtracking esta muy
relacionado con la búsqueda combinatoria.
La idea es encontrar la mejor combinación posible, por esto se puede
decir que es una búsqueda en profundidad, durante la búsqueda: Si se
encuentra con una alternativa incorrecta la búsqueda retrocede al punto
anterior y toma la siguiente alternativa. Cuando se terminan las posibilidades,
se vuelve a la elección anterior y se toma la siguiente opción
ejemplo
tomar es el de encontrar la salida en un laberinto. ¿Por qué podemos tomarlo como ejemplo? Por que
un laberinto puede comportarse como un grafo, donde cada cruce puede ser un nodo donde
debemos tomar una decisión que conducen a otros nodos.
o Si la posición actual está fuera del laberinto, devolverTRUE para indicar que hemos encontrado
una solución.
o Si la posición actual está marcada, devolver FALSE para indicar que ya habíamos estado aquí.
o Marcar la posición actual.
Para cada una de las 4 direcciones posibles (N,S,E,O){
Si (en la dirección elegida no chocamos contra un muro) {
Moverse un paso en la dirección indicada
Intentar resolver el laberinto desde ahí recursivamente.
Si la llamada recursiva nos permite salir del laberinto, devolverTRUE
}
}
Quitar la marca de la posición actual. Devolver FALSE para indicar que ninguna de las 4 direcciones
nos permitió llegar a una solución desde la posición actual
Dirección Norte.. No podemos ir al sur.
Buscando soluciones
Giramos al oeste.. momento de hacer backtracking
Buscando soluciones
Volvemos al punto de partida.. pero ahora cogemos rumbo al sur
Buscando soluciones
solución
Salida Encontrada
Problema de las N Reinas
El problema de las reinas consistente en colocar N reinas en un tablero de dimensiones N por N de forma que no se
encuentren más de una en la misma línea: horizontal, vertical o diagonal
Enunciado: colocar N Reinas en un tablero rectangular de dimensiones N por N de Forma que no se encuentren mas
de una en la misma línea: horizontal, vertical o diagonal
Conclusión
El manejo de algoritmos tomando en cuenta el método de ir hacia adelante aporta cierto interés
con el termillo llamado recursivo, mas que todo se especializa en eliminar capas de una maneras por
decirlo así ya que con el hecho de eliminar e implementar una nueva estructura de algoritmo se cumple
la condición que se requiere.Y es que por esa razón se determina un valor a la solución.
Sin embargo el método de ir hacia atrás conocí y estudie el ejemplo tomado. dice: recorrer y
encontrar soluciones. Esta también puede llamarse una toma de decisiones porque cada vez que se elige
una acción a realizar se juzga el paso que se da y no se garantiza una solución en ese momento, es por
ello que consta de pasos indeterminados para llegar a la solución.
Para llegar al punto del problema de las N Reinas determine que puede tomarse como un juego el
especifico y que puede ser practico a la vez, como también tiene cierto parecido al sudoku. Como se
representa como un algoritmo tiende a ser mas exacto y tiende hacer mas exacto con su representación
de códigos.
Referencias Electrónicas
http://www.slideshare.net/Joamarbet/enfoques-37144008
http://en.wikipedia.org/wiki/Tail_recursion#Implementation_methods
Https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Tail_recursion.html
http://www.inf.ucv.cl/~wpalma/taller/backtracking.pdf
http://www.glc.us.es/~jalonso/vestigium/i1m2011-los-problemas-de-las-n-
reinas-y-de-hamming-en-haskell/

Más contenido relacionado

La actualidad más candente

Estructuras iterativas en java y pseudocódigo
Estructuras iterativas en java y pseudocódigoEstructuras iterativas en java y pseudocódigo
Estructuras iterativas en java y pseudocódigoAlex Cordova
 
Sentencias de Repeticion
Sentencias de RepeticionSentencias de Repeticion
Sentencias de RepeticionKenyi Figueroa
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióNRegina Flores
 
Estructuras de repeticion
Estructuras de repeticion Estructuras de repeticion
Estructuras de repeticion abmendo28
 
Estructuras básicas tecnología
Estructuras básicas tecnología  Estructuras básicas tecnología
Estructuras básicas tecnología JustineBravo1
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos ForRichard Robalino
 
Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Rommel Lòpez
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtrackingWilmer Quintero
 
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...Marcelo Vilela Pardo
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaRolf Pinto
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 
Estructura cíclicas o de repetición en la programación
Estructura cíclicas o de repetición en la programaciónEstructura cíclicas o de repetición en la programación
Estructura cíclicas o de repetición en la programaciónpandora_2012
 
Presentacion ciclos-1
Presentacion ciclos-1Presentacion ciclos-1
Presentacion ciclos-1sena
 

La actualidad más candente (20)

Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
Estructuras iterativas en java y pseudocódigo
Estructuras iterativas en java y pseudocódigoEstructuras iterativas en java y pseudocódigo
Estructuras iterativas en java y pseudocódigo
 
Tema ii integrales uney
Tema ii integrales uneyTema ii integrales uney
Tema ii integrales uney
 
Sentencias de Repeticion
Sentencias de RepeticionSentencias de Repeticion
Sentencias de Repeticion
 
Modulo2b
Modulo2bModulo2b
Modulo2b
 
Estructuras De RepeticióN
Estructuras De RepeticióNEstructuras De RepeticióN
Estructuras De RepeticióN
 
Estructuras de repeticion
Estructuras de repeticion Estructuras de repeticion
Estructuras de repeticion
 
Estructuras básicas tecnología
Estructuras básicas tecnología  Estructuras básicas tecnología
Estructuras básicas tecnología
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos For
 
Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)Estructuras repetitivas(while, for, repeat)
Estructuras repetitivas(while, for, repeat)
 
Estructura selectiva
Estructura selectivaEstructura selectiva
Estructura selectiva
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtracking
 
2 teoria de_probabilidades
2 teoria de_probabilidades2 teoria de_probabilidades
2 teoria de_probabilidades
 
Estructura repetitiva for y while
Estructura repetitiva for y whileEstructura repetitiva for y while
Estructura repetitiva for y while
 
7 procesos estocásticos
7 procesos estocásticos7 procesos estocásticos
7 procesos estocásticos
 
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
Diagramas de flujo - Estructuras de Control (For, While, Do Whille y Switch C...
 
Teoría De La Complejidad Algoritmica
Teoría De La Complejidad AlgoritmicaTeoría De La Complejidad Algoritmica
Teoría De La Complejidad Algoritmica
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Estructura cíclicas o de repetición en la programación
Estructura cíclicas o de repetición en la programaciónEstructura cíclicas o de repetición en la programación
Estructura cíclicas o de repetición en la programación
 
Presentacion ciclos-1
Presentacion ciclos-1Presentacion ciclos-1
Presentacion ciclos-1
 

Destacado

Problema de la mochila
Problema de la mochilaProblema de la mochila
Problema de la mochilajcroquer68
 
Mapa Conceptual Joseanny Bolivar
Mapa Conceptual Joseanny BolivarMapa Conceptual Joseanny Bolivar
Mapa Conceptual Joseanny BolivarEduardo Pastrano
 
Problema de la mochila
Problema de la mochilaProblema de la mochila
Problema de la mochilaOSCAR SEGNINI
 
Cuadro De Mando Integral ¿Como hago una implantacion adecuada?
Cuadro De Mando Integral  ¿Como hago una implantacion adecuada?Cuadro De Mando Integral  ¿Como hago una implantacion adecuada?
Cuadro De Mando Integral ¿Como hago una implantacion adecuada?MindProject
 
problema de la mochila materia virtual
problema de la mochila materia virtualproblema de la mochila materia virtual
problema de la mochila materia virtualruiz314
 

Destacado (8)

Enfoques
EnfoquesEnfoques
Enfoques
 
Problema de la mochila
Problema de la mochilaProblema de la mochila
Problema de la mochila
 
Mapa Conceptual Joseanny Bolivar
Mapa Conceptual Joseanny BolivarMapa Conceptual Joseanny Bolivar
Mapa Conceptual Joseanny Bolivar
 
Problema de la mochila
Problema de la mochilaProblema de la mochila
Problema de la mochila
 
Cuadro De Mando Integral ¿Como hago una implantacion adecuada?
Cuadro De Mando Integral  ¿Como hago una implantacion adecuada?Cuadro De Mando Integral  ¿Como hago una implantacion adecuada?
Cuadro De Mando Integral ¿Como hago una implantacion adecuada?
 
El Balance Scorecard ó BSC
El Balance Scorecard ó BSCEl Balance Scorecard ó BSC
El Balance Scorecard ó BSC
 
problema de la mochila materia virtual
problema de la mochila materia virtualproblema de la mochila materia virtual
problema de la mochila materia virtual
 
Peti Metodologia
Peti MetodologiaPeti Metodologia
Peti Metodologia
 

Similar a Enfoques (20)

recursividad.pptx
recursividad.pptxrecursividad.pptx
recursividad.pptx
 
recursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxrecursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptx
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtracking
 
Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Recursividad
RecursividadRecursividad
Recursividad
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtracking
 
Backtracking (Método de Vuelta Atrás)
Backtracking (Método de Vuelta Atrás)Backtracking (Método de Vuelta Atrás)
Backtracking (Método de Vuelta Atrás)
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
 
Transformada inversa
Transformada inversaTransformada inversa
Transformada inversa
 
Romero
RomeroRomero
Romero
 
03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
MATEMATICAS IV
MATEMATICAS IVMATEMATICAS IV
MATEMATICAS IV
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Enfoques
EnfoquesEnfoques
Enfoques
 
clase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsxclase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsx
 
Recursión
RecursiónRecursión
Recursión
 
Unidad 2 p1
Unidad 2 p1Unidad 2 p1
Unidad 2 p1
 

Último

SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTGestorManpower
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaSHERELYNSAMANTHAPALO1
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfMIGUELANGELCONDORIMA4
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamientoRobertoAlejandroCast6
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 

Último (20)

SSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SSTSSOMA, seguridad y salud ocupacional. SST
SSOMA, seguridad y salud ocupacional. SST
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
CICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresaCICLO DE DEMING que se encarga en como mejorar una empresa
CICLO DE DEMING que se encarga en como mejorar una empresa
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdfPresentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
Presentación N° 1 INTRODUCCIÓN Y CONCEPTOS DE GESTIÓN AMBIENTAL.pdf
 
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa  tipos y funcionamientoCaldera Recuperadora de químicos en celulosa  tipos y funcionamiento
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 

Enfoques

  • 1. INSTITUTO UNIVERSITARIO POLITECNICO “SANTIAGO MARIÑO” CATEDRA: Programación No Numérica II Enfoques Realizado por: TenjoV. Jhoan M C.I: 20326602 Porlamar, Julio del 2014
  • 2. (Tail Recursion) o Método de ir hacia adelante La recursividad es una técnica de programación que consiste en que una serie de instrucciones se repiten como una sub tarea de la tarea principal, es decir, las funciones, procesos o rutinas se llaman a sí mismos cada vez que lo requieran y se ejecutan repetidas veces hasta que se satisface una condición específica. Sin embargo, la recursividad en algunos casos, tiene un costo computacional alto, debido a las constantes llamadas a la misma función, rutina y muchas veces estas llamadas consumen demasiada memoria. En algunos algoritmos recursivos, se puede implementar un caso de recursividad especial llamado Tail recursión (recursividad por cola), la cual es una técnica para optimizar la recursividad eliminando las constantes llamadas recursivas. Tail recursion es cuando la llamada recursiva es la última instrucción de la función. Sin embargo, las funciones tail recursive deben cumplir la condición que en la parte que realiza la llamada a la función, no debe existir ninguna otra sentencia. Una ventaja de la recursividad por cola es que podemos evitar la sobrecarga de cada llamada a la función y nos evitamos el gasto de memoria de pila. Con una función tail recursive se puede evitar lo que se conoce como stack overflow, que ocurre cuando la pila de llamadas (call stack) consume mucha memoria.
  • 3. Veamos esta técnica con un ejemplo muy conocido que es encontrar el factorial de un número. Esta simple función obtiene el factorial de un número de la manera recursiva convencional: La explicación es sencilla, llamamos a la misma función fact hasta que n sea igual a 1, en ese momento la recursividad se detiene. Esta simple función obtiene el factorial de un número de la manera recursiva convencional: La explicación es sencilla, llamamos a la misma función fact hasta que n sea igual a 1, en ese momento la recursividad se detiene. Digamos que ingresé 15, si compilamos el programa la función me daría 2004310016, lo cual es correcto, pero hay que tener en cuenta todas las llamadas recursivas que hizo la función fact_recursivo, es decir, la función tiene que calcular el factorial de 14 y este el fact de 13, y este el fact de 12… sucesivamente hasta 1. Tenemos un crecimiento del número de llamadas recursivas. Ahora vamos a realizar la misma función usando tail recursion. En este caso no se necesita guardar un marco de pila para cada llamada recursiva, y el algoritmo se comporta como si fuera iterativo. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 int fact_recursivo(int n) { if(n == 1) return n; else return n * fact_recursivo(n-1); } int main() { int num = 0; cout << "Ingresa un nro " << endl; cin >> num; cout << "Su factorial es " << fact_recursivo(num); return 0; }
  • 4. (Backtracking) o Método de ir hacia atrás Backtracking o método de ir hacia atrás se asemeja a un recorrido en profundidad dentro de un grafo dirigido. La técnica crea todas las posibles combinaciones de elementos para obtener una solución. Su principal virtud es que en la mayoría de las implementaciones se puede evitar combinaciones, estableciendo funciones de acotación reduciendo el tiempo de ejecución. El backtracking esta muy relacionado con la búsqueda combinatoria. La idea es encontrar la mejor combinación posible, por esto se puede decir que es una búsqueda en profundidad, durante la búsqueda: Si se encuentra con una alternativa incorrecta la búsqueda retrocede al punto anterior y toma la siguiente alternativa. Cuando se terminan las posibilidades, se vuelve a la elección anterior y se toma la siguiente opción
  • 5. ejemplo tomar es el de encontrar la salida en un laberinto. ¿Por qué podemos tomarlo como ejemplo? Por que un laberinto puede comportarse como un grafo, donde cada cruce puede ser un nodo donde debemos tomar una decisión que conducen a otros nodos. o Si la posición actual está fuera del laberinto, devolverTRUE para indicar que hemos encontrado una solución. o Si la posición actual está marcada, devolver FALSE para indicar que ya habíamos estado aquí. o Marcar la posición actual. Para cada una de las 4 direcciones posibles (N,S,E,O){ Si (en la dirección elegida no chocamos contra un muro) { Moverse un paso en la dirección indicada Intentar resolver el laberinto desde ahí recursivamente. Si la llamada recursiva nos permite salir del laberinto, devolverTRUE } } Quitar la marca de la posición actual. Devolver FALSE para indicar que ninguna de las 4 direcciones nos permitió llegar a una solución desde la posición actual
  • 6. Dirección Norte.. No podemos ir al sur. Buscando soluciones
  • 7. Giramos al oeste.. momento de hacer backtracking Buscando soluciones
  • 8. Volvemos al punto de partida.. pero ahora cogemos rumbo al sur Buscando soluciones
  • 10. Problema de las N Reinas El problema de las reinas consistente en colocar N reinas en un tablero de dimensiones N por N de forma que no se encuentren más de una en la misma línea: horizontal, vertical o diagonal Enunciado: colocar N Reinas en un tablero rectangular de dimensiones N por N de Forma que no se encuentren mas de una en la misma línea: horizontal, vertical o diagonal
  • 11. Conclusión El manejo de algoritmos tomando en cuenta el método de ir hacia adelante aporta cierto interés con el termillo llamado recursivo, mas que todo se especializa en eliminar capas de una maneras por decirlo así ya que con el hecho de eliminar e implementar una nueva estructura de algoritmo se cumple la condición que se requiere.Y es que por esa razón se determina un valor a la solución. Sin embargo el método de ir hacia atrás conocí y estudie el ejemplo tomado. dice: recorrer y encontrar soluciones. Esta también puede llamarse una toma de decisiones porque cada vez que se elige una acción a realizar se juzga el paso que se da y no se garantiza una solución en ese momento, es por ello que consta de pasos indeterminados para llegar a la solución. Para llegar al punto del problema de las N Reinas determine que puede tomarse como un juego el especifico y que puede ser practico a la vez, como también tiene cierto parecido al sudoku. Como se representa como un algoritmo tiende a ser mas exacto y tiende hacer mas exacto con su representación de códigos.