Está en la página 1de 8

Instituto Tecnológico de Nuevo Laredo

Ing. Sistemas Computacionales


Inteligencia Artificial
Actividad 1.5
Algoritmos de la heurística

Víctor Fermin Martínez Alvarado


19100209
Algoritmos de la heurística

1. Algoritmos de exploración de alternativas

Los algoritmos de exploración de alternativas son métodos utilizados en inteligencia


artificial y aprendizaje automático para buscar y evaluar diferentes opciones o
alternativas en un espacio de búsqueda. Estos algoritmos permiten al agente o
sistema explorar de manera eficiente un conjunto de posibles soluciones o acciones
para determinar cuál es la más prometedora o adecuada en función de ciertos
criterios o medidas.

Las características de los algoritmos de exploración de alternativas pueden variar


Características:

dependiendo del enfoque y la técnica utilizada.

1. Exploración sistemática: Los algoritmos de exploración de alternativas están


diseñados para explorar de manera sistemática el espacio de búsqueda,
considerando diferentes opciones y estados posibles. Siguen un proceso
estructurado para examinar exhaustivamente las alternativas disponibles.

2. Evaluación y selección de alternativas: Estos algoritmos evalúan y


comparan las diferentes alternativas en función de algún criterio o medida de
rendimiento establecido. Utilizan información disponible, como heurísticas o
evaluaciones de utilidad, para determinar la calidad y la viabilidad de cada opción.

3. Adaptabilidad: Los algoritmos de exploración de alternativas pueden adaptarse


a diferentes entornos y problemas. Pueden ajustar su estrategia de exploración en
función de la información recibida o las actualizaciones del entorno, lo que les permite
tomar decisiones más informadas y eficientes.

4. Eficiencia computacional: Algunos algoritmos de exploración de alternativas


están diseñados para ser eficientes en términos de tiempo y recursos
computacionales. Se enfocan en técnicas de poda, optimización o utilizan estructuras
de datos especializadas para acelerar la exploración y reducir la complejidad
computacional.

5. Utilización de información adicional: Muchos algoritmos de exploración de


alternativas hacen uso de información adicional, como heurísticas, conocimiento
experto o datos históricos, para guiar la búsqueda hacia soluciones más
prometedoras. Esta información complementaria puede acelerar el proceso de
exploración y mejorar la calidad de las soluciones encontradas.
6. Diversificación e intensificación: Algunos algoritmos de exploración de
alternativas buscan un equilibrio entre la exploración amplia de nuevas áreas del
espacio de búsqueda y la intensificación en áreas prometedoras. Esto permite una
búsqueda equilibrada entre la búsqueda de nuevas soluciones y la refinación de las
mejores encontradas hasta el momento.

7. Control de la complejidad: Los algoritmos de exploración de alternativas


pueden tener mecanismos para controlar la complejidad de la búsqueda. Pueden
establecer límites en la profundidad de la exploración, utilizar técnicas de muestreo o
aplicar estrategias de búsqueda adaptativas para gestionar la cantidad de recursos
requeridos.

Ejemplos:
Estos algoritmos son especialmente útiles en problemas en los que hay múltiples
opciones disponibles y se necesita encontrar la mejor acción o solución en función de
algún objetivo o medida de rendimiento. Algunos ejemplos comunes de algoritmos de
exploración de alternativas son:

1. Búsqueda en anchura: Este algoritmo explora sistemáticamente todas las


opciones posibles a partir de un estado inicial, expandiendo gradualmente los
estados y verificando si se alcanza el objetivo o se cumple alguna condición
establecida.

La búsqueda en anchura le asigna dos valores a cada vértice v:

• Una distancia, que da el número mínimo de aristas en cualquier camino del


vértice de origen al vértice v.

• El vértice predecesor de v a lo largo de algún camino más corto del vértice de


origen. El predecesor del vértice de origen es algún valor especial, como null, que
indica que no tiene predecesor.

