Académique Documents
Professionnel Documents
Culture Documents
Algoritmia/Introduccin
Introduccin
Este libro versa sobre el anlisis y el diseo de algoritmos. Los mtodos algortmicos incluidos son, entre otros, divide y vencers, vuelta a atrs, programacin dinmica, algoritmos voraces y algoritmos probabilsticos. Cualquier problema soluble puede por lo general resolverse a travs de las siguientes formas: El camino obvio El camino metdico El camino inteligente El camino milagroso
En el primer nivel, la solucin obvia puede consistir en una bsqueda exhaustiva de la respuesta al problema. De forma intuitiva, la solucin obvia es aquella que aparece fcilmente con unos conocimientos bsicos de programacin. El camino metdico es el que trata de ilustrar este libro. Tras comprender el material presentado aqu, deberan poderse resolver, siguiendo la metodologa enseada, los problemas de una forma ms efectiva y eficiente. El tercer nivel, el camino inteligente, requiere una mayor comprensin de los elementos implicados en el problema y sus propiedades (por ejemplo, ciertos algoritmos numricos pueden basarse en propiedades matemticas poco obvias). Un algoritmo de este tipo puede ser complicado de entender por no resultar obvio que es correcto, o puede resultar difcil comprender que realmente es ms eficiente de lo que parece. Finalmente, el cuarto nivel, el camino milagroso, est reservado para casos verdaderamente extraos en los que la solucin es realmente poco intuitiva. Obviamente, la diferenciacin entre estos niveles es relativa, y puede ser que algn algoritmo algo ms complejo de lo habitual se presente en el actual libro adems de las metodologas bsicas.
Prerrequisitos
Para comprender el material expuesto en este libro se necesitan firmes conocimientos de programacin para poder entender el pseudocdigo y traducirlo en soluciones funcionales. Asimismo son necesarios conocimientos de estructuras de datos, incluyendo arrays, pilas, colas, listas enlazadas, rboles, montculos y colas de prioridad, conjuntos y grafos. De forma adicional, son recomendables otros conocimientos como algoritmos de bsqueda binaria, de ordenacin, de bsqueda primero en profundidad y primero en anchura. En el caso de no estar familiarizado con estos prerrequisitos, es aconsejable revisar previamente las secciones dedicadas a los mismos en el libro Fundamentos de programacin.
Algoritmia/Introduccin cada rama representa una determinada secuencia de elecciones. As, si existe solucin al problema, esta se encontrar finalmente. En general, la vuelta atrs es un mtodo de fuerza bruta muy ineficiente, pero es posible aplicar optimizaciones que reduzcan el tamao del rbol y, consecuentemente, mejoren la eficiencia del algoritmo. Programacin dinmica: se trata de una optimizacin para algoritmos de vuelta atrs. Cuando un determinado subproblema necesita tratarse varias veces (por ejemplo, ramas repetidas en el rbol generado), es posible ahorrar tiempo solucionando una sola vez el subproblema y almacenando la solucin en una tabla. Algoritmos voraces: este tipo de algoritmos resultan de utilidad cuando se conoce suficiente informacin acerca de las posibles elecciones, de tal forma que "el caso mejor" pueda determinarse sin necesidad de considerar todas las opciones. Tpicamente, los algoritmos voraces no son difciles de escribir, pero s de demostrar su correccin. Algoritmos de escalada: la idea bsica consiste en comenzar con una mala solucin a un determinado problema y, repetidamente, aplicar optimizaciones a la misma hasta que esta sea ptima o satisfaga algn otro requisito. Algoritmos probabilsticos: hacen uso del azar para alcanzar una solucin, basndose en un anlisis estadstico que indique que, en un nmero lo suficientemente alto de ocasiones, se alcanzar una solucin ptima al problema.
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/