Está en la página 1de 133

Universidad de Cuenca

Escuela de Ingeniería
Eléctrica
Investigación de Operaciones
Ing. Rodrigo
Sempértegui A.
Introducción a la Heurística & Complejidad
Algorítmica
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica
o Resumen

En Optimización Clásica, se asume que los problemas a tratarse deben cumplir algunas
exigencias que garanticen la convergencia hacia el óptimo global. Sin embargo, la mayoría de
los problemas del mundo real no satisfacen estas exigencias. Es por ello que hoy en día para
resolver problemas con un alto grado de complejidad tenemos la necesidad de utilizar
computadoras desarrollando algoritmos, dado que el cerebro humano no puede realizar esta
tarea. Además, los algoritmos exactos (búsqueda exhaustiva) pueden necesitar mucho tiempo
inclusive siglos para administrarse con desafíos formidables. En tales casos, los algoritmos
heurísticos juegan un papel importante en encontrar soluciones aproximadas, pero tienen una
aceptable complejidad de tiempo y espacio.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica
o Introducción

▶ Los más importantes entre una variedad de temas que se relacionan con la computación

e informática teórica son la validación de algoritmos, la estimación de complejidad y la

optimización.

▶ La complejidad de las tareas en general se examina estudiando los recursos

computacionales más relevantes, como el tiempo de ejecución y el espacio.


Introducción a la Heurística y Complejidad
Algorítmica
o Introducción
▶ Los problemas modernos tienden a ser muy complejos y se relacionan con el análisis de
grandes conjuntos de datos.

▶ Debido a esto empiezan a emerger algoritmos capaces de ofrecer posibles soluciones que
aunque no consigan un resultado óptimo sí se acercan en un tiempo de cálculo razonable.

▶ Incluso si se puede desarrollar un algoritmo exacto, su complejidad de tiempo o espacio


puede resultar inaceptable.

▶ Pero en realidad a menudo es suficiente encontrar una solución aproximada o parcial. En


tales problemas, el objetivo es encontrar el óptimo de todas las soluciones posibles, es
decir, uno que minimice o maximice una FO.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica
o Breve Historia

▶ Al principio esta forma de resolver problemas (Heurística) no fue bien vista en los círculos
académicos, debido fundamentalmente a su escaso rigor matemático.

▶ Sin embargo, gracias a su interés práctico para solucionar problemas reales fue abriendo
poco a poco las puertas de los métodos heurísticos, sobre todo a partir de los años 60
cuando estudiantes y profesores necesitaban clasificar la naturaleza y objetivos del trabajo
en el laboratorio de ciencias.

▶ La popularización del término Heurística se debe al matemático George Pólya en 1957 con
su libro “Cómo Resolverlo” o (How to Solve It). Habiendo estudiado tantas pruebas
matemáticas desde su juventud, quería saber cómo los matemáticos llegan a ellas.
Introducción a la Heurística y Complejidad
Algorítmica
o Breve Historia
Introducción a la Heurística y Complejidad
Algorítmica
o Breve Historia

▶ Actualmente las versiones matemáticas de métodos heurísticos están creciendo en su rango

de aplicaciones, así como en su variedad de enfoques.

▶ Nuevas técnicas heurísticas son utilizadas a diario por científicos de la programación,

investigadores operativos y profesionales, para resolver problemas que antes eran

demasiado complejos o grandes para las anteriores generaciones de este tipo de algoritmos.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica
o Definiciones de Heurística

▶ Heurística proviene del griego “εὑρίσκειν” o “Eureka”, “Heuriskein”. Que significa buscar, encontrar,
descubrir.

Sin embargo, otros autores definen este término como:

▶ El tesoro del análisis o el arte de resolver problemas.

▶ Una estrategia, método, criterio o truco usado para hacer más sencilla la solución de problemas

difíciles.

▶ El análisis y la extrapolación de datos basados en experiencias pasadas y en sus consecuencias.


Introducción a la Heurística y Complejidad
Algorítmica
o Definiciones de Heurística

▶ La capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines.

▶ Ciencia que estudia los proceso de decisión respecto a un campo de conocimiento concreto, como

son las estrategias cognitivas.

▶ Proceso que puede resolver un problema dado pero no ofrece garantías de que lo hará.

▶ …procesador de información que (…) ignora cierta información. (…), y de este modo no se ve

afectada por cambios en tal información. (…), esto es, computacionalmente caro de explotar y

mantener, y que contribuye en poco a la precisión de la solución.


Introducción a la Heurística y Complejidad
Algorítmica
o Definiciones de Heurística

▶ El significado del término ha variado históricamente, pero todas las definiciones tienen algo en común:

encontrar y descubrir. En definitiva, las definiciones más precisas que se han venido utilizando en varios

artículos científicos y libros son los siguientes:

(ANSI/IEEE Std 100-1984) (Xin-She Yang, 2008)

“La Heurística trata de métodos o algoritmos


“Heurística es la ciencia a base de algoritmos que
exploratorios durante la resolución de
encuentra o descubre por ensayo y error la solución
problemas, gracias a los cuales las soluciones
más óptima de un problema”
se descubren evaluando progresos
intermedios”
Introducción a la Heurística y Complejidad
Algorítmica
o Definiciones de Heurística

Sin embargo, una definición más adecuada y precisa es la proporcionada por Reeves (1993):

“Una heurística es una técnica que busca soluciones buenas (es decir, casi óptimas) a un costo

computacional razonable, aunque sin garantizar factibilidad u optimalidad de las mismas. Y en

algunos casos, ni siquiera puede determinar qué tan cerca del óptimo se encuentra una solución