Si no hay un camino del vértice de origen al vértice v, entonces la distancia de v es


infinita y su predecesor tiene el mismo valor especial que el predecesor del vértice
de origen.
2. Búsqueda en profundidad: Este algoritmo se basa en una estrategia de
exploración en la que se avanza lo más profundamente posible en cada rama del
árbol de búsqueda antes de retroceder y explorar otras ramas.
Permite recorrer todos los nodos de un grafo o árbol (teoría de grafos) de manera
ordenada, pero no uniforme. Su funcionamiento consiste en ir expandiendo todos
y cada uno de los nodos que va localizando, de forma recurrente, en un camino
concreto. Cuando ya no quedan más nodos que visitar en dicho camino, regresa
(Backtracking), de modo que repite el mismo proceso con cada uno de los
hermanos del nodo ya procesado.

3. Búsqueda heurística: Estos algoritmos utilizan información adicional, como


heurísticas o estimaciones, para guiar la exploración hacia las alternativas más
prometedoras. Ejemplos comunes incluyen el algoritmo A* y el algoritmo de búsqueda
local.

4. Algoritmos de Monte Carlo: Estos algoritmos utilizan muestras aleatorias para


explorar el espacio de búsqueda y estimar la calidad o utilidad de diferentes
alternativas. Ejemplos conocidos son el árbol de búsqueda Monte Carlo (MCTS) y el
método de muestreo de importancia.
2. Algoritmo A*:

El algoritmo A* (pronunciado "A estrella") es un algoritmo de búsqueda informada


utilizado comúnmente en problemas de búsqueda y en la resolución de problemas
en inteligencia artificial.

El objetivo del algoritmo A* es encontrar el camino óptimo desde un estado inicial


a un estado objetivo en un espacio de búsqueda, minimizando el costo total de
moverse entre los estados. Combina la búsqueda en anchura con una estimación
heurística para guiar la exploración hacia las alternativas más prometedoras.

El algoritmo A* utiliza una función de evaluación f(n) que combina el costo


acumulado desde el estado inicial g(n) y una estimación heurística del costo
restante h(n) para alcanzar el estado objetivo. La función de evaluación se define
como f(n) = g(n) + h(n). El algoritmo selecciona y expande los estados con la
menor función de evaluación, lo que implica que prioriza los estados que tienen
un menor costo acumulado más la menor estimación heurística.

A* mantiene una lista de estados conocidos y utiliza una estructura de datos


llamada "cola de prioridad" para seleccionar el próximo estado a expandir. La cola
de prioridad ordena los estados según su función de evaluación, de modo que los
estados con menor f(n) tienen prioridad.

Una heurística admisible es una función que subestima el costo real desde un
estado dado hasta el estado objetivo. Si la heurística es admisible, A* garantiza
encontrar una solución óptima, es decir, el camino con el costo total más bajo
desde el estado inicial hasta el estado objetivo.

El algoritmo A* es ampliamente utilizado en problemas de búsqueda en gráficos,


planificación de rutas, juegos y otros dominios donde se necesita encontrar una
solución óptima en un espacio de búsqueda grande. Su eficiencia depende en
gran medida de la calidad de la heurística utilizada y la estructura del espacio de
búsqueda.

Características:

El algoritmo A* presenta varias características distintivas que lo hacen popular y


efectivo en la resolución de problemas de búsqueda. Algunas de estas
características son:

1. Búsqueda informada: A* utiliza información adicional en forma de una


heurística para guiar la búsqueda hacia la solución óptima. La heurística estima el
costo restante desde un estado dado hasta el estado objetivo, lo que permite
priorizar la exploración de las opciones más prometedoras.
2. Completeness (Completitud): Siempre que exista una solución factible, A*
garantiza encontrarla. Esto significa que el algoritmo no se quedará atascado en
un bucle infinito y eventualmente encontrará una solución o determinará que no
existe ninguna.

3. Optimalidad: Si la heurística utilizada es admisible, es decir, nunca


sobreestima el costo real hasta el estado objetivo, entonces A* garantiza encontrar
la solución óptima. Esto significa que el camino encontrado por A* tendrá el costo
total más bajo posible desde el estado inicial hasta el estado objetivo.

4. Eficiencia en casos promedio: A* es especialmente eficiente en problemas


donde la heurística proporciona una estimación precisa del costo restante. En
estos casos, puede reducir significativamente el número de estados explorados
en comparación con otros algoritmos de búsqueda no informada, como la
búsqueda en anchura o la búsqueda en profundidad.

5. Adaptable a diferentes dominios: El algoritmo A* es versátil y se puede aplicar


en una amplia variedad de problemas y dominios, incluyendo planificación de
rutas, juegos, inteligencia artificial y resolución de problemas en general. La
flexibilidad del algoritmo lo hace adecuado para problemas con diferentes
estructuras de espacio de búsqueda y diferentes criterios de optimización.

6. Control de memoria: A* utiliza una estructura de datos llamada cola de


prioridad para seleccionar los estados a expandir en orden de menor función de
evaluación (f(n)). Esto permite un uso eficiente de la memoria, ya que solo se
mantienen en memoria los estados más prometedores en términos de la función
de evaluación.

7. Extensibilidad: El algoritmo A* se puede extender y adaptar para incorporar


consideraciones adicionales, como restricciones o limitaciones específicas del
problema. Por ejemplo, se pueden agregar penalizaciones o costos adicionales a
la función de evaluación para tener en cuenta ciertas restricciones en el camino o
el uso de recursos.

Ejemplos:

1. Planificación de rutas: Supongamos que deseas encontrar la ruta más corta


para llegar de un punto A a un punto B en un mapa de carreteras. Puedes
representar cada intersección como un estado y las carreteras como acciones
posibles entre estados. Utilizando una heurística que estima la distancia
euclidiana hasta el destino, el algoritmo A* puede encontrar la ruta óptima en
términos de distancia.

2. Juegos de tablero: El algoritmo A* se puede utilizar en juegos como el ajedrez


o el juego del quince para encontrar la secuencia de movimientos óptimos que
llevan a una posición ganadora. La heurística puede ser diseñada para evaluar la
calidad de una posición y guiar la búsqueda hacia las jugadas más prometedoras.

3. Búsqueda en laberintos: Supongamos que tienes un laberinto y deseas


encontrar el camino más corto desde una posición inicial hasta una salida. Cada
celda del laberinto puede ser un estado y las acciones son los posibles
movimientos a celdas vecinas. A* puede utilizar una heurística que estima la
distancia de Manhattan hasta la salida y encontrar el camino óptimo.

4. Planificación de tareas: En el ámbito de la planificación de tareas, el algoritmo


A* se puede utilizar para encontrar una secuencia de acciones que cumpla ciertos
objetivos. Cada estado representa un estado del mundo y las acciones son las
operaciones que se pueden realizar. Utilizando una heurística adecuada, A*
puede encontrar una secuencia de acciones óptima para alcanzar los objetivos.

3. Algoritmos de búsqueda local.

Los algoritmos de búsqueda local son técnicas de optimización que buscan mejorar
iterativamente una solución inicial al explorar vecindades cercanas en el espacio de
búsqueda. A diferencia de los algoritmos de búsqueda exhaustiva que exploran todo el
espacio de búsqueda, los algoritmos de búsqueda local se centran en un vecindario
limitado alrededor de la solución actual.

Estos algoritmos son especialmente útiles en problemas de optimización, donde el


objetivo es encontrar la mejor solución posible en un espacio de búsqueda grande y
complejo. A menudo, estos problemas implican maximizar o minimizar una función de
evaluación (llamada función objetivo) al ajustar los valores de un conjunto de variables
de decisión.

