You are on page 1of 8

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

CAPTULO I

RESOLUCIN DE PROBLEMAS Y ALGORITMOS

1.1 CMO ENCARAR LOS PROBLEMAS? Al tratar de resolver un problema, en general, se puede repetidamente cambiar el punto de vista acerca del mismo, es decir, la forma de verlo. La comprensin de un problema probablemente sea ms bien incompleta cuando se comienza a trabajar sobre l; cuando se hace algn progreso la visin del mismo se modifica y es nuevamente distinta cuando se ha obtenido la solucin. Con la finalidad de agrupar convenientemente los aspectos a considerar es aconsejable distinguir tres etapas: Comprender el problema: Para ello se debe ver claramente qu es lo que se requiere pues mal se puede responder a una cuestin que no se comprende. En esta etapa se deber ser capaz de reconocer cuestiones tales como: principales partes del problema, la(s) incgnita(s) del mismo, es decir lo que no se conoce, los datos del problema, las condiciones y/o restricciones del mismo. Bosquejar una solucin: Bosquejar una solucin implica conocer qu pasos, clculos, etc., se deben realizar en orden de obtener valor(es) para la(s) incgnita(s) del problema. Encontrar una solucin no es siempre una tarea fcil, para ello influyen factores tales como: Conocimientos previos, buenos hbitos mentales, concentracin sobre el propsito. Es importante, en esta etapa, convencerse que cada paso en el razonamiento es correcto. Mirar haca atrs: Esta es una excelente prctica que casi nunca se realiza, cuando se ha obtenido una solucin a un problema no debera cerrarse el cuaderno y pensar en cualquier otra cosa puesto que al hacerlo se pierde una fase importante e instructiva del trabajo realizado. Mirando haca atrs, a partir de la solucin completa, reconsiderando y reexaminando el resultado y el camino que condujo a l, se consolida el conocimiento y se desarrolla la habilidad para resolver problemas, puesto que no siempre un problema es examinado exhaustivamente. Con suficiente anlisis y concentracin casi siempre es posible mejorar la comprensin de la solucin o encontrar soluciones alternativas, pueden tambin aparecer casos no pensados en la primera solucin. Incluso es una prctica deseable el pensar acerca de la posibilidad de usar el resultado o el mtodo para algn otro tipo de problema.

1.2 PROBLEMAS 1

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

Como ser pensante el hombre se ve continuamente enfrentado a una gran diversidad de problemas. Por cul candidato votar? Cules son las races de una ecuacin? Cmo ganar un partido de ajedrez? Aunque estos problemas son aparentemente diferentes, todo problema puede pensarse como una discrepancia entre un estado actual o inicial y un estado deseado o final. Para pasar de un estado al otro se deben realizar determinadas tareas que son legales. A estas tareas se las denominan habitualmente acciones. El proceso de hallar una solucin puede pensarse como un proceso de seleccin. Cuando el problema es votar a un determinado candidato, la solucin consistir, en funcin de nuestra visin del mundo, de determinar cules son las caractersticas deseables (honestidad, credibilidad, etc.) y cul es su programa de accin en funcin de las expectativas en educacin, salud, vivienda, etc. Si el problema es ejecutar una operacin aritmtica, el resultado ser un nmero. En cualquier caso se est seleccionando una respuesta adecuada. En este sentido se puede distinguir entre dos grandes categoras de problemas: en la primera, la solucin es subjetiva (el caso de elegir un candidato) mientras que en la segunda podemos ubicar aqullos que poseen soluciones objetivas (realizar una operacin aritmtica). En la primera categora el mismo problema, dependiendo de diferentes sistemas de valores y criterios, puede dar lugar a soluciones muy dispares y an contrapuestas segn quien lo resuelva. En la segunda categora se ubican aquellos problemas para los cuales es posible hallar soluciones que no dependan de elementos subjetivos; el planteo contiene un conjunto de condiciones o restricciones que permiten decidir si una respuesta constituye una solucin o no para el problema. La bsqueda de la solucin de un problema es una tarea difcil de sistematizar. Cada problema puede presentarse en forma aparentemente aislada y frecuentemente no sabemos como encararlo. Sin embargo existen algunas pautas tiles que, de ser seguidas, pueden ayudarnos a enfrentar un problema. Estas pautas (referentes a la etapa uno, sealada al inicio del captulo) son: Establecer el problema en forma clara y entenderlo completamente. Clarificar cualquier ambigedad que presente el enunciado del problema. Definir claramente qu se quiere hacer. Especificar con precisin todas las restricciones o condiciones que debe satisfacer la solucin. Identificar claramente la informacin disponible. Explicitar toda informacin implcita en el planteo que pueda resultar til. Encontrar una representacin adecuada para esta informacin. Retomar el enunciado original ante un callejn sin salida.

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

