¿Qué se entiende como solución a un problema?
Solucionar un problema consiste en contar con una
metodología para poder remediar inconvenientes presentados que obstaculizan la
realización o concretación de algún objetivo.
Solución de un problema implica un proceso, generar un rumbo
del cual no salirse para resolver o hacer cambios necesarios en situaciones que
representan inconformidad: problemas.
Se requieren determinadas técnicas y herramientas para poder
resolver dada dificultad. Aunado también a que el proceso de solucionar
problemas involucra una serie de capacidades y habilidades de pensamiento que
es de vital importancia que se desarrollen. Hay una actividad cognitiva en
donde se tiende a dar respuesta al problema presentado acorde a la magnitud de
éste.
Algunos problemas requieren de una resolución más prolongada
y compleja dependiendo su gravedad, mientras que otros se resuelven de manera
inmediata o menos complicada.
Solución a un problema según Pólya
Método de Pólya para resolver problemas matemáticos
Paso 1: Entender el problema
· ¿Cuál es la incógnita?, ¿Cuáles son los datos?
· ¿Cuál es la condición? ¿Es la condición suficiente para determinar la incógnita? ¿Es insuficiente? ¿Redundante? ¿Contradictoria?
Paso 2: Configurar un plan
· ¿Te has encontrado con un problema semejante? ¿O has visto el mismo problema planteado en forma ligeramente diferente?
· ¿Conoces algún problema relacionado con éste? ¿Conoces algún teorema que te pueda ser útil? Mira atentamente la incógnita y trata de recordar un problema que sea familiar y que tenga la misma incógnita o una incógnita similar.
· He aquí un problema relacionado al tuyo y que ya has resuelto ya. ¿Puedes utilizarlo? ¿Puedes utilizar su resultado? ¿Puedes emplear su método? ¿Te hace falta introducir algún elemento auxiliar a fin de poder utilizarlo?
· ¿Puedes enunciar al problema de otra forma? ¿Puedes plantearlo en forma diferente nuevamente? Recurre a las definiciones.
· Si no puedes resolver el problema propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un problema más particular? ¿Un problema análogo? ¿Puede resolver una parte del problema? Considera sólo una parte de la condición; descarta la otra parte; ¿en qué medida la incógnita queda ahora determinada? ¿En qué forma puede variar? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros datos apropiados para determinar la incógnita? ¿Puedes cambiar la incógnita? ¿Puedes cambiar la incógnita o los datos, o ambos si es necesario, de tal forma que estén más cercanos entre sí?
· ¿Has empleado todos los datos? ¿Has empleado toda la condición? ¿Has considerado todas las nociones esenciales concernientes al problema?
Paso 3: Ejecutar el plan
· Al ejecutar tu plan de la solución, comprueba cada uno de los pasos
· ¿Puedes ver claramente que el paso es correcto? ¿Puedes demostrarlo?
Paso 4: Examinar la solución obtenida
· ¿Puedes verificar el resultado? ¿Puedes el razonamiento?
· ¿Puedes obtener el resultado en forma diferente? ¿Puedes verlo de golpe? ¿Puedes emplear el resultado o el método en algún otro problema?
Método de Pólya para resolver problemas de programación
Paso 1: Entender el problema
· ¿Cuáles son las argumentos? ¿Cuál es el resultado? ¿Cuál es nombre de la función? ¿Cuál es su tipo?
· ¿Cuál es la especificación del problema? ¿Puede satisfacerse la especificación? ¿Es insuficiente? ¿Redundante? ¿Contradictoria? ¿Qué restricciones se suponen sobre los argumentos y el resultado?
· ¿Puedes descomponer el problema en partes? Puede ser útil dibujar diagramas con ejemplos de argumentos y resultados.
Paso 2: Diseñar el programa
· ¿Te has encontrado con un problema semejante? ¿O has visto el mismo problema planteado en forma ligeramente diferente?
· ¿Conoces algún problema relacionado con éste? ¿Conoces alguna función que te pueda ser útil? Mira atentamente el tipo y trata de recordar un problema que sea familiar y que tenga el mismo tipo o un tipo similar.
· ¿Conoces algún problema familiar con una especificación similar?
· He aquí un problema relacionado al tuyo y que ya has resuelto. ¿Puedes utilizarlo? ¿Puedes utilizar su resultado? ¿Puedes emplear su método? ¿Te hace falta introducir alguna función auxiliar a fin de poder utilizarlo?
· Si no puedes resolver el problema propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un problema más particular? ¿Un problema análogo?
· ¿Puede resolver una parte del problema? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros datos apropiados para determinar la incógnita? ¿Puedes cambiar la incógnita? ¿Puedes cambiar la incógnita o los datos, o ambos si es necesario, de tal forma que estén más cercanos entre sí?
· ¿Has empleado todos los datos? ¿Has empleado todas las restricciones sobre los datos? ¿Has considerado todas los requisitos de la especificación?
Paso 3: Escribir el programa
· Al escribir el programa, comprueba cada uno de los pasos y funciones auxiliares.
· ¿Puedes ver claramente que cada paso o función auxiliar es correcta?
· Puedes escribir el programa en etapas. Piensas en los diferentes casos en los que se divide el problema; en particular, piensas en los diferentes casos para los datos. Puedes pensar en el cálculo de los casos independientemente y unirlos para obtener el resultado final
· Puedes pensar en la solución del problema descomponiéndolo en problemas con datos más simples y uniendo las soluciones parciales para obtener la solución del problema; esto es, por recursión.
· En su diseño se puede usar problemas más generales o más particulares. Escribe las soluciones de estos problemas; ellas puede servir como guía para la solución del problema original, o se pueden usar en su solución.
· ¿Puedes apoyarte en otros problemas que has resuelto? ¿Pueden usarse? ¿Pueden modificarse? ¿Pueden guiar la solución del problema original?
Paso 4: Examinar la solución obtenida
· ¿Puedes comprobar el funcionamiento del programa sobre una colección de argumentos?
· ¿Puedes comprobar propiedades del programa?
· ¿Puedes escribir el programa en una forma diferente?
Solución a un problema según Pólya
Método de Pólya para resolver problemas matemáticos
Paso 1: Entender el problema
Paso 1: Entender el problema
· ¿Cuál es la incógnita?, ¿Cuáles son los datos?
· ¿Cuál es la condición? ¿Es la condición suficiente para determinar la incógnita? ¿Es insuficiente? ¿Redundante? ¿Contradictoria?
Paso 2: Configurar un plan
· ¿Te has encontrado con un problema semejante? ¿O has visto el mismo problema planteado en forma ligeramente diferente?
· ¿Conoces algún problema relacionado con éste? ¿Conoces algún teorema que te pueda ser útil? Mira atentamente la incógnita y trata de recordar un problema que sea familiar y que tenga la misma incógnita o una incógnita similar.
· He aquí un problema relacionado al tuyo y que ya has resuelto ya. ¿Puedes utilizarlo? ¿Puedes utilizar su resultado? ¿Puedes emplear su método? ¿Te hace falta introducir algún elemento auxiliar a fin de poder utilizarlo?
· ¿Puedes enunciar al problema de otra forma? ¿Puedes plantearlo en forma diferente nuevamente? Recurre a las definiciones.
· Si no puedes resolver el problema propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un problema más particular? ¿Un problema análogo? ¿Puede resolver una parte del problema? Considera sólo una parte de la condición; descarta la otra parte; ¿en qué medida la incógnita queda ahora determinada? ¿En qué forma puede variar? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros datos apropiados para determinar la incógnita? ¿Puedes cambiar la incógnita? ¿Puedes cambiar la incógnita o los datos, o ambos si es necesario, de tal forma que estén más cercanos entre sí?
· ¿Has empleado todos los datos? ¿Has empleado toda la condición? ¿Has considerado todas las nociones esenciales concernientes al problema?
Paso 3: Ejecutar el plan
· Al ejecutar tu plan de la solución, comprueba cada uno de los pasos
· ¿Puedes ver claramente que el paso es correcto? ¿Puedes demostrarlo?
Paso 4: Examinar la solución obtenida
· ¿Puedes verificar el resultado? ¿Puedes el razonamiento?
· ¿Puedes obtener el resultado en forma diferente? ¿Puedes verlo de golpe? ¿Puedes emplear el resultado o el método en algún otro problema?
Método de Pólya para resolver problemas de programación
Paso 1: Entender el problema
Paso 1: Entender el problema
· ¿Cuáles son las argumentos? ¿Cuál es el resultado? ¿Cuál es nombre de la función? ¿Cuál es su tipo?
· ¿Cuál es la especificación del problema? ¿Puede satisfacerse la especificación? ¿Es insuficiente? ¿Redundante? ¿Contradictoria? ¿Qué restricciones se suponen sobre los argumentos y el resultado?
· ¿Puedes descomponer el problema en partes? Puede ser útil dibujar diagramas con ejemplos de argumentos y resultados.
Paso 2: Diseñar el programa
· ¿Te has encontrado con un problema semejante? ¿O has visto el mismo problema planteado en forma ligeramente diferente?
· ¿Conoces algún problema relacionado con éste? ¿Conoces alguna función que te pueda ser útil? Mira atentamente el tipo y trata de recordar un problema que sea familiar y que tenga el mismo tipo o un tipo similar.
· ¿Conoces algún problema familiar con una especificación similar?
· He aquí un problema relacionado al tuyo y que ya has resuelto. ¿Puedes utilizarlo? ¿Puedes utilizar su resultado? ¿Puedes emplear su método? ¿Te hace falta introducir alguna función auxiliar a fin de poder utilizarlo?
· Si no puedes resolver el problema propuesto, trata de resolver primero algún problema similar. ¿Puedes imaginarte un problema análogo un tanto más accesible? ¿Un problema más general? ¿Un problema más particular? ¿Un problema análogo?
· ¿Puede resolver una parte del problema? ¿Puedes deducir algún elemento útil de los datos? ¿Puedes pensar en algunos otros datos apropiados para determinar la incógnita? ¿Puedes cambiar la incógnita? ¿Puedes cambiar la incógnita o los datos, o ambos si es necesario, de tal forma que estén más cercanos entre sí?
· ¿Has empleado todos los datos? ¿Has empleado todas las restricciones sobre los datos? ¿Has considerado todas los requisitos de la especificación?
Paso 3: Escribir el programa
· Al escribir el programa, comprueba cada uno de los pasos y funciones auxiliares.
· ¿Puedes ver claramente que cada paso o función auxiliar es correcta?
· Puedes escribir el programa en etapas. Piensas en los diferentes casos en los que se divide el problema; en particular, piensas en los diferentes casos para los datos. Puedes pensar en el cálculo de los casos independientemente y unirlos para obtener el resultado final
· Puedes pensar en la solución del problema descomponiéndolo en problemas con datos más simples y uniendo las soluciones parciales para obtener la solución del problema; esto es, por recursión.
· En su diseño se puede usar problemas más generales o más particulares. Escribe las soluciones de estos problemas; ellas puede servir como guía para la solución del problema original, o se pueden usar en su solución.
· ¿Puedes apoyarte en otros problemas que has resuelto? ¿Pueden usarse? ¿Pueden modificarse? ¿Pueden guiar la solución del problema original?
Paso 4: Examinar la solución obtenida
· ¿Puedes comprobar el funcionamiento del programa sobre una colección de argumentos?
· ¿Puedes comprobar propiedades del programa?
· ¿Puedes escribir el programa en una forma diferente?
Solución de un problema expresado como algoritmo
La solución de un problema con la ayuda de un algoritmo es por medio de un Diagrama de flujo.
Durante el proceso de diseño del algoritmo es preciso disponer de alguna herramienta para describirlo, se necesita disponer de un lenguaje algorítmico con el que reflejar las sucesivas acciones que resuelven el problema y que, además, soporte lo mejor posible el proceso sucesivo de refinamiento en subproblemas. Una primera aproximación consistiría en utilizar para describir el algoritmo el lenguaje natural (en nuestro caso el español), pero debido a los innumerables problemas que plantea como la imprecisión o la ambigüedad, se ha optado por utilizar otras herramientas algorítmicas que describan con mayor exactitud la secuencia de acciones y el orden en el que han de ejecutarse. La característica común de cualquier lenguaje algorítmico es que debe ser independiente del lenguaje de programación a utilizar en la codificación. Un factor importante es que permita una traducción clara del algoritmo al programa. La decisión final del lenguaje depende de otras consideraciones y cualquier algoritmo debe de poder implementarse en cualquier lenguaje de programación. La estructura de un algoritmo se puede representar con un diagrama estructurado en forma de
bloques, donde se muestren los sucesivos refinamientos a partir del problema inicial. Cálculo Longitud y Superficie Leer Radio Escribir L Escribir S Entrada de Datos Salida Resultados L = 2π R Cálculo de Longitud S = π R 2 Cálculo de Superficie Figura 3. Diagrama de bloques para el cálculo de la superficie y longitud del círculo Las herramientas de programación utilizadas como lenguajes algorítmicos que estudiaremos a continuación son: 1) Diagramas de flujo. Tema 2. Diseño de algoritmos y programas 9 Informática. Facultad de Ciencias (Matemáticas) 2) Pseudocódigo. Los diagramas de flujo han sido la herramienta de programación clásica por excelencia y la más usada. Tienen la ventaja de que muestran el flujo lógico del algoritmo de una manera clara, pero tienen varias limitaciones que han hecho usarlos cada vez menos. Las limitaciones son que su complejidad aumenta con la complejidad del problema, son difíciles de actualizar y oscurecen la estructura del algoritmo. Como alternativa a los diagramas de flujo y cada vez más en uso está el pseudocódigo, que permite una aproximación del algoritmo al lenguaje natural y por tanto una redacción rápida del mismo, con el inconveniente de la pérdida consecuente de precisión. Con cualquiera de estas herramientas, tiene que quedar bien reflejado el flujo de control del algoritmo, que es el orden temporal en el cual se ejecutan los pasos individuales del algoritmo. El flujo normal de un algoritmo es el flujo lineal o secuencial de los pasos (un paso a continuación de otro). Para apartarse del flujo normal lineal están las estructuras de control, que son construcciones algorítmicas que afectan directamente al flujo de control de un algoritmo. Una permite repetir automáticamente un grupo de pasos (repetición). Otra permite seleccionar una acción de entre un par de alternativas específicas, teniendo en cuenta determinas condiciones.
Ejemplos de algoritmos representados en diagramas de flujo
Solución de un problema expresado como algoritmo
La solución de un problema con la ayuda de un algoritmo es por medio de un Diagrama de flujo.
Durante el proceso de diseño del algoritmo es preciso disponer de alguna herramienta para describirlo, se necesita disponer de un lenguaje algorítmico con el que reflejar las sucesivas acciones que resuelven el problema y que, además, soporte lo mejor posible el proceso sucesivo de refinamiento en subproblemas. Una primera aproximación consistiría en utilizar para describir el algoritmo el lenguaje natural (en nuestro caso el español), pero debido a los innumerables problemas que plantea como la imprecisión o la ambigüedad, se ha optado por utilizar otras herramientas algorítmicas que describan con mayor exactitud la secuencia de acciones y el orden en el que han de ejecutarse. La característica común de cualquier lenguaje algorítmico es que debe ser independiente del lenguaje de programación a utilizar en la codificación. Un factor importante es que permita una traducción clara del algoritmo al programa. La decisión final del lenguaje depende de otras consideraciones y cualquier algoritmo debe de poder implementarse en cualquier lenguaje de programación. La estructura de un algoritmo se puede representar con un diagrama estructurado en forma de
bloques, donde se muestren los sucesivos refinamientos a partir del problema inicial. Cálculo Longitud y Superficie Leer Radio Escribir L Escribir S Entrada de Datos Salida Resultados L = 2π R Cálculo de Longitud S = π R 2 Cálculo de Superficie Figura 3. Diagrama de bloques para el cálculo de la superficie y longitud del círculo Las herramientas de programación utilizadas como lenguajes algorítmicos que estudiaremos a continuación son: 1) Diagramas de flujo. Tema 2. Diseño de algoritmos y programas 9 Informática. Facultad de Ciencias (Matemáticas) 2) Pseudocódigo. Los diagramas de flujo han sido la herramienta de programación clásica por excelencia y la más usada. Tienen la ventaja de que muestran el flujo lógico del algoritmo de una manera clara, pero tienen varias limitaciones que han hecho usarlos cada vez menos. Las limitaciones son que su complejidad aumenta con la complejidad del problema, son difíciles de actualizar y oscurecen la estructura del algoritmo. Como alternativa a los diagramas de flujo y cada vez más en uso está el pseudocódigo, que permite una aproximación del algoritmo al lenguaje natural y por tanto una redacción rápida del mismo, con el inconveniente de la pérdida consecuente de precisión. Con cualquiera de estas herramientas, tiene que quedar bien reflejado el flujo de control del algoritmo, que es el orden temporal en el cual se ejecutan los pasos individuales del algoritmo. El flujo normal de un algoritmo es el flujo lineal o secuencial de los pasos (un paso a continuación de otro). Para apartarse del flujo normal lineal están las estructuras de control, que son construcciones algorítmicas que afectan directamente al flujo de control de un algoritmo. Una permite repetir automáticamente un grupo de pasos (repetición). Otra permite seleccionar una acción de entre un par de alternativas específicas, teniendo en cuenta determinas condiciones.
Ejemplos de algoritmos representados en diagramas de flujo
¿Cómo se puede comprobar la solución a un problema?
Comprobar los resultados supone comparar con el contexto el
resultado obtenido a partir del modelo del problema utilizado, y su diferencia
con la realidad que se desea resolver. Esto supone:
- Leer de nuevo el enunciado y comprobar que lo que se pedía
es lo que se ha averiguado.
- Se debe poner atención en la solución. ¿Parece lógicamente
posible?
- ¿Es posible comprobar la solución?
- ¿Hay alguna otra forma de resolver el problema?
- ¿Es posible encontrar alguna otra solución?
- Se debe acompañar la solución de una explicación que indique
claramente lo que se ha encontrado
- ¿Es posible utilizar el resultado obtenido y el proceso
seguido para formular y plantear nuevos problemas?
Resolver problemas invita a "movilizar recursos",
a situarse en un nivel metacognitivo, nivel que diferencia a quienes resuelven
bien problemas de aquellos que aún no lo logran.
¿Cómo se puede comprobar la solución a un problema?
Comprobar los resultados supone comparar con el contexto el
resultado obtenido a partir del modelo del problema utilizado, y su diferencia
con la realidad que se desea resolver. Esto supone:
- Leer de nuevo el enunciado y comprobar que lo que se pedía
es lo que se ha averiguado.
- Se debe poner atención en la solución. ¿Parece lógicamente
posible?
- ¿Es posible comprobar la solución?
- ¿Hay alguna otra forma de resolver el problema?
- ¿Es posible encontrar alguna otra solución?
- Se debe acompañar la solución de una explicación que indique
claramente lo que se ha encontrado
- ¿Es posible utilizar el resultado obtenido y el proceso
seguido para formular y plantear nuevos problemas?
Resolver problemas invita a "movilizar recursos",
a situarse en un nivel metacognitivo, nivel que diferencia a quienes resuelven
bien problemas de aquellos que aún no lo logran.
No hay comentarios:
Publicar un comentario