factible en particular.”
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Introducción

▶ Para estudiar un sistema es necesario elaborar un modelo.

La modelación de sistemas es una metodología aplicada y experimental que pretende:

▶ Describir el comportamiento de los sistemas.

▶ Hipótesis que expliquen el comportamiento de situaciones problemáticas.

▶ Predecir un comportamiento futuro, es decir, los efectos que se producirán mediante cambios

en el sistema o en su método de operación.


Teoría de la Complejidad

o Introducción

Sabiendo que existen muchas alternativas de solución para un problema….

▶ Se debe seleccionar el algoritmo más eficiente, con el mejor conjunto de pasos, que tarde
menos en ejecutarse, y que tenga menos líneas de código.

▶ La elección en algunas ocasiones puede ser realizada con una simple observación de la
cantidad de líneas del programa, pero a medida que el programa crece se requiere de mediciones
más exactas, para lo cual se emplea determinadas operaciones matemáticas que establecen
la eficiencia teórica del programa, al estudio de estos casos se denomina Complejidad
Algorítmica o Computacional.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Complejidad Algorítmica o Computacional

▶ La eficiencia de un algoritmo se mide a menudo por la complejidad algorítmica o complejidad


computacional. Un algoritmo será más eficiente comparado con otro, siempre y cuando consuma
menos recursos como el tiempo y espacio de memoria necesario para ejecutarlos.

▶ Es así que el término de complejidad computacional hace referencia a la cantidad de recursos


computacionales que utiliza el algoritmo.

▶ Además, la complejidad computacional considera globalmente todos los posibles algoritmos


para resolver un problema dado.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Objetivos

▶ Proporcionar un análisis robusto en el sentido de que el resultado no depende de las


características estructurales y tecnológicas de las computadoras y su software del
sistema.

▶ Clasificar los problemas algorítmicos de acuerdo con su dificultad computacional. Dado


que la complejidad del tiempo como el número de operaciones ejecutadas parece ser la
medida central de la complejidad del algoritmo, se prefiere medir la dificultad
computacional de los problemas en términos de complejidad de tiempo.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de
Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Complejidad Temporal o Tiempo de


Ejecución
▶ Tiempo de cómputo necesario para ejecutar algún programa. Se mide en función de N
(cantidad de datos) designado como T(N). Esta función se puede calcular físicamente
ejecutando el programa acompañado de un reloj, o calcularse directamente sobre el código,
contando las instrucciones a ser ejecutadas y multiplicando por el tiempo requerido por cada
instrucción. Ejemplo, consideremos una parte de código sencillo como:

S1;
for (x = 0; x < N; x++)
S2;
Demanda: T(N) = t1 + t2 * N
Donde t1 es el tiempo que lleva ejecutar la serie S1 de sentencias, y t2 es el que lleva la serie S2.
Teoría de la Complejidad

o Complejidad Temporal o Tiempo de


Ejecución
▶ Habitualmente todos los algoritmos contienen alguna sentencia condicional o selectiva,
haciendo que las sentencias ejecutadas dependan de la condición lógica, esto hace que aparezca
más de un valor para T(N), es por ello que debemos hablar de un rango de valores:

Tmin(N) ≤ T(N) ≤ Tmax(N)

▶ Estos extremos son llamados "el peor caso" y "el mejor caso" y entre ambos se puede hallar "el
caso promedio" o el más frecuente.
Teoría de la Complejidad

o Complejidad Temporal o Tiempo de


Ejecución
▶ Complejidad del Mejor Caso: Se entiende que es el menor número de operaciones
(instrucciones) necesarias para resolver un problema.

▶ Complejidad del Peor Caso: Se entiende que es el mayor número de operaciones


(instrucciones) necesarias para resolver un problema.

▶ Complejidad del Caso Promedio: Se entiende que es el número promedio de operaciones


(instrucciones) realizadas para solucionar un problema.
Teoría de la Complejidad

o Complejidad Temporal o Tiempo de


Ejecución
Teoría de la Complejidad

o Complejidad Temporal o Tiempo de


Ejecución

Consideración.

▶ La complejidad no es un número, es una función.

▶ No mide tiempo, se cuenta las instrucciones (bucles) que realiza el algoritmo para

resolver un problema con respecto al ordenador y tamaño de dificultad.

Segundo, Milisegundo
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Complejidad Espacial

▶ Memoria que utiliza un programa para su ejecución.

▶ La eficiencia en memoria de un algoritmo indica la cantidad de espacio requerido para


ejecutar el algoritmo.

▶ En la mayoría de situaciones, cuando se habla de complejidad, directamente se están


refiriendo a la Complejidad Temporal.

▶ Tiene mucho menos interés comparado con el temporal. (Tiempo es más valioso que el
Espacio).

“SI tienes dinero puedes comprarte un carro más lujoso de último modelo, pero no puedes
comprarte unos cuantos años de vida.”
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Órdenes de Complejidad

▶ Para un tamaño de problema dado n, la complejidad se denota usando notaciones de Big-

O como O(n2) o (n log n).

▶ Las funciones de complejidad algorítmica más habituales en las cuales el único factor del

que dependen es el tamaño de la muestra de entrada n, ordenadas de mayor a menor

eficiencia son:
Teoría de la Complejidad

o Órdenes de Complejidad

ORDEN DE COMPLEJIDAD DESCRIPCIÓN

O(1) Orden Constante Cuando las instrucciones se ejecutan una vez. Ejm; hallar el Max de 2 valores.

Esta suele aparecer en determinados algoritmos con iteración o recursión no


