Académique Documents
Professionnel Documents
Culture Documents
Laboratorios de computación
salas A y B
Profesor: Ing. Jonathan Roberto Torres Castillo
Grupo: 9
No de Práctica(s): 11
Semestre: 2018-II
Fecha de entrega:
Observaciones:
CALIFICACIÓN: _________
1
PRACTICA 11
Estrategias para la construcción de algoritmos
ESTRUCTURAS DE DATOS LINEALES: PILA Y COLA
ESTRUCTURA DE DATOS Y ALGORITMOS I
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
2. Objetivos
Revisar las definiciones, características, procedimientos y ejemplos de las estructuras
lineales Pila y Cola, con la finalidad de comprender sus estructuras e implementarlas
adecuadamente.
3. Introducción
El objetivo de esta guía es aplicar los algoritmos básicos para la solución de problemas.
2
Licencia GPL de GNU
El software presente en esta guía práctica es libre bajo la licencia GPL de
GNU, es decir, se puede modificar y distribuir mientras se mantenga la
licencia GPL. /*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
<http://www.gnu.org/licenses/>.
*
* Author: Jorge A. Solano
*/
4.1. Actividad 1
Técnica de resolución de problemas que consiste en verificar todas las posibles soluciones a un
problema hasta encontrar aquella o aquellas que cumplan con el propósito de resolver el
problema.
VENTAJAS
DESVENTAJAS
3
EJEMPLOS
Top-down y bottom-up
Se trata de técnicas de diseño de algoritmos que especifican el enfoque que se tiene para
la solución de un problema.
TOP-DOWN
Consiste en establecer una serie de niveles de mayor a menor complejidad que den
solución a un problema.
Se debe establecer una relación entre las etapas de la solución del problema de forma que
una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y salidasde
información.
BOTTOM-UP
Consiste en una estrategia de diseño que parte desde los módulos particulares o
específicos que son parte de la solución general de un problema.
Normalmente esta estrategia se utiliza cuando ya se elaboró el diseño de una solución y se
va a realizar la implementación de la misma.
Si el diseño de la solución se realiza siguiendo este modelo, puede ser complicado ya que
no se tiene un panorama general del problema completo.
4
De manera general, es posible diseñar un algoritmo “greedy” de la siguiente manera:
1.- Enunciar el problema de optimización de tal forma que, cuando se toma una primera
decisión o se resuelve en una primera etapa, esto resulta en un subproblema a resolver.
2.- Mostrar que siempre hay una solución al problema original a partir de la decisión que
tome el algoritmo “greedy”.
3.- Demostrar que el subproblema obtenido a partir de la primera solución proporcionada
con el algoritmo “greedy” aún tiene una solución al problema (dicha solución también se
obtiene con un algoritmo greedy).
Divide y vencerás
Es una técnica que suele ser considerada como una estrategia general de resolver
problemas.
En el campo de los algoritmos consiste en resolver un problema a partir de la solución de
sub-problemas del mismo tipo, pero de menor tamaño.
Si los sub-problemas son relativamente grandes, se aplica de nuevo la técnica hasta
alcanzar problemas suficientemente pequeños para resolverlos directamente
La técnica consiste a grandes rasgos en los siguientes pasos:
1.- Se debe plantear el problema de tal forma que se pueda descomponer en k sub-
problemas del mismo tipo, pero de menor tamaño. A esta parte del procedimiento se le
conoce como división.
2.- Se deben resolver los k problemas de manera independiente.
3.- Combinar las soluciones de cada uno de los k problemas para construir la solución al
problema original.
El resultado del diseño de estos algoritmos suele ser simple y elegante, lo que da lugar a
una mejor legibilidad, mayor facilidad en la depuración y análisis del algoritmo.
Los diseños recursivos normalmente tardan una mayor cantidad de tiempo en su ejecución
que los iterativos. El uso de la recursividad se puede volver muy complejo.
Desde un punto de vista de la eficiencia de los algoritmos Divide y Vencerás, es importante
conseguir que los subproblemas sean independientes, es decir, que no exista traslape
entre ellos.
Otra consideración importante a la hora de diseñar algoritmos Divide y Vencerás es el
reparto de la carga entre los sub-problemas, puesto que es importante que la división en
sub-problemas se haga de la forma más equilibrada posible.
5
5. Conclusiones
Las técnicas de programación nos sirven para tener una forma mejor de resolver los
problemas orientados a las carteristas que nos permiten diseñar el diseño de algoritmos
capaces para los requerimientos de la vida.
6. Referencias
[1] GARCÍA CANO, Edgar, SOLANO GÁLVEZ, Jorge, Guía práctica de estudio #11
ESTRATEGIAS EN LA CONSTRUCCION DE ALGORITMOS, Facultad de
ingeniería, UNAM.