Estas pautas no deben seguirse necesariamente en el orden expuesto; muchas tareas se repiten y a menudo se relee el enunciado con mayor concentracin, focalizando la atencin en algn aspecto que tal vez result inadvertido en un primer momento. Estas pautas van a ser imprescindibles cuando intentemos escribir un algoritmo, para encontrar una solucin a un problema, a partir de un enunciado o de las necesidades expresadas por un usuario. Es frecuente que al intentar hallar la solucin del problema impongamos ms restricciones a la incgnita que las implicadas en el enunciado. Por ejemplo, supongamos tener seis lpices de igual longitud y deseamos formar cuatro tringulos equilteros de igual tamao, sin que se crucen los lpices. Intente hallar la solucin... Casi con seguridad, la mayor parte de los lectores han intentado formar figuras sobre una mesa o en el suelo, restringiendo el problema al plano. Probablemente esta restriccin se deba a la asociacin natural entre un tringulo y el plano. Intente ahora una solucin en el espacio... El enunciado dado no establece ningn tipo de pauta para encontrar la solucin; es ms se aprovecha de la idea preestablecida de que la mesa es un plano, en el que se acomodan los lpices para formar los tringulos, pero el espacio es un conjunto infinito de planos. En otras ocasiones, el enunciado impone en forma ms o menos explcita y precisa, pautas para hallar la solucin. En este caso, en el ejemplo dado, podra haber dicho no se restrinja al plano. Tambin resulta frecuente el caso de enunciados que presentan cierta ambigedad. Por ejemplo, cuentan que un cazador empedernido vio 16 palomas cmodamente apoyadas en un balcn y lanz una perdigonada, matando a 4. Cuntas quedaron?. Evidentemente la respuesta inmediata es 12!. Sin embargo, a poco que lo pensemos, vemos que en realidad quedaron las 4 muertas, pues las otras volaron. En fin ... la pregunta Cuntas quedaron?, es interpretada unnimemente como Cuntas quedaron vivas?, cuya respuesta es obvia. Tambin podra interpretarse como Cuntas quedaron en el balcn?, en cuyo caso, la segunda respuesta es la apropiada. Esta es una situacin en la cual el problema no fue bien especificado y no debe confundirse con un problema con varias soluciones. Existen algunos otros pasos que siempre que sea posible es importante aplicarlos. Por ejemplo, eliminar toda aquella informacin redundante o irrelevante. Sin embargo, es muy difcil decidir desde el principio qu datos podemos descartar pues no van a ayudarnos a hallar una solucin. 1.3 REPRESENTACIN DE PROBLEMAS ABSTRACCIONES Un problema se presenta en general bajo la forma de un enunciado. 3

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