O(log n) Orden Logarítmico
estructural, ejemplo la búsqueda binaria.

Es una complejidad buena y también muy usual. Aparece en la evaluación de


O(n) Orden Lineal bucles simples siempre que la complejidad de las instrucciones interiores sea
constante. Ejm; hallar el Max de un vector de tamaño n.

Se encuentra en algoritmos de tipo divide y vencerás como por ejemplo en el


O(n log n) Orden Cuasi-lineal de ordenación Quicksort, o la TRF, y se considera una buena complejidad.
Si n se duplica, el tiempo de ejecución es ligeramente mayor del doble.
Teoría de la Complejidad

o Órdenes de Complejidad

Aparece en bucles o ciclos doblemente anidados. Si n se duplica, el


O(n2) Orden Cuadrático
tiempo de ejecución aumenta cuatro veces.

Suele darse en bucles con triple anidación. Si n se duplica, el tiempo de


O(n3) Orden Cúbico ejecución se multiplica por ocho. Para un valor grande de n empieza a
crecer dramáticamente.

O(na) Orden Polinómico Si a > 3 (crece), la complejidad del programa es bastante mala.

No suelen ser muy útiles en la práctica por el elevadísimo tiempo de


O(2n) Orden Exponencial ejecución. Se dan en subprogramas recursivos que contengan dos o más
llamadas internas. Es mucho peor que el anterior.

Es el típico de aquellos algoritmos que para un problema complejo


O(n!) Orden Factorial
prueban todas las combinaciones posibles.
Teoría de la Complejidad

o Órdenes de Complejidad

Notas:

▶ Se identifica una Jerarquía de Órdenes de Complejidad, en el sentido de que cada orden de

complejidad inferior tiene a las superiores como subconjuntos.

▶ Los Algoritmos Polinomiales son proporcionales a na. Son en general factibles o aplicables, y

los problemas asociados a estos algoritmos son solucionables.


Teoría de la Complejidad

o Órdenes de Complejidad

Notas:

▶ Los Algoritmos Exponenciales en general no son factibles salvo un tamaño de entrada n

exageradamente pequeño, pero generalmente pertenecen a un universo de problemas de los

cuales el cómputo se hace imposible.

▶ El algoritmo de quicksort utiliza un enfoque de dividir y vencer a través de la partición. Este

algoritmo dará como resultado una complejidad de O (n log n).


Teoría de la Complejidad

o Ejemplo de Complejidad

Obsérvese la siguiente función escrita en


pseudocódigo (independiente de su
propósito)
Teoría de la Complejidad

o Ejemplo de Complejidad
Total Instrucciones = n+2n+1
Es decir 3n+1
▶ Dos de bucles

Podemos decir que la

▶ Se ejecuta n veces. complejidad de ese algoritmo


Tiene 1 instrucción. es 3n+1, porque ese es el
número de instrucciones que
▶ Se ejecuta n veces. hay que realizar para
Tiene 2 instrucciones.
solucionar el problema cuando
▶ Hay 1 instrucción. el problema es de tamaño n.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Eficiencia de un Algoritmo

▶ Sea un problema que sabemos resolver con algoritmos de diferentes complejidades. Para
compararlos entre sí, supongamos que todos ellos requieren 1 hora de ordenador para resolver
un problema de tamaño N=100, pero si queremos resolver el mismo problema pero de tamaño
2N tenemos:

O(f(n)) N=100 t=2h N=200


log n 1h 10000 1.15 h
n 1h 200 2h
n log n 1h 199 2.30 h
n2 1h 141 4h
n3 1h 126 8h
2n 1h 101 1030 h
Teoría de la Complejidad

o Eficiencia de un Algoritmo

Notas:

▶ Los algoritmos de complejidad O(n) y O(n log n) son los que muestran un comportamiento
más "natural", prácticamente a doble de tiempo, doble de datos procesables.

▶ Los algoritmos de complejidad logarítmica son un descubrimiento fenomenal, pues en el


doble de tiempo permiten atacar problemas notablemente mayores, y para resolver un
problema el doble de grande sólo hace falta un poco más de tiempo.
Teoría de la Complejidad

o Eficiencia de un Algoritmo

Notas:

▶ Los algoritmos de tipo polinómico no son una maravilla, y se enfrentan con dificultad a

problemas de tamaño creciente. La práctica viene a decirnos que son el límite de lo "tratable".

▶ Sobre la “tratabilidad” de los algoritmos con O(n2) y O(n3) suelen ser abordables, aunque por

muy polinómicos que sean nadie acepta algoritmos de orden O(n100).

▶ Cualquier algoritmo por encima de una complejidad polinómica se dice "intratable" y sólo será

aplicable a problemas muy pequeños.


Teoría de la Complejidad

o Eficiencia de un Algoritmo

Notas:

▶ Por esto, los programadores buscan algoritmos de complejidad lineal, ya que si se tiene algo

de suerte se puede encontrar complejidad logarítmica.

▶ Si se encuentran soluciones polinomiales se puede vivir con ellas; pero ante soluciones de

complejidad exponencial, es mejor seguir buscando.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Teoría de la Complejidad

▪ Introducción
▪ Complejidad Algorítmica o Computacional
▪ Objetivos
▪ Complejidad Temporal o Tiempo de Ejecución
▪ Complejidad Espacial
▪ Órdenes de Complejidad
▪ Eficiencia de un Algoritmo
▪ Clases de Complejidad
Teoría de la Complejidad

o Clases de Complejidad

Se definen para distinguir los


problemas según su "robustez". La
mayor parte de los problemas en
teoría de la complejidad tienen que ver
con los problemas de decisión, que
corresponden a poder dar una
respuesta positiva o negativa un
problema dado.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Clases de Complejidad

