Una forma de clasificar los algoritmos consiste en diferenciarlos por su metodología de diseño. A continuación se presenta una síntesis de las metodologías más comunes, aplicables cada una a diferentes clases de problemas:

Fuerza bruta: los algoritmos de fuerza bruta resuelven el problema con la estrategia más obvia de solución, que no siempre es la mejor según el número de operaciones que se requiere.

Divide and conquer (divide y reinarás): esta metodología divide las instancias del problema a resolver en instancias cada vez más pequeñas, usualmente en forma recursiva, hasta llegar a una instancia en que el problema es resoluble en forma trivial o con unas pocas instrucciones. Los algoritmos de búsqueda binaria son un ejemplo de la metodología divide and conquer.

Programación dinámica: cuando un problema presenta una subestructura óptima –o sea, cuando la solución óptima de un problema se obtiene a partir de las soluciones óptimas de sus subproblemas–, se encuentra la solución resolviendo primero los subproblemas más sencillos y luego utilizando esas subsoluciones para resolver problemas incrementalmente difíciles. Por ejemplo, si se tiene una serie de puntos (definidos por coordenadas x, y) que delimitan una región, y se necesita saber si otro punto se encuentra dentro o fuera de esa región, una forma de resolver el problema consiste en comenzar formando cuadrados con puntos contiguos, para luego formar figuras cada vez más grandes y, por cada figura, determinar si el punto está dentro o fuera de ella. En cada paso se aprovecha la información de los pasos anteriores, hasta que, al completar todos los puntos, se obtiene el resultado del problema.

Programación lineal: para resolver un problema utilizando programación lineal, se plantea una serie de inecuaciones y luego se busca maximizar (o minimizar) las variables, respetando las inecuaciones. Muchos problemas pueden plantearse en la forma de un conjunto de inecuaciones, para luego resolverlos utilizando un algoritmo genérico, como por ejemplo, el denominado método Simplex (en la sección de Servicios al lector se detallan sitios donde obtener más información sobre este método).

Búsqueda y enumeración: muchos problemas (como por ejemplo, un juego de ajedrez) pueden modelarse con grafos y resolverse a partir de un algoritmo de exploración del grafo. Tal algoritmo especificará las reglas para moverse en el grafo en busca de la solución al problema. Esta categoría incluye también algoritmos de backtracking (vuelta atrás), los cuales van ensayando distintos caminos con posibles soluciones
y vuelven atrás cuando no las encuentran. Por ejemplo, para encontrar la salida en un laberinto, cada vez que se llega al final de un camino se vuelve atrás hasta la última bifurcación, para probar con las distintas alternativas de esa bifurcación.

Algoritmos heurísticos: el propósito de estos algoritmos no es necesariamente encontrar una solución final al problema, sino encontrar una solución aproximada cuando el tiempo o los recursos necesarios para encontrar la solución perfecta son excesivos. Muchos sistemas antivirus utilizan métodos heurísticos para detectar conductas de programas que podrían estar actuando en forma maliciosa.

Algoritmos voraces: seleccionan la opción de solución (solución local) que tenga un costo menor en la etapa de solución en la que se encuentran, sin considerar si esa opción es parte de una solución óptima para el problema completo (solución global).

Pixel y Pixel XL los nuevos móviles de Google Google ha presentado hoy su nueva línea de productos para competir con Apple a nivel de limpieza y coherencia entre su hardware y su software. Los nue...
Certificación en W3C disponible La Fundación CTIC, sede española de la W3C, llevará a cabo a partir del próximo mes de junio las primeras pruebas de certificación profesional a desar...
IBM busca reemplazar los microprocesadores de silicio con carbono La empresa estadounidense de tecnología IBM ha descubierto un método para la fabricación de transistores con nanotubos de carbono que podrían permitir...
mysql num rows mysql_num_rows — Devuelve el número de filas de un resultado Descripción int mysql_num_rows ( int $id_resultado ) mysql_num_rows() regresa el...
DropBox 2.0 nuevo lanzamiento.. Tras la llegada al mercado de Google Drive, Amazon Cloud Drive, RapidDrive o Cubby y los esfuerzos de Microsoft por mejorar las posibilidades de Skydr...
PCLinuxOS 2011.6 disponible PCLinuxOS 2011.6 acaba de ser liberada por el equipo de desarrollo de esta distribución GNU/Linux inicialmente basada en Mandrake Linux. Este lanza...
Breve historia de CSS Las hojas de estilos aparecieron poco después que el lenguaje de etiquetas SGML, alrededor del año 1970. Desde la creación de SGML, se observó l...
Agrupación de reglas en CSS Cuando se crean archivos CSS complejos con decenas o cientos de reglas, es habitual que los estilos que se aplican a un mismo selector se definan en ...
Que formato de imagen es mejor? PNG o JPG? El formato de imagen PNG se creó en 1995 como respuesta a algunos problemas de patentes del formato GIF. Originalmente PNG era el acrónimo de "PNG no ...
CLASES DE ALGORITMOS
Tagged on: