You are on page 1of 2

Existe un buen nmero de mtodos que los matemticos y cientficos emplean cuando deben resolver problemas complejos.

Uno de los ms verstiles y simples de entender es el denominado algoritmo voraz (Greedy algorithm). A pesar de que no siempre es capaz de encontrar una respuesta ptima, se lo utiliza con frecuencia dado que es muy rpi do. Te contamos en qu consiste, qu ventajas tiene y cmo utilizarlo. Para resolver un problema se deben seguir una serie de pasos. Estos pasos deben estar claramente definidos, sin importar que vayan a ser ejecutados por un orden ador o por un humano. La correcta definicin de esos pasos garantiza que si se apl ica el sistema dos veces a un determinado problema, la solucin ser la misma. Esta verdadera receta se llama algoritmo, y no es otra cosa que una secuencia de pasos ordenados y finitos con los que podemos resolver un problema determinado en un t iempo mnimo. El vocablo algoritmo proviene del latn dixit algorithmus , y ste a su vez el nombre de un matemtico persa llamado Muhammad ibn Musa al-Jwarizmi. El algoritmo voraz Hay problemas que a pesar de tener un planteo sumamente sencillo, carecen de una solucin que pueda ser considerada trivial. Imaginemos, por ejemplo, un viajante de comercio que debe recorrer 25 ciudades distribuidas por el interior de Espaa de que forma debera hacerlo para completar su trabajo recorriendo el menor nmero de kilmetros posible? El problema seguramente es de inters para un gran nmero de empre sas, se puede definir claramente en pocas palabras, pero su solucin demandara a un ordenador varios aos de trabajo. Esto se debe a que la cantidad de recorridos po sibles es de 25! (25 factorial, o sea, 1 x 2 x 3 x 4 x 5 x x 24 x 25), es decir, hay 15.511.210.043.330.985.984.000.000 recorridos para probar y descartar antes de saber cual es el ptimo. Analizando mil millones de recorridos por segundo, de moraramos 491,857,244 aos en averiguar cual es el recorrido ptimo para nuestro viaj ante. Esto sirve para darnos cuenta de la importancia que tiene un algoritmo rpid o, aun cuando no siempre sea capaz de encontrar el mejor resultado posible. El algoritmo voraz

El denominado algoritmo voraz sigue una estrategia sencilla pero eficaz. Simplemen te, se trata de elegir la opcin ptima en cada paso local, con la esperanza de lle gar a una solucin general ptima. En el ejemplo de nuestro viajante de comercio, ca da paso podra ser tan simple como -estando en la ciudad A - dirigirse a la ms cercana que an no hayamos visitado. Una vez alli, repetir el procedimiento una y otra ve z hasta que hayamos completado el recorrido. Seguramente no obtendremos un resul tado ptimo, pero puede encontrarse un camino bastante bueno en un tiempo despreci able. Este tipo de algoritmo, a veces llamado vido, devorador o goloso, es el que menos dificultades presenta a los investigadores que deben disear y comprobar el funcionamiento de diferentes estrategias. El nombre voraz se debe a que, en cada paso, el algoritmo escoge el mejor "pedazo" que es capaz de "comer" sin preocupa rse de los pasos que restan hasta encontrar la solucin. Un algoritmo de este tipo nunca deshace una decisin ya tomada: una vez incorporado, un candidato a la soluc in (ir de la ciudad A a la B , por ejemplo) formar parte de la solucin. Y cada candida rechazado es eliminado definitivamente. El algoritmo voraz Una vez aclarado el hecho de que los algoritmos voraces proceden por pasos, pode mos ver en detalle como es su estructura. Se parte de un conjunto de candidatos que se encuentra vaco, es decir, no hay ninguna solucin. Luego, en cada paso, se i ntenta aadir al conjunto el mejor candidato entre las soluciones que an no han sid o escogidas, a travs de una funcin de seleccin. Luego de cada incorporacin se compru eba si el conjunto de candidatos resultante es una solucin del problema. Su esque ma genrico es el siguiente:

funcin voraz(C:conjunto):conjunto { C es el conjunto de todos los candidatos } S <= vacio { S es el conjunto en el que se construye la solucin} mientras solucin(S) y C <> vaco hacer x <= el elemento de C que maximiza seleccionar(x) C <= C {x} si completable(S U {x}) entonces S <= S U {x} si solucin(S) entonces devolver S si no devolver no hay solucin Para comprender exactamente su funcionamiento podemos aplicarlo a otro problema sencillo: Supongamos que disponemos de un grupo compuesto por cuatro tipos bille tes de banco: diez billetes de 5, cinco de 10, tres de 20 y dos de 50. Tenemos q ue hacer un pago de 100 euros con el menor nmero de billetes posible que billetes debemos escoger? La solucin obvia consiste en utilizar dos billetes de cincuenta euros, pero como llegara a esa solucin un ordenador? Muy simple: utilizando el algo ritmo voraz. Al plantear ese problema, el candidato (c) sera un conjunto finito de billetes, la solucin (S) el conjunto de billetes buscados y cuya suma es la cantida d a pagar, completable es la suma de billetes escogidos en un momento dado y que no supera la cantidad a pagar., y la funcin de seleccin no es otra cosa que la enca rgada de seleccionar el billete de mayor valor disponible en el conjunto de cand idatos an no seleccionados. En el primer paso se elegira uno de los billetes de ma yor valor disponibles (uno de 50). Luego de comprobar que no se lleg a la solucin se tomara nuevamente uno de los billetes de mayor valor disponibles (el restante de 50) y se comprobara que hemos llegado a la solucin. Simple de implementar, verd ad?.

You might also like