❑ Clase de Complejidad “p”

❑ Clase de Complejidad “NP”

❑ Clase de Complejidad “NP-hard”

❑ Clase de Complejidad “NP-complete”


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Clases de Complejidad

❑ Clase de Complejidad “p”

❑ Clase de Complejidad “NP”

❑ Clase de Complejidad “NP-hard”

❑ Clase de Complejidad “NP-complete”


Clases de Complejidad

o Clases de Complejidad “P”

▶ Consiste en todos aquellos problemas que pueden resolverse en una Máquina de Turing

en tiempo polinomial a partir del tamaño de la entrada.

▶ Esto es, aquellas en las que para cada estado y símbolo exista a lo sumo una posibilidad

de ejecución, ya que los problemas de complejidad polinómica son tratables y en la práctica

se pueden resolver en un tiempo razonable.


Clases de Complejidad

o Clases de Complejidad “P”


Máquina de Turing.
Es un modelo matemático autómata capaz de implementar cualquier problema matemático expresado a través de un
algoritmo. Es decir, es un dispositivo que transforma un INPUT en un OUTPUT después de algunos pasos. Tanto
INPUT como OUTPUT constan de números en código binario. Una MT consta de:
▶ Cinta infinita dividida en espacios o celdas.
▶ Un cabezal capaz de leer y escribir símbolos en la cinta.
▶ Un registro de estado.
▶ Una tabla finita de instrucciones o tabla de acción.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Clases de Complejidad

❑ Clase de Complejidad “p”

❑ Clase de Complejidad “NP”

❑ Clase de Complejidad “NP-hard”

❑ Clase de Complejidad “NP-complete”


Clases de Complejidad

o Clases de Complejidad “NP”

▶ Consiste en todos aquellos problemas cuya solución se puede encontrar en tiempo

polinomial en una máquina de Turing no Determinista (número infinito de movimientos a

elegir).

▶ Como tal máquina no existe, prácticamente significa que se puede escribir un algoritmo

exponencial para un problema NP.

▶ Caso contrario, no se afirma nada si existe o no un algoritmo polinomial.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Clases de Complejidad

❑ Clase de Complejidad “p”

❑ Clase de Complejidad “NP”

❑ Clase de Complejidad “NP-hard”

❑ Clase de Complejidad “NP-complete”


Clases de Complejidad

o Clases de Complejidad “NP-hard”

▶ Se puede entender como la clase de problemas que son NP-completos o más difíciles.

▶ Tienen el mismo rasgo que los problemas NP-completos, pero no necesariamente

pertenecen a la clase NP, es decir, la clase NP-hard incluye también problemas para los

cuales no se pueden proporcionar algoritmos en absoluto.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Clases de Complejidad

❑ Clase de Complejidad “p”

❑ Clase de Complejidad “NP”

❑ Clase de Complejidad “NP-hard”

❑ Clase de Complejidad “NP-complete”


Clases de Complejidad

o Clases de Complejidad “NP-complete”

▶ Es una subclase de NP que incluye problemas tales que un algoritmo polinomial para uno de
ellos podría transformarse en algoritmos polinomiales para resolver todos los demás problemas de
NP.
▶ En definitiva, estos problemas se caracterizan por ser todos "iguales" en el sentido de que si se
descubriera una solución para alguno de ellos, esta solución sería fácilmente aplicable a todos
ellos.
▶ En la actualidad, todos los algoritmos conocidos para problemas NP-complete utilizan tiempo
exponencial con respecto al tamaño de la entrada.
Clases de Complejidad

o Clases de Complejidad “NP-complete”

▶ Se desconoce si hay algoritmos más rápidos para resolver un problema NP-complete de


tamaño arbitrario, se utiliza uno de los siguientes enfoques:

➢ Aproximación

➢ Probabilístico

➢ Restricciones

➢ Casos particulares

➢ Algoritmo genético

➢ Heurísticas
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Generalidades

▶ Los algoritmos que dan casi la respuesta correcta o proporcionan una solución no para todas

las instancias del problema se denominan algoritmos heurísticos.

▶ Se usan para problemas que no se pueden resolver fácilmente, y pueden expresar buenas

(aunque probablemente no óptimas) soluciones a problemas complejos.

▶ La solución aunque sea hallada en un tiempo corto, también puede ser errónea.

▶ Frecuentemente pueden encontrarse casos de problemas en los que la heurística obtendrá

resultados muy malos o que tarde demasiado.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Función Heurística

▶ Es una correspondencia entre las descripciones de estados del problema hacia alguna

medida de deseabilidad, normalmente representada por números. Quiere decir que mide cada

estado del problema (solución) y dice qué tan cerca de la solución óptima está.

▶ El propósito es el de guiar el proceso de búsqueda en la dirección más provechosa

sugiriendo qué camino tomar cuando hay más de uno disponible.


Algoritmos Heurísticos

o Función Heurística

▶ Cuanto más exactamente estime la función


heurística los méritos de cada nodo del árbol (o
grafo) que representa al problema, más directo será
el proceso de solución.

▶ En general, hay que hacer una ponderación entre


el costo de evaluación de una función heurística y el
ahorro de tiempo de búsqueda que proporciona la
función.
Figura 3: Representación de un problema mediante grafo o árbol.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o ¿Cuándo utilizar las Heurísticas?

A más de resolver problemas muy complejos, el uso de las Heurísticas es aconsejable utilizar
cuando:

➢ No existe un método exacto de resolución, o el mismo requiere de mucho gasto


computacional y/o de memoria.