No consideraremos el caso de enunciados incompletos, ambiguos o contradictorios porque en estos casos el problema no est bien especificado y deberamos comenzar por encontrar un planteo adecuado. La principal dificultad para hallar la solucin de un problema, no es la falta de informacin, sino mas bien la incapacidad para utilizar convenientemente la informacin provista. An cuando un enunciado contenga informacin suficiente para hallar la solucin del problema, es probable que haya informacin irrelevante, redundante o implcita. La capacidad de la mente para manipular informacin es muy limitada. Una persona no es capaz de considerar muchos conceptos a la vez si no hay relacin entre ellos. Por ejemplo, observe la siguiente secuencia de dgitos durante 10 segundos: 307159462845 Al dejar de mirar la secuencia, Cuntos dgitos puede recordar?. En promedio, las personas pueden retener y repetir unos 7 dgitos. La mayora de los problemas abarcan muchos ms tems de informacin. Un punto fundamental entonces para hallar la solucin de un problema es seleccionar los elementos de informacin que resulten relevantes. La informacin puede ir organizndose en bloques, de manera tal de ir creando una clasificacin. Por ejemplo, tems tales como manzanas, naranjas e higos, pueden agruparse en frutas. Frutas, verduras y carnes pueden conformar la clase comidas frescas. Las comidas frescas junto con los embutidos y conservas pueden agruparse en comidas, y as siguiendo. El agrupar tems ayuda a retener y manipular ms informacin. Para comprobarlo, agrupe de a tres dgitos la secuencia anterior e intente nuevamente retener los nmeros formados. En el estudio de la lengua, se recurre frecuentemente a la frase "El mi tute mas si sede", para agrupar a todos los monoslabos que pueden acentuarse o no. Evidentemente, es muy fcil recordar esta oracin, an cuando no tiene sentido, en lugar de memorizar las 8 palabras aisladamente. Frecuentemente resulta til desarrollar patrones que incluyan tems aparentemente sin relacin. Los diagramas, los grficos y las ecuaciones son ejemplos de herramientas que permiten condensar informacin. El primer paso en la bsqueda de la solucin es encontrar una representacin adecuada para el problema, que descarte la informacin superflua y rescate aqulla que resulte relevante. La tcnica para encontrar un planteo ms conciso del problema se conoce como abstraccin. Una abstraccin de esta clase se realiza en varias etapas:

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

Transformar el enunciado original en uno tan simple como sea posible. La nueva versin no necesariamente ser mas corta que la original. Identificar los objetos relevantes y las relaciones entre estos objetos. Agrupar los objetos en clases. Nombrar los objetos o las clases segn alguna notacin adecuada. Definir las operaciones que pueden aplicarse sobre los objetos. Utilizar, siempre que sea posible, una notacin ms abstracta que una descripcin verbal. El objetivo de la abstraccin es construir una simplificacin de la realidad que rescate nicamente la informacin relevante para hallar la solucin del problema. Intentamos construir un modelo de la realidad. Un modelo es precisamente una representacin simplificada de la realidad. La construccin de un modelo es til porque slo son considerados los elementos relevantes y as la bsqueda de la solucin no se ve entorpecida por el exceso de detalles. En lo que sigue recapitularemos y profundizaremos algunos de los conceptos previamente definidos tales como el de algoritmo y de otros conceptos bsicos relacionados. 1.4 RESOLUCIN DE PROBLEMAS Y COMPUTADORAS Vamos a reconsiderar ahora las etapas de resolucin de problemas, teniendo en mente, la existencia de una computadora: 1. La primer etapa, involucra la formulacin del problema, tal como nosotros ya la conocemos. 2. La segunda, es la eleccin de un mtodo o procedimiento para hallar la solucin del mismo, donde est implcito el concepto de representacin ya estudiado, es decir encontrar un algoritmo. 3. La tercera, llamada codificacin, consiste en expresar el algoritmo de manera tal que pueda ser interpretado por un procesador. 4. Finalmente, la ltima etapa es la ejecucin del procedimiento elegido para obtener la solucin del problema.

1.4.1. Definiciones Asociadas Ahora formalizaremos algunos de los conceptos importantes y relacionados: Los enunciados en general describen, cada uno, un determinado trabajo. Adems, definiremos de forma genrica un procesador como: Toda entidad capaz de comprender las acciones elementales de un algoritmo y ejecutar el trabajo indicado por el mismo.

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