La idea central de los algoritmos de búsqueda local es comenzar con una solución inicial
y realizar iterativamente movimientos locales en el vecindario para explorar soluciones
adyacentes. Si se encuentra una solución mejor en el vecindario, se actualiza la solución
actual y se repite el proceso. El algoritmo continúa hasta que se alcanza un criterio de
parada, como un límite de iteraciones o una convergencia satisfactoria.

Existen diferentes tipos de algoritmos de búsqueda local, entre los que se incluyen:

1. Hill Climbing (Escalada de colina): Este es el algoritmo de búsqueda local más


simple. Se selecciona una solución inicial y se exploran las soluciones vecinas una por
una. Si se encuentra una solución mejor, se actualiza la solución actual y se continúa
hasta que no haya mejoras en el vecindario.

2. Simulated Annealing (Recocido simulado): Este algoritmo permite aceptar


soluciones que empeoran en comparación con la solución actual con cierta probabilidad.
Esta probabilidad disminuye a medida que el algoritmo avanza, lo que le permite escapar
de óptimos locales y buscar soluciones más globales.
3. Búsqueda Tabú: Este algoritmo mantiene un conjunto de movimientos prohibidos
(llamados lista tabú) para evitar caer en ciclos y escapar de óptimos locales. Aunque se
permiten movimientos que empeoran la solución, se lleva un registro de los movimientos
recientes para evitar repetirlos.

4. Algoritmos genéticos: Estos algoritmos están inspirados en la evolución biológica.


Utilizan conceptos como la selección, la reproducción y la mutación para explorar y
mejorar soluciones en un espacio de búsqueda. Los individuos se representan como
cromosomas y se aplican operadores genéticos para generar nuevas soluciones.

Las ventajas de los algoritmos de búsqueda local incluyen su eficiencia computacional,


ya que se centran en una vecindad limitada, y su capacidad para manejar espacios de
búsqueda grandes y complejos. Sin embargo, también tienen limitaciones, como la
posibilidad de quedar atrapados en óptimos locales y la dependencia de la calidad de la
solución inicial.

Ejemplos:

1. Problema del viajante de comercio (TSP, por sus siglas en inglés): El TSP busca
encontrar la ruta más corta para visitar un conjunto de ciudades una vez y regresar al
punto de partida. Los algoritmos de búsqueda local, como el algoritmo de 2-opt, pueden
mejorar iterativamente una solución inicial mediante el intercambio de dos arcos en la
ruta para reducir su longitud.

2. Asignación de tareas: En problemas de asignación de tareas, se busca encontrar la


asignación óptima de tareas a un conjunto de recursos. Los algoritmos de búsqueda local
pueden explorar diferentes asignaciones mediante el intercambio de tareas entre
recursos y mejorar gradualmente la calidad de la asignación.

3. Programación de horarios: En la programación de horarios, se busca encontrar un


horario óptimo para asignar clases, reuniones u otros eventos. Los algoritmos de
búsqueda local pueden realizar movimientos locales, como intercambiar el horario de
dos eventos, y mejorar iterativamente la calidad del horario.

4. Optimización de rutas de vehículos: En problemas de optimización de rutas de


vehículos, se busca encontrar la ruta óptima para que un conjunto de vehículos visite
diferentes ubicaciones. Los algoritmos de búsqueda local pueden mejorar una solución
inicial realizando movimientos locales, como el intercambio de ubicaciones en las rutas,
para reducir la distancia total recorrida.

5. Optimización de funciones: Los algoritmos de búsqueda local también se utilizan


para optimizar funciones matemáticas. Estos algoritmos buscan encontrar el máximo o
mínimo de una función ajustando iterativamente los valores de las variables. Un ejemplo
común es el algoritmo de descenso de gradiente, que realiza movimientos en la dirección
del gradiente para encontrar el mínimo de una función.

También podría gustarte