➢ No es necesario encontrar la solución óptima; basta con una solución suficientemente


buena.

➢ Los datos son poco fiables y por tanto no tiene sentido el tratar de encontrar el óptimo
global para dichos datos.
Algoritmos Heurísticos

o ¿Cuándo utilizar las Heurísticas?

Cuando…

➢ Existen limitaciones de tiempo (y/o de memoria) en proporcionar la respuesta.

➢ Se va a utilizar como solución inicial para un algoritmo exacto de tipo iterativo.

➢ Si bien las combinaciones que se logran con una heurística pueden no ser muy buenas en

los peores casos, estos peores casos raramente ocurren en el mundo real.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Propiedades

Un buen algoritmo heurístico debe cumplir (no necesariamente) con las siguientes propiedades.

➢ Son muy robustos. Se puede aplicar cualquier técnica Heurística a una gran clase de

problemas de optimización.

➢ Se puede obtener una solución con un esfuerzo computacional razonable.

➢ La solución debe ser casi óptima (con alta probabilidad).

➢ La probabilidad de obtener una mala solución (lejos de ser óptima) debería ser baja.
Algoritmos Heurísticos

o Propiedades

Figura 4: Comparación entre estrategias.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Ventajas y Desventajas

Ventajas
:
• Más comprensibles e intuitivos (en general) que los métodos exactos. (simples de
entender y fáciles de implementar).

• En algunas ocasiones ahorran tiempo de formulación y de computación.

• Proporciona una buena solución inicial de partida.

• Es más flexible frente a la investigación operativa clásica, permitiendo (por ejemplo) la


incorporación de condiciones de difícil modelización.
Algoritmos Heurísticos

o Ventajas y Desventajas

Desventajas:

• Imposible conocer la cercanía con respecto del óptimo global de la solución obtenida.

• No garantizan que se encuentre una solución, aunque existan soluciones.

• Dependencia de la estructura del problema considerado y falta de habilidad para

adaptarse a nuevas situaciones o modificaciones del problema de partida.

• En definitiva, no garantiza la solución óptima a ningún problema.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Métodos o Técnicas Heurísticas

▶ Existen muchos métodos heurísticos que son muy diferentes en naturaleza, por lo que es
complicado dar una clasificación completa.

▶ Además, muchos de ellos han sido diseñados para resolver un problema específico sin
posibilidad de generalización o aplicación a otros problemas similares.

▶ Las Heurísticas más conocidas son las siguientes:


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Métodos o Técnicas Heurísticas

o Métodos de Descomposición

▶ Modularización: El problema original se divide en sub-problemas que son más simples de

resolver, siendo el output de uno el input del otro.

▶ Teniendo en cuenta, ya sea de manera general, que los sub-problemas pertenecen a la

misma clase de problema.


Métodos o Técnicas Heurísticas

o Métodos de Descomposición

▶ De manera que al resolver los sub-problemas se obtenga una solución para el problema
global.

▶ Otros autores tienen dos definiciones distintas al respecto, como:

✓ Método de Descomposición: (Ball, en 1981) Cuando los sub-programas se


resuelven en cascada.

✓ Método de Partición: (Ramírez, 2005) Cuando los sub-programas son


independientes entre sí.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Métodos o Técnicas Heurísticas

o Métodos Inductivos

▶ La idea de estos métodos es generalizar a versiones más pequeñas o sencillas al caso

completo.

▶ Las propiedades o técnicas que se han identificado en estos casos (que son más fáciles

de analizar) se pueden aplicar a todo el problema.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Métodos o Técnicas Heurísticas

o Métodos de Reducción

▶ Estos implican la identificación de propiedades que se cumplen principalmente por las

buenas soluciones y las introducen como restricciones al problema.

▶ El objetivo es restringir el espacio de las soluciones simplificando el problema.

▶ El riesgo obvio es que las soluciones óptimas del problema original pueden quedar fuera.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Métodos o Técnicas Heurísticas

o Métodos Constructivos

▶ Implican construir literalmente paso a paso desde cero una solución al problema.

▶ Son métodos deterministas y tienden a basarse en la mejor opción en cada iteración.

▶ Han sido ampliamente utilizados en la optimización combinatoria clásica.

▶ Dentro de este método también existen los siguientes algoritmos: Algoritmos Greedy

(golosos o devoradores), Vecino más próximo, de inserción, árboles generadores y

heurísticos basados en ahorro.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Métodos o Técnicas Heurísticas

o Métodos de Búsqueda Local

▶ A diferencia de los métodos mencionados anteriormente, la mejora local o la búsqueda local

comienza con alguna solución factible del problema e intenta mejorarlo progresivamente.

▶ Cada paso del procedimiento lleva a cabo un movimiento de una solución a otra con un mejor

valor.

▶ El método termina cuando, para una solución, no hay otra solución accesible que lo mejore.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Métodos o Técnicas Heurísticas

❑ Métodos de Descomposición

❑ Métodos Inductivos

❑ Métodos de Reducción

❑ Métodos Constructivos

❑ Métodos de Búsqueda Local

❑ Métodos Combinados
Métodos o Técnicas Heurísticas

o Métodos Combinados

▶ Aunque todos los métodos precedentes han contribuido a ampliar nuestro conocimiento

de la resolución de problemas reales, todos ellos constituyen la base de los procedimientos

Metaheurísticos, que también son conocidos como métodos combinados.

▶ Más adelante revisaremos brevemente las Metaheurísticas (MH).


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Evaluación de la Calidad de las Heurísticas

▶ Existen diversas posibilidades para medir la calidad de una heurística, basadas