Es importante sealar que bajo esta definicin un procesador puede ser una persona, una calculadora, una computadora o una mquina cualesquiera. El procesador no puede realizar el trabajo demandado si no cuenta con los recursos necesarios. Entonces definiremos: El conjunto de todos los recursos necesarios para la ejecucin de un trabajo, expresado a travs de un algoritmo, constituye el ambiente del mismo. Cualesquiera sea el ambiente descripto, la ejecucin de un trabajo, en general, no es inmediata; ella supone un conjunto de pasos para llegar al fin perseguido. Llamaremos a cada uno de estos pasos accin. Una accin es un evento que modifica al ambiente. Adems, cualquier procesador debe respetar la secuencia de acciones. Las acciones deben ser ejecutadas en el orden en que aparecen en el mtodo o procedimiento seleccionado. Tambin se hace notar que una misma accin puede aparecer, ms de una vez, en la descripcin de un trabajo. El procesador tiene la capacidad de interpretar cada una de las acciones descriptas, en cuyo caso estas acciones constituyen acciones primitivas. Para un procesador dado, una accin es primitiva si su enunciado puede ser ejecutado sin informacin adicional. En consecuencia, una accin no primitiva debe ser descompuesta en acciones primitivas, para un procesador dado. Existen distintas tcnicas para descomponer una accin en acciones primitivas. Uno de los mtodos, denominado de refinamiento sucesivo consiste en:

Dado un trabajo T, descripto por medio de acciones no primitivas, tal que, transforma el ambiente, desde el estado inicial E0 hasta un estado final Ef, se puede encontrar una descomposicin t1, t2, ... , tn que constituye una secuencia de acciones primitivas que ejecuta el trabajo T.

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

Grficamente: T (trabajo completo) E0 t1 E1 t2 E2 t3 E3 tn Ef

t1,1

t1,2

t1,3

Descomposicin de t1 en una secuencia de 3 acciones

Como se indica en la figura, cada trabajo (tarea) ti, transforma el ambiente de un estado Ei-1, inicial para la tarea i, en un estado Ei, final de la tarea ti, que a su vez, es el estado inicial para la tarea ti+1. Para cada tarea ti existen dos posibilidades, a saber: ti es una accin primitiva para el procesador, dando as por finalizada la descomposicin de ti. ti no es una accin primitiva para el procesador debindose descomponer, en una nueva secuencia ti,1, ti,2, ..., ti,k. El proceso explicado anteriormente debe ser aplicado hasta que todas las tareas involucradas puedan ser llevadas a cabo a travs de alguna accin primitiva. Ahora adaptemos la definicin de algoritmo a la terminologa recientemente definida: Un algoritmo es una secuencia finita y ordenada de acciones primitivas que pueden ser ejecutadas por un procesador y que lleva a la solucin de un problema. Agreguemos, por ltimo, que un algoritmo no debe ser ambiguo, es decir, que si estamos trabajando dentro de un cierto ambiente, cada accin primitiva debe significar, slo una cosa, bien determinada y sin lugar a dudas. Veamos un ejemplo simple y completo. Enunciado: Sumar los nmeros 124, 59 y 3 usando una calculadora de bolsillo. Procesador: Una persona que entienda la tarea descripta y cuente con los elementos necesarios para realizarla.

UNSL Departamento de Informtica

Resolucin de Problemas y Algoritmos

Ambiente: la calculadora de bolsillo. Acciones Primitivas: En la notacin que sigue < > significa tecla. AP1. Oprimir <C> (limpiar pantalla). AP2. Oprimir <dig>. AP3. Oprimir <+>. AP4. Oprimir <=> (muestra el resultado en el visor). Algoritmo: Versin 1: t1. Limpiar visor. t2. Ingresar nmero 124 t3. Oprimir tecla de suma. t4. Ingresar nmero 59 t5. Oprimir tecla de suma. t6. Ingresar nmero 3 t7. Oprimir tecla de igual para obtener el resultado. Como no todas las tareas anteriormente descriptas pueden ser llevadas a cabo directamente por acciones primitivas (ver t2 y t4) deberemos efectuar el proceso de refinamiento sucesivo sobre las mismas, que en este ejemplo es sumamente sencillo. En el caso de t6, no es necesaria una descomposicin ya que dicha tarea puede ser llevada a cabo directamente por la accin primitiva AP2. Luego, con un paso ms en el refinamiento se obtiene: Versin 2 (final): t1. Oprimir <C> (limpiar pantalla). t2,1. Oprimir <1>. t2,2. Oprimir <2>. t2,3. Oprimir <4>. t3. Oprimir <+>. t4,1. Oprimir <5>. t4,2. Oprimir <9>. t5. Oprimir <+>. t6. Oprimir <3>. t7. Oprimir <=> (muestra el resultado en el visor).

You might also like