Unidad I Resolución de Problemas Otoño 2009
Conectividad Desarrollo Diseño Soporte Consultoría Otros Ingeniero en computación Persona que resuelve problemas computacionales FCC - BUAP Otoño 2009 2
Fase de RESOLUCIÓN de PROBLEMAS Fase de IMPLEMENTACIÓN Fase de MANTENIMIENTO Tomado de: Programming and Problem Solving with Java. Nell Dale Chap 1 FCC - BUAP Otoño 2009 3
FCC - BUAP Otoño 2009 4
para utilizando actúa meta estrategia Un es una una en la Problema situación individuo alcanzar una cual un desea hacer algo pero desconoce el para curso de acción meta alcanzar la Tomado de Libro 5: Estrategías de resolución de problemas Lissete Poggioli FCC - BUAP Otoño 2009 5
Cuando hablamos de un problema y nos referimos a la meta o a lograr lo que se quiere, nos estamos refiriendo a la solución de dicho problema. Una solución esta asociada con: Estado inicial Solución o meta Problema FCC - BUAP Otoño 2009 6
las metas son lo que se desea alcanzar Los los son para tienen datos elementos la analizar situación problema problemas componentes camino las restricciones son que limitan para alcanzar factores el la solución las operaciones son procedimientos para resolver el problema Tomado de Libro 5: Estrategías de resolución de problemas Lissete Poggioli FCC - BUAP Otoño 2009 7
Consideremos el siguiente ejemplo: Anita tiene una muñeca y quiere vestirla con pantalón y blusa. Tiene cuatro pantalones: rojo, blanco, azul y negro y tiene tres blusas: verde, amarillo y rosado. Ella quiere hacer diferentes combinaciones con todos los pantalones y las blusas verde y rosada. Cuántas combinaciones diferentes puede hacer? Cuál es la Meta(s)? Consiste en saber cuántas combinaciones diferentes puede hacer Anita con los pantalones y las blusas Cuáles son los datos? 4 pantalones y 3 blusas Las restricciones? Anita solo quiere utilizar 2 de las 3 blusas: la verde y rosada. En consecuencia no todas las blusas van a ser consideradas para las combinaciones Operaciones o métodos? Utilizar las operaciones requeridas para obtener el número de combinaciones FCC - BUAP Otoño 2009 8
MC Beatriz Beltrán Martínez FCC - BUAP Otoño 2009 9
Diariamente resolvemos problemas, la mayoría de las veces, sin darnos cuenta del proceso que realizamos. Algunos problemas están claramente definidos - como los que mencionamos anteriormente- pero en la vida real, los procesos no son tan simples. La mayoría de las veces, tendremos que definir el problema nosotros mismos y decidir con que información vamos a trabajar y que resultados debemos obtener. FCC - BUAP Otoño 2009 10
Según Dijkstra (1991), la resolución de problemas es un proceso cognoscitivo complejo que involucra conocimiento almacenado en la memoria a corto y a largo plazo. FCC - BUAP Otoño 2009 11
Polya (1965) señala que un problema puede resolverse correctamente si se realizan las siguientes fases o etapas: Comprender el problema (análisis y especificación) Ejecutar el plan Concebir un plan para llegar a la solución (estrategia) Verificar el procedimiento y comprobar los resultados FCC - BUAP Otoño 2009 12
Por analogía Buscar cosas que son familiares Análisis de medios y fines Dividir y Vencer Bloques de construcción Hacer preguntas Técnicas para resolución de problemas Combinar soluciones FCC - BUAP Otoño 2009 13
En equipos de 5 integrantes, tienen 7 minutos para resolver el siguiente problema Descripción: Obtener un lista de los diferentes lugares de procedencia de sus compañeros y el promedio de edad. Criterios para el éxito: Cada equipo deberá haber obtenido la información solicitada Responsabilidad Individual: Cualquier integrante del equipo podrá ser seleccionado al azar para explicar la solución al frente FCC - BUAP Otoño 2009 14
Compartiendo la solución con todos Explicar el proceso que siguieron para resolver el problema FCC - BUAP Otoño 2009 15
Una de las técnicas para resolución de problemas más simples pero muy importante es la de hacer preguntas. Debemos asegurarnos que estamos procediendo a resolver el problema real y no el problema que percibimos FCC - BUAP Otoño 2009 16
Siempre que se nos dé una tarea cuyo problema no esté bien definido, o se requiera información adicional, debemos hacer preguntas hasta que tengamos claro exactamente que es lo que se quiere o tiene que hacer. Qué Quién Cuándo Problema Cómo Por qué Dónde FCC - BUAP Otoño 2009 17
Algunas preguntas útiles son: Qué es lo que sé acerca del problema? Cuál es la información con la que debo trabajar para encontrar la solución? Cómo se ve la solución, qué parece? Qué clase de casos especiales existen? Cómo voy a saber que he encontrado la solución? 18 FCC - BUAP Otoño 2009
En equipos de 5 integrantes, tienen 10 minutos para resolver el siguiente problema Descripción: Acaban de recibir como herencia un terreno con la forma de la figura que se les entregará. Todos han acordado vender el terreno, por lo cual, requieren calcular el área de éste para determinar su precio. Actividad: Identificar y escribir en su cuaderno los componentes del problema Resolver el problema (Cada equipo contará con una regla y tijeras) Criterios para el éxito: Cada equipo obtendrá el área de su terreno. Todos los integrantes deben asegurarse que el resto de su equipo entendió satisfactoriamente el proceso de resolución del problema. Responsabilidad Individual: Cualquier integrante del equipo podrá ser seleccionado al azar para explicar la solución al frente FCC - BUAP Otoño 2009 19
Compartiendo la solución con todos Explicar el proceso que siguieron para resolver el problema FCC - BUAP Otoño 2009 20
Logró el equipo resolver el problema y es capaz de explicar el proceso? Cómo se podría mejorar la próxima vez? FCC - BUAP Otoño 2009 21
La técnica que acaban de utilizar se llama Dividir y Vencer o divide y vencerás Se basa en la idea de separar o dividir un problema grande en pequeñas piezas más manejables Problema difícil Subproblema fácil Sub- Problema difícil Subproblema fácil Subproblema fácil Subproblema fácil FCC - BUAP Otoño 2009 22
Otra técnica aplicable para nuestro problema, es la de bloques de construcción, la cual, es otra forma de atacar problemas grandes. Esta técnica consiste en ver si existe solución para piezas mas pequeñas del problema (los bloques o ladrillos) y si es posible combinar estas soluciones para resolver todo o la mayoría del problema grande (hacer la pared) Para nuestra actividad las piezas pequeñas fueron las figuras regulares, y la suma de todas las áreas, nos dio el área de la figura completa. FCC - BUAP Otoño 2009 23
En equipos de 4 integrantes, tienen 15 minutos para resolver el siguiente problema Descripción: Son el equipo campeón en armar rompecabezas y como parte de sus responsabilidades y experiencia, deben escribir una guía o instructivo para armar rompecabezas, que sirva de base para equipos novatos. Actividad: Identificar y escribir en su cuaderno los componentes del problema Resolver el problema Criterios para el éxito: Cada equipo obtendrá la solución al problema Todos los integrantes deben asegurarse que el resto de su equipo entendió satisfactoriamente el proceso de resolución del problema. Responsabilidad Individual: Cualquier integrante del equipo podrá ser seleccionado al azar para explicar la solución al frente. FCC - BUAP Otoño 2009 24
Compartiendo la solución con todos Explicar el proceso que siguieron para escribir la guía para armar un rompecabezas FCC - BUAP Otoño 2009 25
Logró el equipo resolver el problema y es capaz de explicar el proceso? Cómo se podría mejorar la próxima vez? FCC - BUAP Otoño 2009 26
La técnica que acaban de utilizar se llama resolución por analogía. Consiste en relacionar un problema o una situación, con otra semejante que ya se ha resuelto anteriormente. Es decir, identificar algún patrón común. FCC - BUAP Otoño 2009 27
Receta de cocina Instructivo para construir papalotes Por Analogía Guía para armar rompecabezas FCC - BUAP Otoño 2009 28
El punto es que puede haber más de un patrón en el problema, más de una respuesta correcta y más de una perspectiva desde la cual ver un problema. Mediante está técnica se han originado soluciones creativas. Por ejemplo, William Harvey fue el primero en aplicar la analogía de bomba al corazón, lo que llevó al descubrimiento del sistema circulatorio del cuerpo. FCC - BUAP Otoño 2009
Otra técnica que también podría aplicarse es la de buscar cosas que sean familiares. La idea es nunca reinventar la rueda. Si una solución ya existe, usar esta. Es decir, si ya has resuelto el mismo o un problema similar antes, sólo repite la solución. Incluso para escribir la guía, se podría investigar que existe en internet! Similarmente FCC - BUAP Otoño 2009
Uno no aprende a ir a comprar el pan, después a ir a comprar leche, después huevo!, simplemente aprende uno a ir a comprar a la tienda, es decir, repite uno la misma solución. En programación ciertos problemas se repiten uno y otra vez, por ejemplo obtener la máxima y mínima calificación de un grupo de alumnos, es igual a obtener la temperatura máxima y mínima de un conjunto de datos. FCC - BUAP Otoño 2009
FCC - BUAP Otoño 2009
La técnica de análisis de medios y fines permite, trabajar con un objetivo o fin a la vez. Es decir, esta técnica consiste en descomponer el problema en sub-metas o sub-objetivos, ir escogiendo sub-metas para trabajar y solucionar una a una hasta completar la tarea, eliminando los obstáculos que le impiden llegar al estado final. Un buen ejemplo donde aplicar está técnica, es para el problema de ir de una ciudad a otra, con varias ciudades intermedias. En este caso las sub-metas son las ciudades intermedias y los medios son la forma de llegar de una ciudad a otra (avión, auto, caminando?) FCC - BUAP Otoño 2009
Ejemplo: Si quisiéramos recorrer la ruta Maya, podríamos identificar las ciudades involucradas como sub-metas y decidir como llegar ahí, por ejemplo para llegar de Puebla a San Cristóbal, no podría ser por avión, tendríamos que buscar otra sub-meta, Tuxtla Gutiérrez, y de Tuxtla a San Cristóbal por auto, y así a cada localidad. FCC - BUAP Otoño 2009
La última técnica para resolver problemas es combinar soluciones existentes. Esta técnica podría parecerse a la técnica de Buscar cosas que sean familiares, pero en este caso, es combinar las soluciones paso a paso, no solamente unir soluciones obtenidas separadamente. FCC - BUAP Otoño 2009
Ejemplo: Para calcular el promedio de una lista de valores, debemos hacer dos cosas: sumar los valores y contarlos. Si tenemos dos soluciones separadas, una para sumar los valores y otra para contarlos, podemos combinarlas y así paso a paso ir sumando y contando y al final tendremos la solución al problema. FCC - BUAP Otoño 2009
Qué hemos aprendido? FCC - BUAP Otoño 2009
Descripción del problema: En un salón de 35 alumnos aprobaron el 40%. Determinar el número de alumnos reprobados. Actividad: Analiza el problema Explica que técnica (o técnicas) de resolución de problemas se adaptaría mejor para resolver este problema Resuelve el problema usando dicha técnica FCC - BUAP Otoño 2009
Compartiendo la solución con todos FCC - BUAP Otoño 2009
En equipos de 5 integrantes, tienen 15 mins. resolver el siguiente problema Descripción: Supongamos que desea ir de Chihuahua a Cancún. Para logar esto se tienen varias opciones: usar el autobús, caminar, viajar en motocicleta, por tren, por avión o caminar. Dependiendo de las circunstancias, usted elegirá la opción que más le convenga. Si es que esta apurado, elegirá viajar por avión, si su presupuesto no es muy alto, probablemente elija viajar por autobús. Actividad: Analicen el problema Explicar que técnica (o técnicas) de resolución de problemas se adaptarían mejor para resolver este problema. Sugieran al menos 3 técnicas Escriban el proceso que se debe seguir para resolver el problema. FCC - BUAP Otoño 2009
Criterios para el éxito: Cada equipo obtendrá la solución al problema Todos los integrantes deben asegurarse que el resto de su equipo entendió satisfactoriamente el proceso de resolución del problema. Responsabilidad Individual: Cualquier integrante del equipo podrá ser seleccionado al azar para explicar la solución al frente. FCC - BUAP Otoño 2009
Solución: Medios - fines Inicio: Chihuahua Objetivo: Cancún Inicio: Chihuahua Objetivo: Cancún Inicio: Chihuahua Objetivos intermedios: México Meta: Cancún Medios: Volar, caminar, motocicleta, manejar, Autobús Revisando medios: Volar a México y entonces a Cancún, Volar a Toluca y entonces a Cancún; volar a Puebla y entonces a Cancún Medios intermedios al objetivo: avión, caminar, motocicleta, manejar, autobús. Solución: Tomar un vuelo cercano a México y entonces tomar otro vuelo a Cancún FCC - BUAP Otoño 2009
Algoritmo Qué es un algoritmo? FCC - BUAP Otoño 2009
Hasta el momento, hemos hecho: Guías para armar un rompecabezas Conjunto de instrucciones para resolver un problema Descripción de procesos recetas ect. FCC - BUAP Otoño 2009 44
Algoritmo Entrada Problema Acciones Operaciones Instrucciones Salida FCC - BUAP Otoño 2009
En general, un algoritmo describe el método mediante el cual se realiza una tarea. Un algoritmo es una secuencia de instrucciones, las cuales, realizadas adecuadamente, dan lugar al resultado deseado. La noción de algoritmo no es exclusiva de la computación ni de la Matemática. Existen algoritmos que describen toda clase de procesos de la vida real (por ejemplo, las recetas de cocina, las partituras musicales, los planos con las instrucciones para construir una casa, etc..). FCC - BUAP Otoño 2009 46
Un algoritmo es un conjunto finito de reglas que dan lugar a una secuencia de operaciones para resolver un tipo específico de problema. Un algoritmo debe cumplir cinco importantes condiciones: Finitud: Un algoritmo tiene que acabar siempre tras un número finito de pasos. Definibilidad: Cada paso de un algoritmo debe definirse de modo preciso; las acciones a realizar han de estar especificadas para cada caso rigurosamente y sin ambigüedad Conjunto de entradas: Debe existir un conjunto especificado de objetos, cada uno de los cuales constituyen los datos iniciales del caso particular del problema que resuelve el algoritmo. Conjunto de salida: salida o respuesta que debe obtener el algoritmo para los diferentes casos particulares del problema. Efectividad: Un algoritmo debe ser efectivo. FCC - BUAP Otoño 2009 47
Partes de un algoritmo Entrada: Información dada al algoritmo. Proceso: Operaciones o cálculos necesarios para encontrar la solución del problema. Salida: Respuestas dadas por el algoritmo o resultados finales de los procesos realizados. Entrada Proceso Salida
Ejemplo Desarrollar un algoritmo que calcule la superficie de un rectángulo proporcionando su base y altura. Preguntas: Especificaciones de entrada Que datos son de entrada? Cuántos datos se introducirán? Cuales son los datos de entrada válidos? Especificaciones de salida Cuáles son los datos de salida? Cuántos datos de salida se producirán? Qué formato y precisión tendrán los resultados? Algoritmo: Paso 1. Entrada desde el teclado, de los datos de base y altura. Paso 2. Cálculo de la superficie, multiplicando la base por la altura. Paso 3. Salida por pantalla de base, altura y superficie calculada.
El lenguaje algorítmico debe ser independiente de cualquier lenguaje de programación particular, pero fácilmente traducible a cada uno de ellos. Alcanzar estos objetivos conducirá al empleo de métodos normalizados para la representación de algoritmos, tales como los diagrama de flujo o pseudocódigo. Verificación de algoritmos Una vez que se ha terminado de escribir un algoritmo es necesario comprobar que realiza las tareas para las que se ha diseñado y produce el resultado correcto y esperado. El modo más normal de comprobar un algoritmo es mediante su ejecución manual, usando datos significativos que abarquen todo el posible rango de valores (prueba del algoritmo).
Ejemplo 1.1 Un procedimiento que realizamos varias veces al día consiste en lavarnos los dientes. Veamos la forma de expresar este procedimiento como un Algoritmo: 1. Tomar la crema dental 2. Destapar la crema dental 3. Tomar el cepillo de dientes 4. Aplicar crema dental al cepillo 5. Tapar la crema dental 6. Abrir la llave del lavamanos 7. Remojar el cepillo con la crema dental 8. Cerrar la llave del lavamanos 9. Frotar los dientes con el cepillo 10. Abrir la llave del lavamanos 11. Enjuagarse la boca 12. Enjuagar el cepillo 13. Cerrar la llave del lavamanos 14. Secarse la cara y las manos con una toalla
Ejemplo Veamos que algo tan común como los pasos para cambiar un foco se pueden expresar en forma de Algoritmo: 1. Ubicar una escalera o un banco debajo del foco fundido 1. Ubicar una escalera o un banco debajo del foco fundido 2. Tomar un foco nuevo 3. Subir por la escalera o al banco 4. Girar el foco hacia la izquierda hasta soltarlo 5. Enroscar el foco nuevo hacia la derecha en el plafón hasta apretarlo 6. Bajar de la escalera o del banco 7. Fin
Actividad Discutir en equipo el ejemplo del foco y proponer algunas mejoras. Luego, un voluntario debe pasar al pizarrón y escribir un Algoritmo con participación de toda la clase
Ejemplo Consideremos algo más complejo como el algoritmo de Euclides para hallar el Máximo Común Divisor (MCD) de dos números enteros positivos dados. Obsérvese que no se especifica cuáles son los dos números, pero si se establece claramente una restricción: deben ser enteros y positivos. ALGORITMO Paso 1: Inicio. Paso 2: Leer los dos números ( a y b ). Avanzar al paso 3. Paso 3: Comparar a y b para determinar cuál es mayor. Avanzar al paso 4. Paso 4: Si a y b son iguales, entonces ambos son el resultado esperado y termina el algoritmo. En caso contrario, avanzar al paso 5. Paso 5: Si a es menor que b, se deben intercambiar sus valores. Avanzar al paso 6; si a no es menor que b, avanzar al paso 6. Paso 6: Realizar la operación a menos b, asignar el valor de b a a y asignar el valor de la resta a b. Ir al paso 3.
Ejercicio A un trabajador le pagan según sus horas y una tarifa de pago por horas. Si la cantidad de horas trabajadas es mayor a 40 horas. La tarifa se incrementa en un 50% para las horas extras. Calcular el salario del trabajador, dadas las horas trabajadas y la tarifa.