principalmente en la comparación entre heurísticas.

▶ En la literatura de Optimización encontramos los siguientes métodos de evaluación:


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Evaluación de la Calidad de las Heurísticas

❑ Comparación con la Solución Óptima

❑ Comparación con una Restricción

❑ Comparación con un Método Exacto Truncado

❑ Comparación con otras Heurísticas


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Evaluación de la Calidad de las Heurísticas

❑ Comparación con la Solución Óptima

❑ Comparación con una Restricción

❑ Comparación con un Método Exacto Truncado

❑ Comparación con otras Heurísticas


Evaluación de la Calidad de las Heurísticas

o Comparación con la Solución Óptima

▶ Aunque normalmente se recurre a un algoritmo de aproximación, porque no existe un

método exacto para obtener una solución óptima o consume demasiado tiempo, a veces hay

disponible un procedimiento que proporciona un óptimo para un conjunto limitado de ejemplos

(generalmente instancias de tamaño pequeño).

▶ Este conjunto de ejemplos se puede usar para evaluar la calidad del método heurístico.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Evaluación de la Calidad de las Heurísticas

❑ Comparación con la Solución Óptima

❑ Comparación con una Restricción

❑ Comparación con un Método Exacto Truncado

❑ Comparación con otras Heurísticas


Evaluación de la Calidad de las Heurísticas

o Comparación con una Restricción

▶ Hay situaciones en las que no hay solución ni siquiera para un conjunto limitado de
ejemplos.

▶ Implica comparar el valor de la solución proporcionada por la heurística con una


restricción para el problema (una restricción inferior si se trata de un problema de
minimización y una restricción superior si se trata de un problema de maximización).

▶ La calidad del ajuste dependerá de la calidad de la restricción (proximidad al óptimo).

▶ Por lo tanto, se debe tener información sobre la calidad de la restricción antes


mencionada, de lo contrario, la comparación propuesta no sería de mucho interés.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Evaluación de la Calidad de las Heurísticas

❑ Comparación con la Solución Óptima

❑ Comparación con una Restricción

❑ Comparación con un Método Exacto Truncado

❑ Comparación con otras Heurísticas


Evaluación de la Calidad de las Heurísticas

o Comparación con un Método Exacto Truncado

▶ Se establece una restricción en el número máximo de iteraciones (o en el tiempo de la CPU)


para ejecutar el algoritmo exacto.

▶ Se puede modificar los criterios para comprender un nodo en el árbol de búsqueda


agregando o restando (dependiendo de si se trata de un problema de minimización o
maximización) un valor Δ al límite del nodo, y así se acelera el método.

▶ De esta manera, garantiza que el valor de la mejor solución proporcionada por el


procedimiento no es más allá de la distancia Δ desde el valor óptimo hasta el problema.

▶ Establece una restricción contra el cual se puede medir la heurística.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
▪ Evaluación de la Calidad de las Heurísticas

❑ Comparación con la Solución Óptima

❑ Comparación con una Restricción

❑ Comparación con un Método Exacto Truncado

❑ Comparación con otras Heurísticas


Evaluación de la Calidad de las Heurísticas

o Comparación con otras Heurísticas

▶ Es uno de los métodos más utilizados para problemas difíciles que se han trabajado durante

mucho tiempo y para el cual se conocen buenas heurísticas.

▶ La conclusión de esta comparación se refiere a la calidad del ajuste de la heurística elegida.

▶ Además, se puede comparar los valores obtenidos entre las diferentes heurísticas para

resolver los mismos ejemplos de cualquier tamaño.


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Tipo de Algoritmos Heurísticas

En una primera clasificación podemos decir que los algoritmos heurísticos pueden ser simples

o complejos.

▶ Los Algoritmos Simples tienden a tener reglas de terminación bien definidas, y se detienen en

un óptimo local, mientras que los algoritmos más complejos pueden no tener reglas de

terminación estándar, y buscan soluciones mejores hasta alcanzar un punto de parada

arbitrario.
Algoritmos Heurísticos

o Tipo de Algoritmos Heurísticas

▶ Dentro de los Algoritmos Heurísticos Complejos podemos hacer una segunda clasificación, esta
vez orientada a la funcionalidad de los mismos.

✓ En primer lugar podemos encontrarnos con algoritmos que fueron diseñados para dar

solución a problemas de búsqueda de óptimos o clasificación, y

✓ Por otro lado tenemos los algoritmos que tratan de deducir conocimiento a partir de un

conjunto de axiomas, estos últimos conocidos como sistemas basados en el

conocimiento.
Algoritmos Heurísticos

o Tipo de Algoritmos Heurísticas

Entre los algoritmos de búsqueda de óptimos se encuentran los siguientes métodos:

∙ Búsqueda Tabú. ∙ Búsqueda de barrio adaptable borrosa


∙ Temple Simulado. ∙ Búsqueda local guiada
∙ Algoritmos Genéticos. ∙ Métodos de inicio múltiple
∙ Redes Neuronales. ∙ Búsqueda dispersa
∙ Algoritmos de distribución de estimación. ∙ Búsqueda de vecindad variable.
∙ Algoritmos evolutivos.

▶ Dentro de esta última clasificación de métodos o técnicas también se consideran las


Metaheurísticas.
Algoritmos Heurísticos

o Tipo de Algoritmos Heurísticas


Algoritmos Heurísticos

o Tipo de Algoritmos Heurísticas


Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Metaheurísticas
Heurística “buenas soluciones”

(con un tiempo de computación razonables sin garantizar la optimalidad)

META “mucho más lejos de” o “a un nivel superior”

▶ En algunos textos: Heurística Moderna para referirse a Metaheurística.

▶ Otros como Fred Glover en 1986 considera a las Metaheurísticas como “Heurísticas de nivel

más alto”
Algoritmos Heurísticos

o Metaheurísticas

▶ Literalmente la MH significa “encontrar más allá”, es decir, su búsqueda es mucho más


minuciosa que la que ofrece el método Heurístico.

▶ Según Osman y Kelly:

"Una MH es un proceso de generación iterativo que guía una heurística subordinada al


combinar conceptos inteligentemente diferentes para Explorar y Explotar los espacios de
búsqueda utilizando estrategias de aprendizaje para estructurar la información a fin de
encontrar soluciones casi óptimas".
Algoritmos Heurísticos

Contenido:
▪ Metaheurísticas

❑ Intensificación y Diversificación

❑ Búsqueda Local y de Población

❑ Técnicas Metaheurísticas
Algoritmos Heurísticos

Contenido:
▪ Metaheurísticas

❑ Intensificación y Diversificación

❑ Búsqueda Local y de Población

❑ Técnicas Metaheurísticas
Metaheurísticas

o Intensificación y Diversificación

▶ Las dos nociones de Osman (exploración y explotación) corresponden a dos estrategias

utilizadas para moverse dentro del espacio de búsqueda.

▶ Para obtener buenas soluciones, cualquier algoritmo de búsqueda debe establecer un

balance adecuado entre estas dos características.

▶ Los términos "intensificación" (sinónimo de "explotación") y "diversificación" (sinónimo de

"exploración") se utilizan con frecuencia en el microcosmos (nivel molecular) MH.


Metaheurísticas

o Intensificación y Diversificación

▶ Intensificación: Cantidad de esfuerzo empleado en la búsqueda de la región actual.

▶ Diversificación: Cantidad de esfuerzo empleado en regiones distantes del espacio de


búsqueda.

▶ La mezcla de estos términos simultáneamente requiere un buen conocimiento del

problema en cuestión y un diseñador Metaheurístico bastante experimentado.

▶ El resultado positivo de la búsqueda se basa en gran medida en estos factores.


Metaheurísticas

o Intensificación y Diversificación

En definitiva…

Este equilibrio entre Intensificación y Diversificación es necesario para:

▶ Identificar rápidamente regiones del espacio con soluciones de buena calidad.

▶ No consumir mucho tiempo en regiones del espacio no promisorio o ya explorados.


Algoritmos Heurísticos

Contenido:
▪ Metaheurísticas

❑ Intensificación y Diversificación

❑ Búsqueda Local y de Población

❑ Técnicas Metaheurísticas
Metaheurísticas

o Búsqueda Local y de Población

▶ Existen dos categorías en las que se basan las Metaheurísticas como son: Búsqueda

Local y Búsqueda de Población.

▶ En el primero, el método itera sobre una única solución, mientras que en el segundo el

método itera sobre un conjunto de soluciones.


Metaheurísticas

o Búsqueda Local y de Población

Búsqueda local

• Debería ser fácil generar soluciones en el espacio de búsqueda bajo consideración.

• Las soluciones en el vecindario de una solución deben estar cerca de esta solución de
alguna manera.

• La topología inducida por la FO en el espacio del barrio no debe ser demasiado "plana".

• Cada solución en el espacio de búsqueda debe vincularse con la solución óptima


mediante una secuencia (corta) de movimientos.
Metaheurísticas

o Búsqueda Local y de Población

Búsqueda de población

• La información pertinente debe transmitirse durante la fase de combinación (en la que se

obtienen nuevas soluciones con la combinación de las anteriores).

• La combinación de dos soluciones parentales equivalentes no debe producir una

solución nueva que sea diferente al de los padres.

• La diversidad debe ser preservada en la población.


Algoritmos Heurísticos

Contenido:
▪ Metaheurísticas

❑ Intensificación y Diversificación

❑ Búsqueda Local y de Población

❑ Técnicas Metaheurísticas
Metaheurísticas

o Técnicas Metaheurísticas

▶ Aunque algunas veces se aplican Metaheurísticas a problemas difíciles de programación

no lineal y entera, un área de aplicación más común es la de los problemas de optimización

combinatoria.

▶ Algunos ejemplos de técnicas Metaheurísticas aplicadas al problema de optimización son

las siguientes:
Metaheurísticas

o Técnicas Metaheurísticas

Búsqueda Tabú.

▶ Tabu Search (Glover and Laguna, 1998) es una MH con un procedimiento que debe
acoplarse a otra técnica, ya que no funciona por sí sola.

▶ Usa una memoria para guiar la búsqueda, de tal forma que algunas soluciones examinadas
recientemente son memorizadas y tomadas como tabú (prohibidas) a la hora de tomar
decisiones acerca del siguiente punto de búsqueda.

▶ Es determinista, aunque se le pueden agregar elementos probabilísticos.


Metaheurísticas

o Técnicas Metaheurísticas

Simulated Annealing

▶ Basado en el enfriamiento de los cristales (Kirkpatrick et al., 1983).

▶ El algoritmo requiere de una temperatura inicial, una final y una función de variación de la
temperatura.

▶ Dicha función de variación es crucial para el buen desempeño del algoritmo y su


definición es, por tanto, sumamente importante.

▶ Es probabilístico de búsqueda local.


Metaheurísticas

o Técnicas Metaheurísticas

Hill Climbing

El algoritmo de Escalando la Colina o Hill Climbing (Russell and Norvig, 2002) es una técnica
simple de búsqueda local y optimización aplicado para una función f de un único objetivo en un
espacio de problema X. Este algoritmo no tiene retroceso ni lleva ningún tipo de registro
histórico (aunque estos y otros aditamentos son susceptibles de ser incorporados). Es
importante resaltar que Hill Climbing busca maximizar o minimizar la función f (x) donde x es
discretizado. Hill Climbing es una forma simple de búsqueda de la dirección de gradiente, por
esto fácilmente puede quedar atrapado en óptimos locales.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Algoritmos Heurísticos

▪ Generalidades
▪ Función Heurística
▪ ¿Cuándo utilizar las Heurísticas?
▪ Propiedades
▪ Ventajas y Desventajas
▪ Métodos o Técnicas Heurísticas
▪ Evaluación de la Calidad de las Heurísticas
▪ Tipo de Algoritmos Heurísticos
▪ Metaheurísticas
▪ Futuros Desafíos de Investigación
Algoritmos Heurísticos

o Futuros Desafíos de Investigación

Existe una gran cantidad de información acerca de la Heurística, tanto así que los retos de
investigación tienden a estudios más profundos acerca del tema como:

▶ Comparar la complejidad de la implementación y la precisión de los diferentes

algoritmos aproximados.

▶ Profundizar temas tan prominentes para los algoritmos heurísticos como la teoría de

planificación y programación.
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica
o Conclusiones

▶ Este trabajo de investigación presenta una visión general de las heurísticas, que son
técnicas aproximadas para resolver problemas de optimización.

▶ Por lo general, los algoritmos heurísticos se desarrollan para tener una complejidad de
tiempo baja y se aplican a los problemas complejos.

▶ Aunque no exista una definición normalizada acerca del término Heurística, varios autores
de libros y artículos del área científica de las matemáticas y computación persiguen el
objetivo de encontrar la solución más óptima de un problema, aunque no signifique una
calidad total del mismo.
Introducción a la Heurística y Complejidad
Algorítmica
o Conclusiones

▶ Debido a sus propiedades eminentes, las Heurísticas han ganado una gran popularidad a
lo largo del tiempo. Los resultados de investigación recientemente presentados confirman el
hecho de que sus aplicaciones pueden ampliarse significativamente en el futuro, o a su vez
en la informática moderna.

▶ En contraste con la Metaheurística, la Heurística se caracteriza por su rapidez y facilidad y


ofrece respuestas buenas más no óptimas.
▶ Par obtener buenas soluciones, cualquier Metaheurística debe establecer un balance
adecuado entre la intensificación y diversificación.
Introducción a la Heurística y Complejidad
Algorítmica
o Conclusiones

Ingeniería Eléctrica.

▶ Sistemas de Distribución
▶ Crecimiento de la Carga
▶ SEP (Sistemas Eléctricos de Potencia)
▶ Operación y Control del SEP
▶ Operación del Sistema de G. Minimizar las Pérdidas G,T,D,C
▶ Flujo de Potencia Óptimo Minimizar el Costo Operativo
▶ Despacho Económico de Diferentes Centrales
▶ Programación Horaria
▶ Operación del Sistema de T.
▶ Planificación de la Expansión del SEP
Introducción a la Heurística y Complejidad
Algorítmica

Contenido:
➢ Resumen
➢ Introducción
➢ Breve Historia
➢ Definiciones de Heurística
➢ Teoría de la Complejidad
➢ Algoritmos Heurísticos
➢ Conclusiones
➢ Referencias
Introducción a la Heurística y Complejidad
Algorítmica
o Referencias
[1] N. Kokash, «An introduction to heuristic algorithms,» pp. 1-8.
[2] X.-S. Yang, Introduction to Mathematical Optimization. From Linear Programming to Metaheuristics, Reino Unido: Cambrige
International Science Publishing, 2008.
[3] J. Hromkovic, Algorithmics for Hard Problems, New York: Springer, 2004.
[4] R. Martí y G. Reinelt, The Linear Ordering Problem, Exact and Heuristic Methods in COmbinational Optimization, Berlín: Springer, 2011.

[5] R. Pinto, «Monografías,» Teoría de la complejidad algorítmica, [En línea]. Available:


http://www.monografias.com/trabajos27/complejidad-algoritmica/complejidad-algoritmica.shtml. [Último acceso: 22 11 2017].
[6] M. «Introducción a la heurística blogspot,» Introducción a la heurística..., 14 08 2010. [En línea]. Available:
http://introduccionalaheuristica.blogspot.com/2010/08/como.html. [Último acceso: 22 11 2017].
[7] C. Ramos Cruz, «Scribd,» Heurística, 02 09 2010. [En línea]. Available: https://es.scribd.com/doc/36818832/Heuristica. [Último acceso:
22 11 2017].
[8] V. Yépez, «Slideshare,» Introducción a la optimización heurística en ingeniería, 12 12 2013. [En línea]. Available:
https://es.slideshare.net/vyepesp/introduccin-a-la-optimizacin-heurstica-en-ingeniera. [Último acceso: 22 11 2017].
[9] L. Gómez, «SlideShare,» Heurística, 11 07 2014. [En línea]. Available: https://es.slideshare.net/lautygomez1/heuristica. [Último acceso:
22 11 2017].
[10] P. ALva, «SlideShare,» Estrategias heurísticas, 14 02 2012. [En línea]. Available: https://pt.slideshare.net/paoalva27/estrategias-
heuristicas/4. [Último acceso: 22 11 2017].
[11] J. A. Mañas, «dit,» Análisis de Algoritmos: Complejidad, [En línea]. Available: http://www.lab.dit.upm.es/. [Último acceso: 22 11 2017].

También podría gustarte