Está en la página 1de 184

Inteligencia Artificial

Tema 3 – INF513

Búsquedas
Temario
• Conceptos básicos: Introducción.
• Problemas de búsqueda
• Técnicas de búsqueda ciega
• Técnicas de búsqueda heurística
• Técnicas de búsqueda óptima
• Técnicas de búsqueda con adversarios
• Taller de Discusión: La búsqueda de datos
en línea con IA
Conceptos básicos: Introducción
La búsqueda es un proceso fundamental en la inteligencia artificial
que consiste en encontrar una solución óptima o satisfactoria a un
problema en un espacio de estados, espacio de búsqueda o de
acciones posibles. Un espacio de búsqueda es un conjunto de
estados o acciones posibles que se pueden tomar para llegar a una
solución deseada. El objetivo es encontrar una secuencia de
acciones que conduzcan a la solución óptima o satisfactoria

En IA los términos resolución de problemas y búsqueda se refieren


a un conjunto de técnicas que se utilizan en dominios como la
deducción, elaboración de planes de actuación, razonamientos de
sentido común, prueba automática de teoremas, etc. Aplicaciones
de este tipo aparecen en diferentes formas en sistemas basados o
no en inteligencia artificial, como por ejemplo en los programas
que tratan de entender el lenguaje natural, en los programas que
tratan de sintetizar un conjunto de reglas de clasificación en un
determinado dominio de actuación, o en los sistemas que realizan
inferencias a partir de un conjunto de reglas
Conceptos básicos: Introducción
La resolución de problemas en IA requiere, normalmente, determinar una
secuencia de acciones o decisiones. Esta secuencia será ejecutada
posteriormente por un agente con el fin de alcanzar un objetivo a partir de una
situación inicial dada. Dependiendo del problema concreto, la ejecución de la
secuencia de acciones o decisiones tiene asociado un coste que se tratará de
minimizar, o bien tiene asociado un beneficio que se tratará de maximizar.

Los procesos de búsqueda tienen sentido en problemas que reúnen una serie
de características:
• Cabe la posibilidad de asociar un conjunto de estados a las diferentes
situaciones en que se puede encontrar el objeto del dominio sobre el que
se define el problema.
• Hay una serie de estados iniciales desde los que empezaría el proceso de
búsqueda.
• Existen ciertos operadores, tal que un operador aplicado sobre un estado
producirá otro estado.
• Existe al menos un estado meta o estado solución.
Conceptos básicos: Introducción
Cualquier proceso de búsqueda persigue, asociando nodos con
estados y arcos con operadores, encontrar un camino que conduzca
de un nodo inicial a otro meta.

Un algoritmo de búsqueda toma como entrada un problema y


devuelve una solución de la forma secuencia de acciones. Una vez
que encontramos una solución, se procede a ejecutar las acciones
que ésta recomienda. Esta es la llamada fase de ejecución. Así,
tenemos un diseño simple de un agente «formular, buscar,
ejecutar»

Después de formular un objetivo y un problema a resolver, el agente


llama al procedimiento de búsqueda para resolverlo. Entonces, usa
la solución para guiar sus acciones, haciendo lo que la solución le
indica como siguiente paso a hacer (generalmente, primera acción
de la secuencia) y procede a eliminar este paso de la secuencia. Una
vez ejecutada la solución, el agente formula un nuevo objetivo
Conceptos básicos: Introducción
Las búsquedas se utilizan para resolver una variedad de situaciones, tales como:

1. Planificación: la búsqueda se puede utilizar para encontrar una secuencia de acciones que conducirán a un objetivo deseado. Esto
incluye problemas de planificación y problemas de optimización, donde se busca encontrar la mejor solución entre muchas
posibles. Por ejemplo, en la planificación de rutas o en la asignación de recursos, se pueden utilizar técnicas de búsqueda para
encontrar la mejor solución en términos de tiempo, costo u otros criterios.
2. Juegos: En los juegos de estrategia, como el ajedrez o el go, las búsquedas son esenciales para que los agentes de inteligencia
artificial tomen decisiones óptimas. Los algoritmos de búsqueda adversarial, como el minimax y el algoritmo alfa-beta pruning, se
utilizan para explorar el árbol de juego y seleccionar las jugadas que maximicen la ganancia o minimicen la pérdida. Esto permite
que los programas de IA jueguen de manera competitiva contra humanos u otros programas.
3. Sistemas de recomendación: En los sistemas de recomendación, las búsquedas se utilizan para encontrar elementos o
recomendaciones relevantes para los usuarios. Por ejemplo, en los motores de búsqueda web, se utilizan algoritmos de búsqueda
para indexar y recuperar páginas web relevantes en respuesta a una consulta de búsqueda. Del mismo modo, en los sistemas de
recomendación de productos o películas, se utilizan técnicas de búsqueda para encontrar elementos que se ajusten a los gustos y
preferencias de los usuarios.
Conceptos básicos: Introducción
4. Reconocimiento de patrones: En el campo del reconocimiento de patrones, las búsquedas se
utilizan para encontrar patrones y características en grandes conjuntos de datos. Por ejemplo, en la
clasificación de imágenes, se pueden utilizar técnicas de búsqueda para encontrar características
relevantes en las imágenes y luego clasificarlas en categorías específicas. En el reconocimiento de
voz, las búsquedas se utilizan para encontrar patrones de sonido que correspondan a palabras y
frases específicas.
5. Optimización de recursos: En muchos escenarios, las búsquedas se aplican para encontrar la
asignación óptima de recursos limitados. Por ejemplo, en la programación de tareas o en la
programación de horarios, se pueden utilizar algoritmos de búsqueda para encontrar la mejor
distribución de tareas o eventos en función de las restricciones y objetivos específicos.
6. Diagnóstico y resolución de problemas: En el campo del diagnóstico y la resolución de problemas,
las búsquedas se utilizan para identificar la causa raíz de un problema y encontrar la solución más
efectiva. Esto se aplica en sistemas expertos y sistemas de diagnóstico médico, donde se exploran
diferentes hipótesis y se busca la evidencia que respalde o descarte cada una de ellas.
Conceptos básicos: Introducción
Las búsquedas en la inteligencia artificial permiten:

1. Resolución sistemática de problemas: Las búsquedas ofrecen un enfoque


sistemático y estructurado para resolver problemas. Permiten explorar de
manera ordenada y exhaustiva el espacio de búsqueda, examinando
diferentes opciones y caminos para encontrar soluciones óptimas o cercanas
a la óptima.
2. Versatilidad y adaptabilidad: Las técnicas de búsqueda pueden aplicarse a
una amplia variedad de problemas y dominios en la IA. Ya sea en la
planificación de rutas, la toma de decisiones en juegos estratégicos o la
optimización de recursos, las búsquedas son flexibles y se pueden adaptar a
diferentes contextos.
3. Eficiencia en tiempo y recursos: Aunque la eficiencia de las búsquedas puede
verse afectada por el tamaño y la complejidad del espacio de búsqueda, en
muchos casos se pueden encontrar soluciones aceptables en un tiempo
razonable. Además, técnicas como la poda y la optimización ayudan a reducir
el tiempo de búsqueda descartando ramas no prometedoras.
Conceptos básicos: Introducción
4. Exploración de soluciones alternativas: Las búsquedas permiten examinar
diferentes opciones y caminos para encontrar soluciones alternativas. Esto
resulta útil cuando se necesitan considerar múltiples objetivos o cuando se busca
una solución de respaldo en caso de que la primera opción no sea factible.
5. Aplicación en problemas complejos: Las técnicas de búsqueda son
especialmente útiles en problemas complejos, donde el espacio de búsqueda es
grande y la exploración manual no es práctica. Las búsquedas pueden abordar
problemas de optimización, planificación y toma de decisiones en entornos
complejos, proporcionando soluciones eficientes y efectivas.
6. Compatibilidad con otras técnicas de IA: Las búsquedas se pueden combinar
con otras técnicas de IA, como el aprendizaje automático o la lógica, para
abordar problemas más complejos. Por ejemplo, se pueden utilizar algoritmos de
búsqueda para explorar el espacio de posibles soluciones y luego utilizar técnicas
de aprendizaje automático para mejorar la calidad de las soluciones encontradas.
7. Interpretabilidad y explicabilidad: A diferencia de algunas técnicas de IA más
complejas, las búsquedas suelen ser más interpretables y explicables. El proceso
de búsqueda y los caminos explorados pueden ser comprendidos y justificados,
lo que facilita la explicación de las decisiones tomadas por el sistema.
Conceptos básicos: Introducción
Las búsquedas en la inteligencia artificial ofrecen varias ventajas y desventajas que es importante
tener en cuenta al aplicar estas técnicas. A continuación, se detallan algunas de ellas:

Ventajas:
1. Completitud: Las técnicas de búsqueda pueden garantizar encontrar una solución si existe, siempre
y cuando se apliquen correctamente. Esto es especialmente cierto para las estrategias de búsqueda
óptima, donde se garantiza encontrar la solución de menor costo.
2. Adaptabilidad: Las técnicas de búsqueda se pueden adaptar a diferentes problemas y dominios.
Pueden ser aplicadas a una amplia gama de situaciones, desde la resolución de problemas lógicos
hasta la toma de decisiones en juegos y la optimización de rutas.
3. Eficiencia: Algoritmos como el A* y el algoritmo de búsqueda en profundidad limitada pueden
encontrar soluciones de manera eficiente, evitando explorar en profundidad áreas irrelevantes del
espacio de búsqueda.
4. Modularidad: Las técnicas de búsqueda se pueden combinar con otras técnicas de inteligencia
artificial, como el aprendizaje automático, para mejorar la eficacia y la calidad de las soluciones
encontradas.
5. Interpretabilidad: A menudo, las técnicas de búsqueda generan una secuencia de acciones o una
estructura de solución fácilmente interpretable para los seres humanos. Esto facilita la comprensión y
Conceptos básicos: Introducción
Desventajas:

1. Complejidad del espacio de búsqueda: En problemas complejos, el tamaño y la complejidad del espacio de búsqueda pueden ser
enormes. Esto puede hacer que las búsquedas exhaustivas sean computacionalmente costosas o incluso impracticables. En tales casos, se
requieren técnicas más avanzadas, como la poda y la heurística, para limitar la exploración y encontrar soluciones en un tiempo razonable.
2. Optimalidad limitada: Las búsquedas no siempre garantizan encontrar la solución óptima, especialmente en espacios de búsqueda
grandes y complejos. En algunos casos, las técnicas de búsqueda pueden quedar atrapadas en óptimos locales subóptimos, lo que impide
alcanzar la solución óptima global. Para abordar este problema, se pueden utilizar técnicas de búsqueda más avanzadas, como la
búsqueda local estocástica o algoritmos genéticos.
3. Sensibilidad a la representación del problema: La eficacia de las búsquedas puede depender en gran medida de la forma en que se
represente el problema. Una representación inadecuada puede llevar a una búsqueda ineficiente o a la omisión de soluciones viables. Es
importante elegir una representación adecuada que capture las características esenciales del problema y facilite la exploración del espacio
de búsqueda.
4. Dependencia de la heurística: En muchos casos, las búsquedas se benefician de la utilización de heurísticas, que son funciones de
evaluación que guían la exploración del espacio de búsqueda. Sin embargo, el diseño de una buena heurística puede ser un desafío y
requerir conocimientos expertos en el dominio del problema. Una mala heurística puede conducir a una exploración
5. Falta de garantía de optimización global: Aunque las técnicas de búsqueda óptima pueden garantizar encontrar una solución óptima
dentro del espacio de búsqueda, no pueden garantizar que esta solución sea la mejor posible en el contexto del problema del mundo real.
La optimización global puede ser un desafío en problemas complejos.
Conceptos básicos: Introducción
Existen varias técnicas de búsqueda utilizadas en la inteligencia artificial, algunas de las
más comunes son:

1. Búsqueda en anchura (Breadth-First Search, BFS): Este algoritmo explora todos


los nodos vecinos de un estado antes de pasar a los siguientes niveles de
profundidad. Es completo y encuentra la solución óptima en problemas con
costos uniformes, pero puede ser ineficiente en espacios de búsqueda grandes.
2. Búsqueda en profundidad (Depth-First Search, DFS): En esta técnica, se explora
un camino hasta llegar a un estado objetivo o a un punto en el que ya no hay
más acciones posibles, y luego retrocede y explora otro camino. Es útil en
espacios de búsqueda grandes, pero puede no encontrar la solución óptima.
3. Búsqueda de costo uniforme (Uniform-Cost Search, UCS): Este algoritmo
selecciona el camino con el menor costo acumulado en cada paso. Es completo
y encuentra la solución óptima en problemas con costos uniformes, pero puede
ser ineficiente en problemas con grandes diferencias de costo entre las
acciones.
Conceptos básicos: Introducción
4. Búsqueda informada o heurística: Estas técnicas utilizan una función
heurística para estimar el costo o la calidad de una solución en cada paso.
Ejemplos de algoritmos de búsqueda informada son la búsqueda A* (A-
Star) y la búsqueda voraz (Greedy Search). Estos algoritmos pueden ser
eficientes y encontrar soluciones óptimas si la heurística es adecuada, pero
pueden no ser completos en algunos casos.
5. Búsqueda en haz (Beam Search): Este enfoque explora varios caminos a la
vez, manteniendo solo los mejores candidatos según un criterio de
evaluación. Es útil para espacios de búsqueda grandes, pero puede no
encontrar la solución óptima.
6. Algoritmos genéticos: Estos algoritmos están inspirados en la teoría de la
evolución y utilizan operadores genéticos como la mutación y la
recombinación para buscar soluciones en un espacio de búsqueda. Son
útiles para problemas de optimización y pueden encontrar soluciones
cercanas a la óptima, pero pueden requerir más tiempo de ejecución.
Conceptos básicos: Introducción
7. Algoritmos de búsqueda local: Estos algoritmos se enfocan en mejorar iterativamente una solución inicial mediante
movimientos locales. Ejemplos de algoritmos de búsqueda local son el recocido simulado (Simulated Annealing) y el descenso
del gradiente (Gradient Descent). Son eficientes en problemas con una sola solución óptima local, pero pueden quedarse
atascados en óptimos locales subóptimos
8. Algoritmos de búsqueda adversarial: Estos algoritmos se utilizan en juegos de dos jugadores, donde cada jugador busca
maximizar su propia ganancia o minimizar la ganancia del oponente. Ejemplos de algoritmos de búsqueda adversarial son el
minimax y el algoritmo alfa-beta pruning. Estos algoritmos exploran el árbol de juego considerando las posibles jugadas y las
respuestas del oponente, buscando la estrategia óptima.
9. Búsqueda con retroceso (Backtracking): Esta técnica se utiliza para explorar todas las posibles combinaciones de decisiones en
un problema, retrocediendo en caso de que se alcance un estado no válido o una solución insatisfactoria. El backtracking es
útil en problemas de combinación y optimización combinatoria, donde se deben encontrar todas las soluciones posibles.
10. Búsqueda local estocástica: Este enfoque utiliza técnicas de búsqueda aleatoria para explorar el espacio de búsqueda.
Ejemplos de algoritmos de búsqueda local estocástica son la búsqueda tabú y el recocido simulado. Estos algoritmos permiten
escapar de óptimos locales subóptimos al permitir movimientos que empeoran temporalmente la solución, lo que puede
conducir a soluciones mejores en el largo plazo.

Cada técnica de búsqueda tiene sus fortalezas y limitaciones, y la elección del algoritmo adecuado depende del problema específico y
de los recursos disponibles. Al combinar diferentes técnicas de búsqueda y ajustar los parámetros, es posible abordar una amplia
Problemas de búsqueda
Antes de seguir profundizando en el tema, resulta apropiado definir el concepto de agente. Un
agente es algo que razona (agente viene del latín agere, hacer), un agente es simplemente
algo que actúa. Todos los programas hacen algo, pero se espera que los agentes informáticos
hagan más: operar de forma autónoma, percibir su entorno, persistir durante un período de
tiempo prolongado, adaptarse al cambio y crear y perseguir objetivos. Un agente racional es
aquel que actúa para lograr el mejor resultado o, cuando hay incertidumbre, el mejor
resultado esperado.

Esto nos permite considerar un agente como un ente más complejo, capaz de percibir su
entorno a través de sensores y actuar en él mediante actuadores, con el objetivo de lograr
ciertos objetivos o cumplir tareas específicas. Los agentes de IA son diseñados para interactuar
de manera autónoma con su entorno, tomando decisiones y llevando a cabo acciones en
función de la información que reciben y las metas que persiguen.

Un agente se compone de varios componentes clave:


• Percepción: El agente utiliza sus sensores para percibir y recibir información del entorno
en el que se encuentra. Esto puede incluir datos sensoriales como imágenes, sonidos,
datos numéricos, texto, entre otros. La percepción puede ser realizada de manera
continua o discreta, dependiendo del dominio y las necesidades del agente.
Problemas de búsqueda
• Razonamiento y toma de decisiones: El agente utiliza la información percibida para razonar y
tomar decisiones. Esto implica analizar los datos recibidos, evaluar las posibles acciones y
determinar cuál es la mejor opción para alcanzar sus objetivos. El razonamiento puede
basarse en reglas predefinidas, algoritmos de búsqueda o aprendizaje automático.
• Conocimiento y representación del mundo: El agente puede tener conocimiento sobre el
entorno en el que opera, almacenado en forma de reglas, hechos o modelos. Este
conocimiento se utiliza para comprender y representar el mundo, facilitando el razonamiento
y la toma de decisiones.
• Acción y efectores: Una vez que el agente ha tomado una decisión, debe llevar a cabo una
acción en el entorno. Esto se logra mediante los efectores, que son los dispositivos físicos o
virtuales a través de los cuales el agente interactúa con el entorno. Los efectores pueden
incluir actuadores físicos, como motores o brazos robóticos, o acciones virtuales, como enviar
mensajes o ejecutar comandos en un sistema informático.
• Retroalimentación: Después de tomar una acción, el agente recibe retroalimentación o
feedback del entorno sobre los resultados de su acción. Esta retroalimentación puede ser
positiva o negativa, dependiendo de si el agente logró su objetivo o no. La retroalimentación
se utiliza para actualizar el conocimiento del agente, mejorar su desempeño y ajustar futuras
acciones.
Problemas de búsqueda
Los agentes utilizan estrategias de búsqueda para resolver problemas y alcanzar sus objetivos. La relación entre
los agentes y los problemas de búsqueda radica en que los agentes utilizan algoritmos de búsqueda para
encontrar soluciones óptimas o aproximadas a un problema dado. Estos algoritmos de búsqueda determinan
cómo el agente explora el espacio de posibles acciones y estados para encontrar una secuencia de acciones que
lleven al estado objetivo.

El agente utiliza la información disponible, como el estado inicial, las acciones posibles y las restricciones del
entorno, para construir un árbol de búsqueda o un grafo que representa las posibles secuencias de acciones.
Luego, aplica un algoritmo de búsqueda, como búsqueda en profundidad, búsqueda en anchura, búsqueda
informada (heurística) o búsqueda local, para explorar y evaluar diferentes caminos en el árbol de búsqueda con
el objetivo de encontrar la solución óptima o aproximada.

La elección del algoritmo de búsqueda dependerá del tipo de problema y de los recursos disponibles, como el
tiempo y la memoria. Algunos problemas de búsqueda pueden ser relativamente sencillos, con un espacio de
búsqueda pequeño y soluciones fácilmente alcanzables. Otros problemas pueden ser más complejos, con un
espacio de búsqueda enorme y requerir algoritmos más sofisticados para encontrar soluciones eficientes.
Problemas de búsqueda
Los problemas de búsqueda en la inteligencia artificial son un
área fundamental que aborda la resolución de situaciones
reales mediante la exploración sistemática de un espacio de
posibles alternativas. Los problemas pueden ser de una amplia
variedad de aplicaciones, desde juegos como el ajedrez hasta
la planificación de rutas en logística.

Los problemas de búsqueda son una forma común de abordar


tareas de toma de decisiones y resolución de casos. Los
agentes en la IA son entidades autónomas que interactúan con
su entorno y toman decisiones basadas en la información
disponible. Los problemas de búsqueda, por otro lado,
implican encontrar una secuencia de acciones que conduzcan a
un estado objetivo deseado a partir de un estado inicial dado.
Problemas de búsqueda
Un problema puede definirse, formalmente, por cuatro
componentes básicos:
1. El estado inicial en el que se comienza. Por
ejemplo, el estado inicial para un mapa de
Rumanía se describe como En(Arad).
2. Una descripción de las posibles acciones
disponibles. La formulación más común utiliza
una función sucesor. Dado un estado particular
x, SUCESOR-FN(x) devuelve un conjunto de
pares ordenados <acción, sucesor>, donde
cada acción es una de las acciones legales en el
estado x y cada sucesor es un estado que
puede alcanzarse desde x, aplicando la acción.
Por ejemplo, desde el estado En(Arad), la
función sucesor para el problema de Rumanía
devolverá {<Ir(Sibiu), En(Sibiu)>, <Ir(Timisoara),
En(Timisoara)>, <Ir(Zerind), En(Zerind)>}
Problemas de búsqueda
Implícitamente el estado inicial y la función sucesor definen el espacio de estados del problema (el conjunto de todos los
estados alcanzables desde el estado inicial). El espacio de estados forma un grafo en el cual los nodos son estados y los arcos
entre los nodos son acciones. Un camino en el espacio de estados es una secuencia de estados conectados por una secuencia
de acciones.
3. El test objetivo, el cual determina si un estado es un estado objetivo. Algunas veces existe un conjunto explícito de posibles
estados objetivo, y el test simplemente comprueba si el estado es uno de ellos. El objetivo del caso de estudio de Rumanía
es el conjunto {En(Bucarest)}. Algunas veces el objetivo se especifica como una propiedad abstracta más que como un
conjunto de estados enumerados explícitamente. Por ejemplo, en el ajedrez, el objetivo es alcanzar un estado llamado
«jaque mate», donde el rey del oponente es atacado y no tiene escapatoria.
4. Una función costo del camino que asigna un costo numérico a cada camino. En este caso se elige una función costo que
refleje nuestra medida de rendimiento. Por ejemplo, para llegar a Bucarest, el tiempo es esencial, así que el costo del
camino puede describirse como su longitud en kilómetros. Resulta factible suponer que el costo del camino puede
describirse como la suma de los costos de las acciones individuales a lo largo del camino. El costo individual de una acción a
que va desde un estado x al estado y se denota por c(x,a,y).

Los elementos anteriores definen un problema y pueden unirse en una estructura de datos simple que se dará como entrada al
algoritmo resolvente del problema. Una solución de un problema es un camino desde el estado inicial a un estado objetivo. La
calidad de la solución se mide por la función costo del camino, y una solución óptima tiene el costo más pequeño del camino entre
todas las soluciones
Problemas de búsqueda
Una guía más detallada de la secuencia para analizar los problemas de búsqueda en la IA
sería la siguiente:

1. Definir el estado inicial: Identifica el estado en el que comienza el problema. Es


importante tener una representación clara y precisa de este estado inicial, ya que es el
punto de partida para la búsqueda de soluciones.
2. Definir el estado objetivo: Determina el estado o los estados que se consideran
soluciones al problema. Pueden ser uno o varios estados, dependiendo de la naturaleza del
problema. La definición precisa del estado objetivo es crucial para evaluar si una solución
encontrada es válida.
3. Identificar los operadores o acciones: Analiza los operadores o acciones que se pueden
aplicar en cada estado para pasar de un estado a otro. Estos operadores deben ser válidos y
permitir la transición entre estados de acuerdo con las reglas del problema.
Problemas de búsqueda
4. Caracterizar el espacio de estados: Examina las características del espacio de
estados, incluyendo su tamaño, estructura y complejidad. Esto ayudará a comprender
la magnitud del problema y evaluar la factibilidad de los algoritmos de búsqueda.
5. Establecer las restricciones: Considera las restricciones del problema, como las
limitaciones de recursos, las restricciones de tiempo o las restricciones de
movimiento. Estas restricciones pueden afectar la viabilidad de las soluciones
encontradas y deben tenerse en cuenta durante el análisis.
6. Definir la función de costo o heurística: Si es necesario, define una función de costo
o una función heurística que permita evaluar la calidad de una solución. La función de
costo asigna un valor numérico a cada estado, mientras que la función heurística
proporciona una estimación informada de la distancia o dificultad para alcanzar el
estado objetivo.
Problemas de búsqueda
7. Evaluar la complejidad del problema: Analiza la complejidad computacional del problema de
búsqueda. Esto implica determinar si el problema es de búsqueda exhaustiva o si requiere técnicas
de búsqueda más sofisticadas, como búsqueda heurística o búsqueda informada.
8. Seleccionar el algoritmo de búsqueda: Basándote en el análisis previo, elige el algoritmo de
búsqueda más adecuado para abordar el problema. Puedes considerar algoritmos clásicos como la
búsqueda en anchura, la búsqueda en profundidad o la búsqueda A*, así como algoritmos más
avanzados como la búsqueda en escalada o los algoritmos genéticos, dependiendo de las
características del problema.
9. Realizar pruebas y evaluación: Implementa el algoritmo de búsqueda seleccionado y realiza
pruebas exhaustivas para evaluar su desempeño en el problema. Esto implica probar el algoritmo
con diferentes casos de prueba y analizar la calidad de las soluciones encontradas, el tiempo de
ejecución y el consumo de recursos.
10. Ajustar y mejorar: Si el rendimiento del algoritmo de búsqueda no es satisfactorio, puedes
considerar ajustes o mejoras. Esto puede implicar modificar la representación del problema, utilizar
heurísticas más sofisticadas o aplicar técnicas de optimización.
Problemas de búsqueda
Ventajas de los problemas de búsqueda en la IA:
1. Abordaje sistemático: Los problemas de búsqueda proporcionan un enfoque sistemático para abordar
problemas complejos. Permiten estructurar el problema en etapas definidas, lo que facilita el proceso
de encontrar soluciones.
2. Aplicabilidad general: Los algoritmos de búsqueda se pueden aplicar a una amplia gama de problemas
en diferentes dominios, como planificación, optimización, juegos, razonamiento lógico, entre otros.
Esto los hace versátiles y aplicables en diversos contextos.
3. Exploración exhaustiva: Los algoritmos de búsqueda pueden explorar exhaustivamente el espacio de
estados, lo que significa que pueden encontrar soluciones óptimas garantizadas, si existen, o enumerar
todas las soluciones posibles.
4. Automatización: Los problemas de búsqueda se pueden abordar mediante algoritmos de búsqueda
automatizados, lo que permite la automatización de tareas complejas. Esto es especialmente útil en
aplicaciones prácticas donde se requiere una solución eficiente.
5. Escalabilidad: Los problemas de búsqueda se pueden escalar para manejar problemas más grandes y
complejos. Mediante técnicas de optimización y paralelización, es posible mejorar el rendimiento y
encontrar soluciones en tiempo razonable incluso para problemas de gran tamaño.
Problemas de búsqueda
Desventajas de los problemas de búsqueda en la IA:
1. Complejidad computacional: Algunos problemas de búsqueda pueden tener una complejidad
computacional alta, lo que implica que la búsqueda exhaustiva puede ser computacionalmente costosa y
requerir mucho tiempo y recursos.
2. Explotación limitada del conocimiento: Los algoritmos de búsqueda no siempre aprovechan
eficientemente el conocimiento previo o las estructuras específicas del problema. Pueden requerir una
exploración exhaustiva y no aprovechar patrones o información que podrían conducir a soluciones más
rápidas.
3. Sensibilidad al espacio de búsqueda: El rendimiento de los algoritmos de búsqueda puede depender en
gran medida del tamaño y la estructura del espacio de búsqueda. Espacios de búsqueda muy grandes o
complejos pueden hacer que los algoritmos de búsqueda sean ineficientes o incluso impracticables.
4. Falta de garantía de soluciones óptimas: Aunque los algoritmos de búsqueda pueden encontrar soluciones
óptimas si existen, esto no siempre está garantizado. En algunos casos, los algoritmos pueden quedar
atrapados en óptimos locales o no encontrar la mejor solución posible.
5. Dificultad en problemas dinámicos: Los problemas de búsqueda pueden enfrentar desafíos adicionales en
entornos dinámicos o cambiantes, donde la información y las condiciones pueden modificarse durante la
búsqueda. Esto puede requerir adaptación y actualización continua de la estrategia de búsqueda.
Problemas de búsqueda
La representación del espacio de estados juega un papel fundamental en los problemas de búsqueda en la inteligencia
artificial. El espacio de estados es el conjunto de todas las posibles configuraciones o estados que se pueden alcanzar a
partir del estado inicial, y la forma en que este espacio se representa tiene un impacto directo en la eficiencia y
efectividad de los algoritmos de búsqueda.

La representación del espacio de estados debe capturar de manera precisa y compacta la información necesaria para
describir el problema y sus posibles soluciones. Algunas de las consideraciones clave en la representación del espacio de
estados incluyen:
1. Estructura del estado: La estructura del estado depende del dominio del problema. Puede ser una
representación simple, como una cadena de texto o un conjunto de variables, o una estructura más compleja,
como un grafo o una matriz. Es importante elegir una estructura que permita una descripción completa y
eficiente de los estados.
2. Codificación de la información: Los elementos clave del problema, como las variables y los atributos, deben ser
codificados de manera adecuada en la representación del estado. Esto implica elegir las variables relevantes y
asignarles valores adecuados para describir completamente el estado.
3. Relaciones entre los estados: La representación del espacio de estados debe capturar las relaciones entre los
diferentes estados y cómo se pueden alcanzar unos a partir de otros mediante la aplicación de operadores o
acciones. Esto puede incluir relaciones de adyacencia, restricciones y dependencias entre variables, entre otros.
Problemas de búsqueda
La relación entre la representación del espacio de estados y los problemas de búsqueda se basa en que los algoritmos de búsqueda operan
directamente sobre esta representación. Los algoritmos de búsqueda exploran el espacio de estados mediante la generación de sucesores a
partir de los estados actuales y la aplicación de operadores o acciones válidas. La representación del espacio de estados determina qué
operadores son aplicables en cada estado y cómo se pueden generar los sucesores.

Una representación del espacio de estados adecuada puede proporcionar las siguientes ventajas en los problemas de búsqueda:
• Eficiencia: Una representación compacta y estructurada puede reducir el tamaño del espacio de búsqueda y, por lo tanto, mejorar la
eficiencia de los algoritmos de búsqueda al reducir el número de estados a explorar.
• Información relevante: Una representación bien diseñada puede capturar la información relevante del problema y facilitar la toma de
decisiones durante la búsqueda. Esto puede incluir restricciones, conocimiento heurístico o relaciones entre variables que guíen la
búsqueda hacia soluciones prometedoras.
• Flexibilidad: La representación del espacio de estados puede adaptarse a diferentes tipos de problemas y dominios. Puede permitir la
incorporación de diferentes tipos de información, como restricciones, preferencias o conocimiento experto, según las necesidades del
problema.

Una representación del espacio de estados inadecuada puede llevar a las siguientes desventajas:
• Complejidad computacional: Una representación poco estructurada o mal diseñada puede aumentar la complejidad computacional de
los algoritmos de búsqueda y hacer que sean menos eficientes.
• Pérdida de información relevante: Una representación que no captura toda la información relevante del problema puede limitar la
capacidad de los algoritmos de búsqueda para encontrar soluciones óptimas o de alta calidad.
Técnicas de búsqueda ciega
Las técnicas de búsqueda ciega, también conocidas como búsquedas
no informadas, son algoritmos de búsqueda que exploran el espacio
de estados de un problema sin utilizar información adicional sobre el
dominio o la meta a alcanzar. Estas técnicas se basan únicamente en
la estructura del problema y en la generación sistemática de
sucesores para encontrar una solución.

El término significa que ellas no tienen información adicional acerca


de los estados más allá de la que proporciona la definición del
problema. Todo lo que ellas pueden hacer es generar los sucesores y
distinguir entre un estado objetivo de uno que no lo es. Las
estrategias que saben si un estado no objetivo es «más prometedor»
que otro se llaman búsqueda informada o búsqueda heurística;
Técnicas de búsqueda ciega
Aunque las técnicas de búsqueda a ciega pueden ser simples de entender e implementar, su
eficiencia y capacidad para encontrar soluciones óptimas pueden variar según el problema y el
tamaño del espacio de búsqueda. Algunas características comunes de las técnicas de búsqueda ciega:

1. Desconocimiento del estado objetivo: Las técnicas de búsqueda ciega no tienen información
previa sobre la ubicación o la estructura del estado objetivo. Comienzan desde el estado inicial
y exploran el espacio de búsqueda sin ningún conocimiento sobre el objetivo final.
2. Exploración exhaustiva: Las técnicas de búsqueda ciega suelen examinar sistemáticamente
todos los posibles estados en el espacio de búsqueda. Pueden generar una gran cantidad de
nodos y realizar un análisis exhaustivo para encontrar una solución.
3. No utilizan heurísticas específicas del dominio: A diferencia de las técnicas de búsqueda
informada, las técnicas de búsqueda ciega no utilizan heurísticas específicas del dominio. No se
tiene en cuenta ninguna información adicional sobre el problema, como la distancia a la meta
o el costo de llegar a un estado.
Técnicas de búsqueda ciega
4. Estrategias de expansión de nodos: Las técnicas de búsqueda ciega utilizan diferentes estrategias para
expandir nodos y explorar el espacio de búsqueda. Algunas estrategias comunes incluyen la búsqueda
en amplitud, la búsqueda en profundidad, la búsqueda de costo uniforme y la búsqueda bidireccional.
5. Complejidad computacional: La complejidad computacional de las técnicas de búsqueda ciega puede
variar según la estrategia utilizada y el tamaño del espacio de búsqueda. Algunas técnicas pueden
requerir tiempo y recursos significativos para explorar todo el espacio de búsqueda, especialmente en
problemas con espacios de búsqueda grandes.
6. No garantizan soluciones óptimas: Debido a la falta de información específica sobre el dominio, las
técnicas de búsqueda ciega no pueden garantizar soluciones óptimas en todos los casos. Pueden
encontrar soluciones subóptimas o realizar una búsqueda exhaustiva sin encontrar una solución en
problemas complejos.
7. Posibilidad de ciclos o bucles infinitos: En algunas situaciones, las técnicas de búsqueda ciega pueden
caer en ciclos o bucles infinitos, especialmente si hay estados repetidos en el espacio de búsqueda.
Esto puede ocurrir si no se establecen mecanismos de control adecuados, como la detección y
evitación de estados visitados anteriormente.
Técnicas de búsqueda ciega
Ventajas de las técnicas de búsqueda ciega:

1. Aplicabilidad general: Las técnicas de búsqueda ciega se pueden aplicar a una amplia gama de
problemas sin requerir información específica sobre el dominio. Esto las hace versátiles y
adecuadas para problemas en los que la información adicional no está fácilmente disponible
o es costosa de obtener.
2. Simplicidad conceptual: Las técnicas de búsqueda ciega son relativamente sencillas de
entender e implementar. No se requiere un conocimiento detallado del dominio del problema
ni de heurísticas específicas. Esto facilita su implementación y permite que sean utilizadas por
personas con diferentes niveles de experiencia en IA.
3. Complejidad computacional predecible: Las técnicas de búsqueda ciega tienen una
complejidad computacional bien definida y predecible. Esto facilita la estimación del tiempo y
los recursos requeridos para resolver un problema en particular, lo que puede ser útil en la
planificación y el diseño de sistemas de IA.
Técnicas de búsqueda ciega
Desventajas de las técnicas de búsqueda ciega:

1. Ineficiencia en espacios de búsqueda grandes: Una de las principales desventajas de las técnicas de búsqueda ciega
es su ineficiencia en problemas con espacios de búsqueda grandes. Estas técnicas pueden requerir una exploración
exhaustiva del espacio de búsqueda, lo que resulta en un tiempo de ejecución y un consumo de recursos
considerablemente altos.
2. Falta de información sobre el dominio: Las técnicas de búsqueda ciega no utilizan información adicional sobre el
dominio del problema, lo que puede llevar a una exploración menos eficiente del espacio de búsqueda. Al no
aprovechar la información disponible, pueden pasar por alto patrones o estructuras que podrían guiar la búsqueda
hacia soluciones más rápidas y óptimas.
3. Riesgo de búsqueda infinita: En algunos casos, las técnicas de búsqueda ciega pueden caer en ciclos o bucles
infinitos sin encontrar una solución. Esto puede ocurrir cuando hay estados repetidos en el espacio de búsqueda o
cuando no se establece un mecanismo adecuado de control de la búsqueda, como un límite de profundidad.
4. No garantizan soluciones óptimas: Dado que las técnicas de búsqueda ciega no utilizan información heurística para
guiar la búsqueda, no pueden garantizar soluciones óptimas en todos los casos. En algunos problemas, pueden
encontrar soluciones subóptimas o alejadas de la solución óptima debido a la falta de información precisa sobre el
dominio.
Técnicas de búsqueda ciega
Hay 5 tipos de estrategias de búsqueda desinformadas.

1. Búsqueda en amplitud (Breadth-First Search, BFS):


La técnica de búsqueda en amplitud (Breadth-First Search, BFS) es una estrategia de búsqueda ciega utilizada en
inteligencia artificial y otros campos relacionados. Esta técnica se caracteriza por explorar los nodos en el árbol
de búsqueda en orden de cercanía al nodo inicial antes de pasar a los nodos de mayor profundidad. La búsqueda
esta orientada a recorrer el árbol o grafo correspondiente por niveles. Para conseguirlo se utiliza una estructura
tipo cola (FIFO) en la que se van introduciendo los nodos que son generados. A continuación, se detalla su
funcionamiento:
• Expansión de nodos: La búsqueda en amplitud comienza explorando el nodo inicial (raíz) y luego expande
todos sus nodos vecinos directos. Luego, explora los nodos vecinos de los nodos expandidos y continúa de
manera sistemática hasta que se encuentre la solución deseada o se haya explorado todo el espacio de
búsqueda.
• Cola de nodos frontera: Para llevar un seguimiento de los nodos frontera, es común utilizar una estructura
de datos conocida como cola. La cola se utiliza para almacenar los nodos frontera en el orden en que se
deben expandir. En cada iteración, se selecciona el nodo más antiguo de la cola y se expande.
Técnicas de búsqueda ciega
• Control de duplicados: Para evitar la expansión de nodos duplicados y evitar bucles infinitos, es necesario
llevar un registro de los nodos ya visitados. Se utiliza una estructura de datos conocida como conjunto (o
hash set) para almacenar los nodos visitados y verificar si un nodo ya ha sido explorado antes de ser añadido
a la cola.
• Búsqueda de la solución más corta: Una de las ventajas de la búsqueda en amplitud es que encuentra la
solución más corta en términos de número de pasos. Esto se debe a que se exploran primero los nodos más
cercanos al nodo inicial antes de avanzar hacia nodos más profundos en el árbol de búsqueda.
• Requisitos de espacio: La principal desventaja de la búsqueda en amplitud es su requerimiento de espacio
de memoria. A medida que se expanden los nodos, se deben almacenar en la cola, lo que puede llevar a un
aumento significativo en el uso de memoria, especialmente en problemas con un factor de ramificación alto
o un espacio de búsqueda extenso.

La búsqueda en amplitud es especialmente útil en problemas donde se desea encontrar la solución más corta o
cuando la profundidad de la solución es desconocida. Sin embargo, es importante considerar que su eficiencia
puede verse afectada en espacios de búsqueda grandes o con profundidades desconocidas, ya que puede
requerir una cantidad considerable de tiempo y recursos para explorar todo el espacio de búsqueda.
Técnicas de búsqueda ciega
El funcionamiento de BFS se puede simplificar de la siguiente manera:
1. Comienza por el nodo inicial y lo agrega a una cola.
2. Mientras la cola no esté vacía, realiza los siguientes pasos:
a. Toma el primer nodo de la cola.
b. Explora todos los nodos vecinos no visitados del nodo actual y los agrega a la cola.
c. Marca el nodo actual como visitado.
3. Repite los pasos anteriores hasta que la cola esté vacía.
Técnicas de búsqueda ciega
- Ventajas:
• Encuentra la solución más corta, ya que explora primero los nodos más cercanos al nodo inicial.
• Completo: Si hay una solución en el grafo, BFS encontrará esa solución.
• Encuentra la solución óptima: Si hay múltiples soluciones, BFS encontrará la solución con la menor cantidad
de pasos o arcos.
• Fácil implementación: BFS es relativamente fácil de implementar y entender, ya que solo requiere una
estructura de datos simple como una cola.

- Desventajas:
• Puede requerir mucho espacio de memoria si el factor de ramificación es alto.
• No es eficiente para espacios de búsqueda grandes o con profundidades desconocidas.
• Ineficiente en grafos con ciclos: Si hay ciclos en el grafo, BFS puede visitar nodos repetidamente y caer en
un bucle infinito.
• No es adecuado para grafos o árboles muy grandes: Debido a sus requisitos de memoria y tiempo, BFS
puede volverse ineficiente en grafos o árboles con un gran número de nodos.
Técnicas de búsqueda ciega
Ejemplos de uso de BFS:
1. Búsqueda de caminos más cortos: BFS se utiliza para
encontrar el camino más corto entre dos nodos en un grafo,
como encontrar la ruta más corta en un mapa o encontrar la
ruta de navegación óptima en un sistema de navegación.
2. Resolución de juegos: BFS se aplica en juegos como el
rompecabezas del cubo de Rubik, donde se busca encontrar la
solución más corta para resolver el rompecabezas.
3. Redes sociales: BFS se utiliza para explorar conexiones
sociales en redes como Facebook o LinkedIn, para encontrar
amigos mutuos o conexiones en común.
4. Detección de ciclos: BFS se utiliza para detectar ciclos en un
grafo, lo cual es útil en problemas como la detección de
dependencias en proyectos de programación o la detección de
bucles en algoritmos de enrutamiento.
Técnicas de búsqueda ciega
2. Búsqueda en profundidad (Depth-First Search, DFS):
La búsqueda en profundidad se centra en expandir un único camino desde la raíz; en el caso de llegar a un
"callejón sin salida" se retrocede hasta el nodo más cercano desde donde se pueda tomar una rama alternativa
para poder seguir avanzando. Para llevar a cabo este tipo de búsqueda debe utilizarse una estructura tipo pila
(LIFO) que vaya almacenando los nodos generados. Suele establecerse, por otra parte, el llamado límite de
exploración, que marca la máxima longitud que puede alcanzar cualquier camino desde la raíz durante el proceso
de búsqueda. Explora los nodos en profundidad antes de retroceder. Comienza por el nodo raíz, selecciona un
sucesor no explorado y continúa hasta llegar a un nodo sin sucesores, momento en el que retrocede y selecciona
otro sucesor. A continuación, se detalla su funcionamiento:

• Comienza por el nodo inicial y lo marca como visitado.


• Explora uno de los nodos vecinos no visitados del nodo actual.
• Si el nodo vecino no visitado tiene nodos vecinos no visitados, se repite el paso 2 para ese nodo.
• Si el nodo vecino no visitado no tiene nodos vecinos no visitados, retrocede al nodo anterior y explora otro
nodo vecino no visitado.
• Repite los pasos anteriores hasta que no haya más nodos por explorar.
Técnicas de búsqueda ciega
- Ventajas:
• Eficiente en grafos profundos: DFS es eficiente en grafos o árboles con profundidad grande, ya que
explora en profundidad antes de retroceder.
• Uso eficiente de memoria: DFS utiliza menos memoria que BFS, ya que no requiere almacenar
todos los nodos en una estructura de datos adicional.

- Desventajas:
• Puede quedar atrapado en ciclos: Si hay ciclos en el grafo, DFS puede quedar atrapado en un bucle
infinito, visitando los mismos nodos repetidamente.
• No garantiza encontrar la solución óptima: DFS puede encontrar una solución, pero no garantiza
que sea la más corta o la mejor en términos de criterios específicos.
• No es adecuado para grafos o árboles con profundidad ilimitada: DFS puede no terminar en grafos
o árboles con profundidad ilimitada o muy grande, a menos que se aplique una estrategia de límite
de profundidad.
Técnicas de búsqueda ciega
Ejemplos de uso de DFS:
1. Resolución de laberintos: DFS se utiliza para encontrar
un camino o la salida de un laberinto, explorando en
profundidad hasta encontrar una solución.
2. Búsqueda en árboles de juegos: DFS se utiliza en juegos
como el ajedrez o el go para explorar diferentes
movimientos y evaluar posibles estados del juego.
3. Análisis de redes sociales: DFS se utiliza para descubrir
comunidades o grupos de usuarios en redes sociales
mediante la exploración de sus conexiones.
4. Recorrido de árboles o grafos no ponderados: DFS se
utiliza para recorrer todos los nodos de un árbol o grafo no
ponderado, como recorrer un árbol de directorios en un
sistema de archivos.
Técnicas de búsqueda ciega
3. Búsqueda de costo uniforme (Uniform-Cost Search, UCS):
Expande los nodos según el costo acumulado hasta el nodo actual. Prioriza los nodos con menor costo, insertando
los nodos de forma ordenada teniendo en cuenta el coste desde el nodo inicial a cada uno de los nodos. Se trata
de una estrategia similar a la búsqueda en anchura: de hecho, si el coste de todas las reglas es el mismo, las dos
estrategias son equivalentes. El coste computacional en tiempo y espacio es el mismo que en la búsqueda en
anchura, pero la solución que calcula la estrategia del coste uniforme es la de menor coste al inicial, con lo que el
algoritmo es admisible. A diferencia de la búsqueda en amplitud (BFS) y la búsqueda en profundidad (DFS), que
consideran solo la topología del grafo, UCS tiene en cuenta los costos asociados a cada arco o nodo del grafo.

La búsqueda de costo uniforme no se preocupa por el número de pasos que tiene un camino, pero sí sobre su
coste total. Por lo tanto, éste se meterá en un bucle infinito si expande un nodo que tiene una acción de coste cero
que conduzca de nuevo al mismo estado. Podemos garantizar completitud si el costo de cada paso es mayor o
igual a alguna constante positiva pequeña. Esta condición es también suficiente para asegurar optimización.
Significa que el costo de un camino siempre aumenta cuando vamos por él. De esta propiedad, es fácil ver que el
algoritmo expande nodos que incrementan el coste del camino. Por lo tanto, el primer nodo objetivo seleccionado
para la expansión es la solución óptima
Técnicas de búsqueda ciega
A continuación, se detalla su funcionamiento:
• Comienza por un nodo inicial y establece su costo acumulado en cero.
• Mantén una lista prioritaria (cola de prioridad) de los nodos por explorar,
ordenados por su costo acumulado.
• Extrae el nodo con el costo acumulado más bajo de la lista prioritaria.
• Si el nodo extraído es el objetivo, se ha encontrado la ruta más económica y se
finaliza el algoritmo.
• Si el nodo no es el objetivo, expande sus nodos vecinos no visitados y actualiza sus
costos acumulados. Si un nodo ya está en la lista prioritaria, se actualiza su costo
acumulado solo si el nuevo costo es menor.
• Repite los pasos anteriores hasta que se encuentre el objetivo o la lista prioritaria
esté vacía.
Técnicas de búsqueda ciega
- Ventajas:
• Encuentra la ruta más económica: UCS garantiza encontrar la ruta con el menor costo posible en un grafo ponderado.
• Óptimo y completo: Siempre que se cumplan las condiciones mencionadas anteriormente, UCS encuentra la solución
óptima y es un algoritmo completo.
• Flexibilidad en los costos: Puede adaptarse a diferentes dominios y problemas donde los costos son un factor crítico.

- Desventajas:
• Puede ser lento si el costo acumulado hasta la solución óptima es alto. Requiere mantener una lista ordenada de
nodos frontera según el costo acumulado.
• Complejidad temporal alta: UCS puede ser computacionalmente costoso en grafos grandes o con costos altos, ya que
debe explorar todas las rutas posibles.
• Sensible a costos negativos: Si existen arcos o nodos con costos negativos en el grafo, UCS puede caer en un bucle
infinito o no encontrar la ruta óptima.
• Requiere almacenamiento adicional: Para mantener la lista prioritaria de nodos por explorar, se necesita un
almacenamiento adicional, lo que puede aumentar los requerimientos de memoria.
Técnicas de búsqueda ciega
Ejemplos de uso de UCS:
1. Aplicaciones de navegación: UCS se puede utilizar para encontrar la ruta más corta en un mapa o sistema de navegación.
Por ejemplo, si deseas encontrar la ruta de menor costo en términos de tiempo o distancia entre dos ubicaciones, UCS
consideraría los costos asociados a las carreteras y seleccionaría la ruta con el menor costo acumulado.
2. Planificación de rutas en logística: En el ámbito de la logística, UCS se puede utilizar para determinar la ruta óptima para la
entrega de bienes o servicios. Aquí, los costos pueden representar variables como el tiempo de viaje, el costo del
combustible o los peajes. UCS encontraría la ruta más económica en función de los costos asociados y ayudaría a optimizar
el proceso de entrega.
3. Búsqueda de rutas en juegos: UCS puede ser aplicado en juegos de tablero donde se busca encontrar la secuencia de
movimientos más económica para alcanzar una posición ganadora. Por ejemplo, en un juego de ajedrez, UCS podría ser
utilizado para encontrar la secuencia de movimientos que minimice la pérdida de piezas o maximice las posibilidades de
ganar.
4. Planificación de trayectorias en robótica: En el campo de la robótica, UCS se puede utilizar para planificar trayectorias
óptimas para un robot. Por ejemplo, en un entorno con obstáculos, UCS encontraría la ruta de menor costo que evita
colisiones y minimiza el consumo de energía.
5. Optimización de recursos en redes: UCS también se puede aplicar en la optimización de recursos en redes de
comunicación. Por ejemplo, al establecer conexiones en una red de computadoras, UCS puede encontrar la ruta de menor
costo en términos de ancho de banda, latencia o carga, asegurando una asignación eficiente de recursos.
Técnicas de búsqueda ciega
4. Búsqueda bidireccional (Bidirectional Search):
A diferencia de las técnicas de búsqueda unidireccionales, que exploran el espacio de búsqueda desde un
punto de partida hasta encontrar una solución, la búsqueda bidireccional realiza la exploración desde
ambos extremos simultáneamente, es decir, desde el estado inicial y desde el estado objetivo. El proceso
de búsqueda bidireccional implica la utilización de dos árboles de búsqueda independientes: uno que se
expande desde el estado inicial y otro que se expande desde el estado objetivo. Estos dos árboles se
expanden mediante la aplicación de operadores de movimiento o transiciones permitidas, generando
sucesivamente nuevos estados.

La idea principal de la búsqueda bidireccional es encontrar el punto de encuentro entre ambos árboles, lo
cual indica que se ha encontrado una solución al problema. La idea de la búsqueda bidireccional es ejecutar
dos búsquedas simultáneas: una hacia delante desde el estado inicial y la otra hacia atrás desde el objetivo,
parando cuando las dos búsquedas se encuentren en el centro. La búsqueda bidireccional se implementa
teniendo una o dos búsquedas que comprueban antes de ser expandido si cada nodo está en la frontera del
otro árbol de búsqueda si esto ocurre, se ha encontrado una solución.
Técnicas de búsqueda ciega
A medida que se expanden los árboles desde ambos extremos, se deben mantener registros de los estados
visitados en cada árbol para evitar repeticiones y ciclos. Además, se debe establecer una estrategia para
determinar cuándo se ha encontrado una solución válida. Esto puede implicar verificar si un estado en el
árbol de búsqueda inicial se encuentra en el árbol de búsqueda objetivo, o viceversa.

Una de las principales ventajas de la búsqueda bidireccional es su capacidad para reducir el espacio de
búsqueda en comparación con las técnicas unidireccionales. Al explorar desde ambos extremos, la búsqueda
bidireccional puede reducir significativamente el número de estados que deben ser examinados, lo que
puede conducir a un tiempo de ejecución más rápido. Además, esta técnica puede ser especialmente efectiva
en problemas donde el espacio de búsqueda es grande o donde no hay información heurística disponible.

La búsqueda bidireccional también presenta algunos desafíos. Requiere un conocimiento claro del estado
objetivo y un mecanismo para verificar la igualdad de los estados. Además, en algunos casos, puede ser
necesario explorar todo el espacio de búsqueda antes de encontrar una solución, lo que puede requerir un
tiempo considerable.
Técnicas de búsqueda ciega
A continuación, se detalla su funcionamiento:
1. Inicializar los conjuntos de nodos desde el estado inicial y el estado
objetivo.
2. Mientras los dos conjuntos no se hayan encontrado:
a. Expandir un nodo desde el conjunto del estado inicial.
b. Expandir un nodo desde el conjunto del estado objetivo.
c. Comprobar si los conjuntos se encuentran en algún nodo. Si es así, se ha
encontrado una solución.
3. Construir la solución combinando la ruta desde el estado inicial hasta el
nodo de encuentro y la ruta desde el nodo de encuentro hasta el estado
objetivo.
Técnicas de búsqueda ciega
- Ventajas:
• Puede ser más eficiente que la búsqueda unidireccional, ya que la búsqueda se
realiza desde dos direcciones y el espacio de búsqueda se reduce.
• Puede ahorrar tiempo y recursos al encontrar la solución más rápidamente que la
búsqueda unidireccional.

- Desventajas:
• Requiere conocer tanto el estado inicial como el estado objetivo.
• Puede ser más complejo de implementar en comparación con la búsqueda
unidireccional.
• No siempre es aplicable a todos los problemas, ya que algunos problemas pueden
requerir un enfoque unidireccional más adecuado.
Técnicas de búsqueda ciega
Ejemplos de uso de BS:
La búsqueda bidireccional se utiliza en una variedad de problemas, como la
planificación de rutas, la resolución de laberintos, la búsqueda de palabras clave en
grafos y muchos otros. Al aplicar esta técnica, es importante ajustar los criterios de
búsqueda y la estructura de datos utilizada para optimizar la eficiencia y la precisión del
algoritmo.

Supongamos que queremos encontrar la ruta más corta entre dos ciudades en un
mapa. Podemos utilizar la Búsqueda bidireccional para buscar desde la ciudad de
origen y desde la ciudad de destino simultáneamente. Expandimos los nodos en ambas
direcciones y detenemos la búsqueda cuando se encuentran en un nodo intermedio.
Luego, combinamos las rutas desde la ciudad de origen hasta el nodo de encuentro y
desde el nodo de encuentro hasta la ciudad de destino para obtener la ruta completa.
Técnicas de búsqueda ciega
5. Búsqueda de profundidad limitada (Depth-Limited Search, DLS):
La Búsqueda de Profundidad Limitada es similar a la Búsqueda en Profundidad (DFS), pero se establece un límite de
profundidad máxima para evitar la expansión infinita en grafos o árboles con caminos muy largos. La búsqueda se
detiene cuando alcanza la profundidad límite o cuando se encuentra el objetivo.

Se puede aliviar el problema de árboles ilimitados aplicando la búsqueda primero en profundidad con un límite de
profundidad l predeterminado. Es decir, los nodos a profundidad l se tratan como si no tuvieran ningún sucesor. El
límite de profundidad resuelve el problema del camino infinito. Lamentablemente, también introduce una fuente
adicional de incompletitud si escogemos l<d, es decir, el objetivo está fuera del límite de profundidad

La búsqueda de profundidad limitada puede implementarse con una simple modificación del algoritmo general de
búsqueda en árboles o del algoritmo recursivo de búsqueda primero en profundidad.

Nótese que la búsqueda de profundidad limitada puede terminar con dos clases de fracaso: el valor de fracaso
estándar indicando que no hay ninguna solución; el valor de corte indicando que no hay solución dentro del límite de
profundidad.
Técnicas de búsqueda ciega
A continuación, se detalla su funcionamiento:
1. Se establece un límite de profundidad máxima para la búsqueda.
2. Comenzando desde el nodo inicial, se explora recursivamente cada
sucesor hasta alcanzar la profundidad límite o el objetivo.
3. Si se alcanza la profundidad límite sin encontrar el objetivo, se
retrocede y se explora otro camino.
4. Se repiten los pasos 2 y 3 hasta encontrar el objetivo o agotar
todas las posibilidades dentro de la profundidad límite establecida.
Técnicas de búsqueda ciega
- Ventajas:
• Evita la exploración infinita en problemas con ciclos o espacios de búsqueda infinitos. Puede ser útil
cuando se conoce una profundidad máxima deseada.
• La Búsqueda de Profundidad Limitada es más eficiente en términos de espacio de memoria que la
Búsqueda en Amplitud (BFS) debido a que solo almacena los nodos en el camino actual.
• Es útil cuando se tiene conocimiento previo de que el objetivo se encuentra a una profundidad limitada y
no es necesario explorar caminos muy largos.

- Desventajas:
• Puede omitir soluciones si están más allá de la profundidad límite especificada. No garantiza encontrar la
solución óptima.
• La Búsqueda de Profundidad Limitada puede caer en un camino infinito si la profundidad límite no es lo
suficientemente grande y el objetivo está más allá de esa profundidad.
• Puede no encontrar la solución más óptima si el objetivo se encuentra a una profundidad mayor que la
establecida como límite.
Técnicas de búsqueda ciega
Ejemplos de uso de DLS:
Supongamos que tenemos un juego de laberinto y queremos encontrar un camino desde el punto de inicio hasta un objetivo dentro de una profundidad
máxima de 3 pasos. Profundidad límite establecida: 3 Nodo inicial: A Objetivo: G

A
/|
BCD
/\|
EFG

1. Comenzamos desde el nodo A.


2. Exploramos el sucesor B y alcanzamos la profundidad 1.
3. Exploramos el sucesor E y alcanzamos la profundidad 2. No es el objetivo.
4. Retrocedemos al nodo B y exploramos el sucesor F, alcanzando la profundidad 2. No es el objetivo.
5. Retrocedemos al nodo B y exploramos el sucesor C, alcanzando la profundidad 1. No es el objetivo.
6. Retrocedemos al nodo A y exploramos el sucesor D, alcanzando la profundidad 1. No es el objetivo.
7. Retrocedemos al nodo A y exploramos el sucesor C, alcanzando la profundidad 2. No es el objetivo.
8. Retrocedemos al nodo A y exploramos el sucesor D, alcanzando la profundidad 2. No es el objetivo.

En este ejemplo, la búsqueda se detiene después de alcanzar la profundidad límite de 3 pasos y no encuentra el objetivo G. Si aumentamos la profundidad
límite, podríamos encontrar el objetivo, pero también aumentaría el tiempo y el espacio requerido.
Técnicas de búsqueda ciega
A continuación se presenta una tabla comparando los criterios de búsqueda ciega en base a los parámetros más
representativos:
1. Completitud: Indica si la estrategia garantiza encontrar una solución si existe.
2. Optimalidad: Indica si la estrategia garantiza encontrar la solución óptima en términos de la calidad de la
solución (por ejemplo, el menor costo).
3. Tiempo de ejecución: Da una idea de la complejidad temporal de la estrategia.
4. Espacio de memoria: Da una idea de la cantidad de memoria requerida por la estrategia.
5. Utilidad en grafos con ciclos: Indica si la estrategia puede manejar grafos que contienen ciclos sin quedar
atrapada en un bucle infinito.
6. Eficiencia en grafos grandes: Evalúa la capacidad de la estrategia para manejar eficientemente grafos grandes
con muchos nodos y aristas.
7. Manejo de estados repetidos: Indica si la estrategia evita la expansión de estados repetidos para evitar la
redundancia.
8. Escalabilidad: Indica cómo la estrategia se desempeña en términos de tiempo y memoria a medida que
aumenta el tamaño del espacio de búsqueda.
9. Facilidad de implementación: Evalúa la complejidad y el esfuerzo requerido para implementar la estrategia en
Técnicas de búsqueda ciega
Estrategia de Búsqueda Completa Óptima Tiempo de Espacio de Utilidad en grafos Eficiencia en grafos Manejo de estados Facilacidad de Escalabilidad
ejecución memoria con ciclos grandes repetidos Implementación

Búsqueda en amplitud Sí Sí Exponencial Exponencial No Baja Sí Fácil Baja

Búsqueda en profundidad No No Exponencial Lineal No Alta No Fácil Alta

Búsqueda de costo uniforme Sí Sí Exponencial Exponencial Sí Media Sí Media Media

Búsqueda bidireccional Sí Sí Exponencial Exponencial No Media Sí Media Media


Búsqueda limitada en profundidad No No Exponencial Lineal No Media No Fácil Alta
Técnicas de búsqueda heurística
El problema de utilizar una estrategia de búsqueda no informada, o búsqueda a
ciegas, es que al realizar una búsqueda sistemática sin ningún tipo de
información que le permita discernir las regiones más prometedoras de
aquellas que no, es que el tiempo necesario para encontrar una solución puede
llegar a ser un problema adicional.

La alternativa es disponer de algún mecanismo que permita dirigir la búsqueda


hacia las zonas más prometedoras, de modo que se pueda llegar a una solución
sin necesidad de visitar tantos nodos como los que en general requiere una
estrategia de búsqueda a ciegas. En el ámbito de la IA, a estos mecanismos se
les denomina de forma genérica heurísticos o heurísticas.

La palabra heurístico procede de la palabra griega heuriskein, que significa


descubrir, al igual que la palabra eureka que pronunció Arquímedes en su baño
justo después de descubrir el famoso principio que lleva su nombre
Técnicas de búsqueda heurística
Los heurísticos son criterios, reglas o métodos que ayudan a decidir cuál es la
mejor alternativa entre varias posibles o disponibles para alcanzar un
determinado objetivo. Para ello se debe disponer de información, o mejor aun, de
conocimiento sobre el problema que se intenta resolver.

Este conocimiento se puede obtener a partir de cualquier pista, intuición o


experiencia que se tenga sobre el dominio del problema. En el contexto de los
sistemas de búsqueda, los heurísticos se suelen utilizar para decidir cuál de los
nodos candidatos a ser expandidos es más prometedor, o bien en qué orden se
deben aplicar las reglas a un nodo para generar sucesores, o incluso para decidir
si un nodo representa una situación sin salida aun teniendo sucesores válidos.
Técnicas de búsqueda heurística
Aunque en un principio se pensó que toda tarea de búsqueda podía ser completada por
un computador sin más que realizar una exploración de todos los caminos que llevan a
una solución y una posterior selección del mejor de tales caminos, más tarde se
comprobó que, aunque esta suposición era cierta, no era eficaz debido a la explosión
combinatoria que aparece en este tipo de problemas.

El conocimiento dependiente del dominio puede ayudar a dirigir el proceso de búsqueda


de manera que sean exploradas en primer lugar aquellas trayectorias que parecen más
prometedoras a la hora de conducir a un estado solución; la búsqueda inspirada en el
razonamiento anterior se denomina heurística. Los métodos heurísticos no garantizan
hallar la solución óptima a un problema, pero permiten, de una manera más eficiente
desde el punto de vista computacional, aproximarse a tal solución.
Técnicas de búsqueda heurística
Lo que se espera del uso de conocimiento en la búsqueda es que el
número de nodos examinados para llegar a una solución se reduzca
notablemente con respecto a una búsqueda sin conocimiento; pero
el uso de conocimiento introduce, como es lógico, un nuevo factor de
coste en la búsqueda, ya que se deben evaluar las alternativas en
función del conocimiento disponible.

En consecuencia, hay que llegar a una situación de compromiso, para


explotar el conocimiento de forma que se optimice el coste total de la
búsqueda. Si se explota de forma exhaustiva el conocimiento, se
puede lograr una gran reducción del número de nodos a visitar para
alcanzar una solución, pero el coste de gestión del conocimiento
puede ser demasiado elevado, lo que incrementa el coste total de la
búsqueda pudiendo éste llegar a ser excesivo. En el caso contrario, si
se utiliza poco, o ningún conocimiento, se puede tener un coste muy
elevado debido a la aplicación de las reglas
Técnicas de búsqueda heurística
El modo más común de utilizar la información heurística es introducir una función heurística de
evaluación. Esta función se define sobre un conjunto de nodos del espacio de estados y obtiene
valores numéricos. El valor de la función heurística de evaluación se interpreta como un
prospecto de apertura del nodo, o a veces, como la probabilidad de su permanencia en la ruta de
solución. Usualmente el convenio es que el menor valor de la función corresponde a un nodo más
prospectivo, y los nodos se ordenan según el orden de aumento de los valores de la función
heurística de evaluación.

La secuencia de los pasos del algoritmo de la búsqueda heurística (ordenada) se parece a la


secuencia de los pasos de los algoritmos de la búsqueda ciega; la diferencia consiste en el uso de
la función heurística de evaluación. Después de la construcción de un nuevo estado se hace su
evaluación, es decir se calcula el valor de dicha función. Las listas de los nodos abiertos y cerrados
contienen tanto los nodos, como sus evaluaciones que se usan para ordenar la búsqueda.
Técnicas de búsqueda heurística
Dado que los heurísticos se basan en el uso de conocimiento a veces impreciso o
incierto, es natural que en muchas ocasiones fallen en la predicción de la mejor
alternativa. Un buen heurístico es aquel capaz de tomar una buena decisión, no
necesariamente la mejor, en un alto porcentaje de ocasiones. En consecuencia, el
resultado de un buen heurístico es que el tiempo medio para llegar a una solución
mejore notablemente, aunque en el peor de los casos el tiempo pueda ser igual que el
de una búsqueda a ciegas.

El término heurístico se utiliza muchas veces en contraposición con el término


algorítmico, para hacer referencia a procedimientos que no garantizan la calidad de la
solución, ni en ocasiones la completitud; sin embargo, también hay algoritmos exactos
en los que la búsqueda se guía mediante heurísticos.
Técnicas de búsqueda heurística

La principal diferencia de este tipo de búsqueda respecto a la que no


emplean información del dominio, es que ahora a cada nodo se le va a
poder asociar un valor que dará idea de lo cerca que se encuentra de
un nodo meta. Evidentemente, dicho valor no será más que una
estimación de la distancia real a la meta.

La incorporación de este tipo de información, normalmente a través de


las llamadas funciones de evaluación heurística, permitirá guiar la
búsqueda hacia aquellos caminos que se supone son más
prometedores.
Técnicas de búsqueda heurística
A continuación, se presentan algunas de las técnicas de búsqueda heurística más comunes:
1. Búsqueda heurística greedy (ávida):
La técnica de búsqueda heurística greedy, también conocida como búsqueda voraz, es un
enfoque de búsqueda que se guía por una heurística o función de evaluación para tomar
decisiones en cada paso. En cada estado del problema, el algoritmo selecciona la acción que
parece ser la mejor en función de la heurística, sin considerar las consecuencias a largo plazo. La
búsqueda greedy se centra en la maximización inmediata de una función objetivo local sin
considerar el panorama general.

La búsqueda greedy selecciona el nodo sucesor más prometedor en función de la heurística, sin
tener en cuenta los costos acumulados hasta el momento. Se enfoca en avanzar rápidamente
hacia los estados que parecen más prometedores en términos de alcanzar el objetivo final.
Técnicas de búsqueda heurística
Características principales de la búsqueda heurística greedy:
1. Selección de acción: En cada estado, se selecciona la acción que parece ser la mejor
según la heurística, sin considerar las consecuencias futuras.
2. No retroceso: No se retrocede en la búsqueda para corregir errores o considerar otras
alternativas tomadas anteriormente.
3. Orientada a resultados locales: El enfoque se centra en la maximización inmediata de
una función objetivo local sin considerar las soluciones globales o a largo plazo.
4. Eficiencia en tiempo: Debido a su enfoque directo y local, la búsqueda greedy puede ser
rápida y eficiente en términos de tiempo de ejecución.
5. Simplificación del problema: Al no considerar todas las posibles soluciones, la búsqueda
greedy puede simplificar el problema al enfocarse en las opciones más prometedoras
según la heurística.
Técnicas de búsqueda heurística
Funcionamiento de la búsqueda heurística greedy:
1. Inicio: Se establece un estado inicial.
2. Evaluación: Se utiliza la función heurística para evaluar las posibles acciones o
movimientos disponibles desde el estado actual.
3. Selección: Se selecciona la opción con la mejor estimación heurística y se realiza
la acción correspondiente.
4. Actualización: Se actualiza el estado actual con el resultado de la acción tomada.
5. Verificación de objetivo: Se verifica si se ha alcanzado el objetivo deseado. Si es
así, se termina la búsqueda. En caso contrario, se repiten los pasos 2 a 5 hasta
encontrar la solución o alcanzar un criterio de terminación.
Técnicas de búsqueda heurística
Ventajas de la búsqueda heurística greedy:
1. Eficiencia: La búsqueda greedy es generalmente rápida debido a su enfoque
directo y local.
2. Bajo requisito de memoria: No se requiere mucho almacenamiento adicional para
realizar la búsqueda greedy.
3. Simplicidad: La búsqueda greedy es relativamente fácil de implementar y entender.
4. Adecuado para problemas con soluciones subóptimas aceptables: En casos donde
una solución subóptima es suficiente, la búsqueda greedy puede proporcionar
resultados rápidos.
5. Útil como heurística inicial: La búsqueda greedy puede usarse como punto de
partida para algoritmos más sofisticados.
Técnicas de búsqueda heurística
Desventajas de la búsqueda heurística greedy:
1. No garantiza la solución óptima: Debido a su enfoque local, la búsqueda greedy puede quedar
atrapada en máximos locales y no encontrar la solución óptima.
2. Sensibilidad a la heurística: La calidad de la solución depende en gran medida de la heurística
utilizada, y una heurística inadecuada puede llevar a resultados subóptimos.
3. Falta de exploración: La búsqueda greedy no considera exhaustivamente todas las opciones y
puede pasar por alto soluciones potencialmente mejores.
4. No apto para problemas con restricciones complejas: La falta de retroceso y la falta de
consideración de las consecuencias futuras hacen que la búsqueda greedy no sea adecuada para
problemas con restricciones complicadas o dependencias entre acciones.
5. Sensibilidad a la configuración inicial: La búsqueda greedy puede verse influenciada por la
elección del estado inicial y puede dar lugar a soluciones diferentes dependiendo de esta
elección.
Técnicas de búsqueda heurística
Ejemplos de aplicación de la búsqueda heurística greedy:
1. Problema del viajante de comercio: La búsqueda greedy puede utilizarse para encontrar una solución
aproximada al problema, seleccionando en cada paso la ciudad más cercana que aún no ha sido visitada.
2. Enrutamiento de vehículos: Puede aplicarse para encontrar una ruta aproximada y eficiente entre varios
puntos, seleccionando en cada paso el siguiente destino más cercano.
3. Asignación de recursos: Puede utilizarse para asignar recursos limitados a tareas en función de su importancia
o costo, seleccionando en cada paso la tarea más prioritaria.
4. Problemas de planificación: La búsqueda greedy puede utilizarse para generar planes aproximados,
seleccionando en cada paso la acción más prometedora según una función de evaluación heurística.
5. Selección de elementos en un conjunto: Puede aplicarse para seleccionar un subconjunto de elementos con un
objetivo específico, eligiendo en cada paso el elemento que más contribuye a la optimización del objetivo.

Es importante tener en cuenta que la búsqueda greedy puede proporcionar soluciones rápidas en muchos casos,
pero su falta de exhaustividad y su tendencia a quedar atrapada en óptimos locales pueden llevar a soluciones
subóptimas
Técnicas de búsqueda heurística

2. Búsqueda heurística A* (A-star):


La técnica de búsqueda heurística A* (A-star) es un algoritmo de búsqueda
informada que combina la búsqueda por costo uniforme y una heurística
para encontrar la ruta más óptima entre un estado inicial y un estado
objetivo en un grafo o espacio de estados. A* utiliza una función de
evaluación que combina el costo acumulado de llegar al estado actual y una
estimación heurística del costo restante para llegar al estado objetivo.

A* procura conseguir buenas soluciones (óptimas), al mismo tiempo que


brinda eficiencia (reduciendo el árbol de búsqueda) a lo largo del proceso
Técnicas de búsqueda heurística
Funcionamiento de A*:
1. Inicio: Se establece un estado inicial.
2. Evaluación inicial: Se calcula el valor de la función de evaluación para el estado inicial utilizando la función
heurística.
3. Bucle principal:
a. Selección: Se selecciona el estado con el menor valor de la función de evaluación.
b. Verificación del objetivo: Si el estado seleccionado es el estado objetivo, se ha encontrado la solución
óptima y se termina la búsqueda.
c. Generación de sucesores: Se generan los sucesores posibles a partir del estado seleccionado.
d. Evaluación de los sucesores: Se calcula el valor de la función de evaluación para cada sucesor utilizando la
función heurística y el costo acumulado hasta el estado actual.
e. Actualización de la lista de estados abiertos: Se actualiza la lista de estados abiertos con los sucesores
evaluados.
4. Si no se encuentra la solución y no quedan estados abiertos, se concluye que no hay solución.
Técnicas de búsqueda heurística
Ventajas de A*:
1. Optimalidad: A* garantiza encontrar la solución óptima si la heurística utilizada es
admisible y consistente.
2. Eficiencia: Utiliza la información heurística para guiar la búsqueda hacia soluciones
más prometedoras, lo que puede reducir significativamente el tiempo de búsqueda.
3. Adaptable: Se puede adaptar a diferentes problemas mediante la elección de
heurísticas apropiadas para cada dominio.
4. Compleción: Si existe una solución, A* siempre encontrará una solución si se
permite suficiente tiempo de ejecución.
5. Flexibilidad: Permite ajustar el equilibrio entre la heurística y el costo acumulado
mediante la elección de una función de evaluación adecuada.
Técnicas de búsqueda heurística
Desventajas de A*:
1. Complejidad de la heurística: La calidad de la solución depende en gran medida de la
heurística utilizada. Obtener una buena heurística puede ser difícil y costoso
computacionalmente.
2. Espacio de memoria: A* puede requerir una gran cantidad de memoria para almacenar la lista
de estados abiertos y cerrados, especialmente en problemas con un espacio de estados grande.
3. Tiempo de ejecución: En algunos casos, A* puede requerir un tiempo de ejecución
considerablemente mayor en comparación con otras técnicas de búsqueda no informadas.
4. Sensibilidad a la calidad de la heurística: A* puede ser sensible a las inadmisibilidades de la
heurística utilizada, lo que puede llevar a soluciones subóptimas o a un aumento en el tiempo
de ejecución.
5. Búsqueda guiada: A* puede quedar atrapado en óptimos locales si la heurística no
proporciona una estimación precisa del costo restante.
Técnicas de búsqueda heurística
Ejemplos de aplicación de A*:
1. Resolución de laberintos: A* puede utilizarse para encontrar la ruta más corta desde un punto de inicio hasta
una salida en un laberinto, utilizando una función heurística que estime la distancia restante al objetivo.
2. Planificación de rutas en mapas: A* puede utilizarse para planificar rutas eficientes entre dos ubicaciones en
un mapa, considerando el tiempo de viaje estimado y posibles obstáculos en el camino.
3. Juegos de estrategia: A* puede aplicarse para tomar decisiones en juegos de estrategia donde se necesita
encontrar la mejor jugada, utilizando una función heurística que evalúe la posición actual y las posibles jugadas.
4. Sistemas de navegación: A* puede utilizarse en sistemas de navegación para encontrar la ruta más rápida o
eficiente entre dos ubicaciones, considerando el tráfico y las restricciones viales.
5. Planificación de trayectorias de robots: A* puede utilizarse para planificar trayectorias óptimas para robots en
entornos complejos, teniendo en cuenta obstáculos y restricciones de movimiento.

Es importante tener en cuenta que la eficacia de A* depende en gran medida de la elección adecuada de la
función heurística y de cómo se aplique al problema específico.
Técnicas de búsqueda heurística
3. Búsqueda heurística de escalada (Hill Climbing):
La técnica de búsqueda heurística de escalada, también conocida como Hill Climbing, es un
algoritmo de búsqueda local que busca mejorar iterativamente una solución inicial
moviéndose hacia estados vecinos que parecen prometedores según una función
heurística. Su objetivo es encontrar un máximo local (en el caso de maximización) o un
mínimo local (en el caso de minimización) en un espacio de búsqueda.

La búsqueda de escalada se basa en seleccionar el nodo sucesor que parece más


prometedor en términos de mejorar el estado actual. Continúa moviéndose hacia arriba
en la dirección ascendente hasta alcanzar un máximo local. No se garantiza que al final se
encuentre la solución óptima, pero a menudo puede encontrar buenas soluciones
rápidamente.
Técnicas de búsqueda heurística
Características más importantes de Hill Climbing:
1. Búsqueda local: Hill Climbing se enfoca en explorar el vecindario de una solución actual en
lugar de buscar en todo el espacio de búsqueda.
2. Mejora iterativa: El algoritmo continúa mejorando la solución actual moviéndose hacia estados
vecinos que parecen mejores según la función heurística, hasta que no se pueda mejorar más.
3. Heurística simple: Hill Climbing utiliza una función heurística que estima la calidad de una
solución sin considerar información sobre soluciones anteriores o futuras.
4. Escalada determinista: El algoritmo siempre se mueve hacia el mejor vecino disponible en cada
iteración, sin explorar otras opciones, lo que puede llevar a quedar atrapado en óptimos locales.
5. Eficiencia: Hill Climbing es computacionalmente eficiente ya que solo necesita evaluar y
comparar soluciones vecinas en cada iteración.
Técnicas de búsqueda heurística
Funcionamiento de Hill Climbing:
1. Inicio: Se selecciona una solución inicial de manera aleatoria o determinista.
2. Evaluación: Se evalúa la calidad de la solución inicial utilizando la función heurística.
3. Bucle principal:
a. Generación de vecinos: Se generan los estados vecinos de la solución actual realizando
pequeños cambios o modificaciones.
b. Evaluación de vecinos: Se evalúa la calidad de cada vecino utilizando la función heurística.
c. Selección del mejor vecino: Se selecciona el vecino con la mejor calidad según la función
heurística.
d. Comparación con la solución actual: Si el mejor vecino es mejor que la solución actual, se
actualiza la solución actual y se repite el bucle.
4. Si no se encuentra una solución mejor o se alcanza un máximo local, se detiene la búsqueda y se
devuelve la mejor solución encontrada.
Técnicas de búsqueda heurística
Ventajas de Hill Climbing:
1. Simplicidad: Hill Climbing es fácil de implementar y entender, ya que no requiere
estructuras de datos complejas ni configuraciones complicadas.
2. Eficiencia: El algoritmo es rápido y eficiente, ya que solo evalúa y compara
soluciones vecinas en cada iteración.
3. Memoria: Hill Climbing no requiere almacenar una gran cantidad de información,
lo que lo hace adecuado para problemas con restricciones de memoria.
4. Escalabilidad: Es adecuado para problemas con espacios de búsqueda grandes, ya
que solo se centra en un vecindario local en lugar de explorar todo el espacio.
5. Aplicabilidad: Hill Climbing se puede aplicar a una amplia gama de problemas de
optimización y búsqueda local.
Técnicas de búsqueda heurística
Desventajas de Hill Climbing:
1. Óptimos locales: Hill Climbing puede quedar atrapado en óptimos locales, lo que significa que
no puede encontrar la solución global óptima si existe.
2. Sensibilidad a la función heurística: El rendimiento de Hill Climbing depende en gran medida de
la calidad de la función heurística utilizada. Una función heurística deficiente puede conducir a
soluciones subóptimas.
3. Exploración limitada: Hill Climbing se centra en el vecindario local y no considera soluciones más
lejanas que podrían ser mejores. Puede pasar por alto soluciones prometedoras en áreas no
exploradas.
4. Dependencia de la solución inicial: La calidad de la solución inicial puede influir en el resultado
final. Si la solución inicial es pobre, Hill Climbing puede converger hacia un subóptimo.
5. Falta de retroceso: Hill Climbing no tiene capacidad para retroceder o deshacer pasos anteriores
en caso de encontrar un vecino que empeore la solución actual.
Técnicas de búsqueda heurística
Ejemplos de aplicación de Hill Climbing:
1. Optimización de rutas: Hill Climbing se puede utilizar para encontrar la ruta más corta o eficiente entre
dos ubicaciones en un mapa, considerando factores como el tiempo de viaje o el consumo de combustible.
2. Ajuste de parámetros: En el aprendizaje automático, Hill Climbing se puede aplicar para ajustar los
parámetros de un modelo con el fin de maximizar el rendimiento o minimizar el error.
3. Diseño de circuitos: Hill Climbing puede utilizarse en el diseño de circuitos electrónicos para encontrar
configuraciones óptimas que cumplan ciertas restricciones y objetivos de rendimiento.
4. Planificación de horarios: Hill Climbing puede utilizarse para generar horarios óptimos en instituciones
educativas, teniendo en cuenta los recursos disponibles y las preferencias de los estudiantes.
5. Diseño de redes: En el diseño de redes de comunicación, Hill Climbing puede utilizarse para optimizar la
ubicación de los nodos y las conexiones para minimizar la latencia o maximizar el rendimiento.
Técnicas de búsqueda heurística
4. Búsqueda heurística de haz (Beam Search):
La técnica de búsqueda heurística de haz (Beam Search) es un algoritmo de búsqueda que
combina elementos de búsqueda en amplitud y búsqueda heurística. Su objetivo es
encontrar una solución óptima o de alta calidad en un espacio de búsqueda, utilizando una
estrategia de selección basada en la evaluación heurística de los nodos.

Beam search explora un gráfico al expandir los nodos más prometedores en un conjunto
limitado. Beam search es una optimización de la mejor búsqueda primero que reduce sus
requisitos de memoria. La búsqueda del mejor primero es una búsqueda gráfica que
ordena todas las soluciones parciales (estados) de acuerdo con alguna heurística, pero en
la búsqueda de haces, solo se mantienen como candidatos un número predeterminado de
las mejores soluciones parciales. Por lo tanto, es un algoritmo codicioso.
Técnicas de búsqueda heurística
Características más importantes de Beam Search:
1. Búsqueda limitada: Beam Search mantiene un número fijo de mejores nodos (llamado haz) en
cada nivel de la búsqueda y expande solo esos nodos en lugar de expandir todos los nodos
posibles.
2. Heurística y búsqueda en amplitud: Combina la información heurística para guiar la búsqueda y
la búsqueda en amplitud para explorar múltiples caminos simultáneamente.
3. Exploración selectiva: Selecciona los nodos más prometedores según la función heurística y los
expande, descartando los nodos menos prometedores.
4. Paralelismo: Beam Search permite realizar expansiones simultáneas de varios nodos, lo que
puede aumentar la eficiencia computacional.
5. Control del ancho de búsqueda: El tamaño del haz determina la cantidad de nodos que se
expanden en cada nivel de la búsqueda, lo que afecta la calidad de las soluciones encontradas y la
eficiencia del algoritmo.
Técnicas de búsqueda heurística
Funcionamiento de Beam Search:
1. Inicio: Se selecciona un conjunto de nodos iniciales (el haz) de manera aleatoria o determinista.
2. Evaluación heurística: Se evalúa la calidad de cada nodo en el haz utilizando una función heurística que
estima la bondad de la solución.
3. Bucle principal:
a. Generación de sucesores: Se generan los sucesores de los nodos en el haz, expandiendo la búsqueda hacia
los estados vecinos.
b. Evaluación heurística de los sucesores: Se evalúa la calidad de los sucesores utilizando la función heurística.
c. Selección del nuevo haz: Se selecciona un nuevo haz de nodos de alta calidad basado en una métrica, como
la puntuación heurística.
d. Verificación de la condición de finalización: Si se encuentra una solución óptima o se alcanza un criterio de
finalización predefinido, se detiene la búsqueda.
4. Si no se encuentra una solución satisfactoria, se repite el bucle principal hasta que se cumpla la condición de
finalización.
Técnicas de búsqueda heurística
Ventajas de Beam Search:
1. Eficiencia: Beam Search es más eficiente que la búsqueda en amplitud completa, ya que
limita el número de nodos expandidos en cada nivel.
2. Exploración más amplia: A diferencia de la búsqueda en profundidad, Beam Search
explora múltiples caminos simultáneamente, lo que aumenta la probabilidad de encontrar
soluciones óptimas o de alta calidad.
3. Paralelismo: La expansión simultánea de varios nodos en cada nivel permite un
procesamiento paralelo y puede acelerar la búsqueda en espacios de búsqueda grandes.
4. Control del ancho de búsqueda: El tamaño del haz permite ajustar el equilibrio entre la
calidad de la solución y la eficiencia del algoritmo.
5. Adaptable: Beam Search se puede combinar con otras técnicas, como la retroceso o la
profundización iterativa, para mejorar la calidad de la solución encontrada.
Técnicas de búsqueda heurística
Desventajas de Beam Search:
1. Posible pérdida de soluciones óptimas: Si el tamaño del haz es demasiado pequeño,
Beam Search puede perder soluciones óptimas que no se encuentran en el haz inicial.
2. Estancamiento en óptimos locales: La búsqueda puede quedar atrapada en óptimos
locales si los nodos seleccionados inicialmente no son lo suficientemente buenos.
3. Sensibilidad al tamaño del haz: El rendimiento de Beam Search puede variar
significativamente según el tamaño del haz elegido.
4. Dependencia de la función heurística: La calidad de la solución encontrada depende
en gran medida de la precisión de la función heurística utilizada.
5. No garantiza la optimalidad: A diferencia de algunos algoritmos de búsqueda
informada, Beam Search no garantiza encontrar la solución óptima en todos los casos.
Técnicas de búsqueda heurística
Ejemplos de aplicación de Beam Search:
1. Resolución de problemas de planificación: Beam Search se utiliza para encontrar planes de
acción óptimos en sistemas de planificación automatizados.
2. Optimización de rutas: Se aplica Beam Search para encontrar la ruta más corta o eficiente
entre dos ubicaciones en problemas de logística o en sistemas de navegación.
3. Diseño de circuitos: Beam Search se utiliza para encontrar diseños óptimos de circuitos
electrónicos, teniendo en cuenta restricciones de rendimiento y recursos disponibles.
4. Selección de características: En el aprendizaje automático, Beam Search puede utilizarse para
seleccionar características relevantes y reducir la dimensionalidad de los conjuntos de datos.
5. Resolución de problemas de asignación: Beam Search se aplica para asignar recursos o tareas
de manera óptima en problemas de asignación, como la asignación de personal en proyectos.
Técnicas de búsqueda heurística
5. Búsqueda heurística de recocido simulado (Simulated Annealing):
La técnica de búsqueda heurística de recocido simulado (Simulated Annealing) es un algoritmo
de optimización que se basa en el proceso físico de recocido utilizado para mejorar la calidad de
un material. Esta técnica se utiliza para resolver problemas de optimización combinatoria en los
que se busca encontrar la mejor solución en un espacio de búsqueda grande y complejo.

Simulated Annealing es una metaheurística que se puede utilizar para encontrar buenas
soluciones a los problemas de optimización. El recocido simulado comienza en una solución
aleatoria y luego se mueve iterativamente a soluciones vecinas. La probabilidad de pasar a una
peor solución disminuye a medida que avanza el algoritmo. No se garantiza que el recocido
simulado encuentre la solución óptima, pero a menudo puede encontrar buenas soluciones a
problemas que son difíciles de resolver para otros algoritmos.
Técnicas de búsqueda heurística
Características más importantes de Simulated Annealing:
1. Exploración global: Simulated Annealing permite la exploración de soluciones en todo el espacio
de búsqueda, evitando quedar atrapado en óptimos locales subóptimos.
2. Heurística y aceptación probabilística: Utiliza una función de evaluación heurística para evaluar la
calidad de las soluciones y una función de aceptación probabilística que permite aceptar soluciones
peores en busca de mejores soluciones.
3. Búsqueda estocástica: El algoritmo realiza cambios aleatorios en las soluciones actuales,
permitiendo explorar diferentes regiones del espacio de búsqueda.
4. Control de temperatura: El algoritmo utiliza un parámetro de temperatura que se reduce
gradualmente durante la búsqueda, lo que permite una mayor exploración en las primeras etapas y
una mayor explotación en las etapas finales.
5. Salidas múltiples: Simulated Annealing puede producir varias soluciones aceptables en lugar de
solo una solución óptima, lo que es útil en problemas donde se requiere diversidad en las soluciones.
Técnicas de búsqueda heurística
Funcionamiento de Simulated Annealing:
1. Inicialización: Se selecciona una solución inicial de manera aleatoria o determinista.
2. Iteración principal:
a. Generación de una solución vecina: Se genera una solución vecina modificando aleatoriamente la solución
actual.
b. Evaluación de la solución vecina: Se calcula el valor de evaluación (energía) de la solución vecina utilizando
una función heurística.
c. Aceptación probabilística: Se decide si se acepta la solución vecina o se mantiene la solución actual en
función de la diferencia entre las energías y la temperatura actual.
d. Actualización de la temperatura: Se reduce gradualmente la temperatura según una función de
enfriamiento predefinida.
e. Verificación de la condición de finalización: Si se alcanza un criterio de parada predefinido, se detiene la
búsqueda y se devuelve la mejor solución encontrada.
3. Si no se cumple la condición de finalización, se repite el bucle principal hasta alcanzar el criterio de parada.
Técnicas de búsqueda heurística
Ventajas de Simulated Annealing:
1. Exploración global: Simulated Annealing puede escapar de óptimos locales y
explorar diferentes regiones del espacio de búsqueda.
2. Flexibilidad en el espacio de búsqueda: Puede manejar espacios de búsqueda
grandes y complejos con múltiples óptimos.
3. Tolerancia a soluciones peores: La aceptación probabilística permite aceptar
soluciones peores, lo que evita quedar atrapado en soluciones subóptimas.
4. Adaptabilidad: Puede adaptarse a diferentes problemas y se puede ajustar
mediante la selección adecuada de parámetros.
5. Posibilidad de múltiples soluciones: Simulated Annealing puede generar
múltiples soluciones aceptables, lo que brinda flexibilidad al usuario.
Técnicas de búsqueda heurística
Desventajas de Simulated Annealing:
1. Sensible a la configuración de parámetros: El rendimiento del algoritmo depende de la
elección adecuada de la temperatura inicial, la función de enfriamiento y otros
parámetros.
2. Requiere tiempo de ejecución: La búsqueda puede ser lenta, especialmente en
problemas con espacios de búsqueda grandes.
3. No garantiza la optimalidad: Aunque puede encontrar soluciones de alta calidad, no
garantiza la solución óptima en todos los casos.
4. Dificultad para determinar la función de enfriamiento: Encontrar una función de
enfriamiento adecuada puede ser un desafío y depende del problema específico.
5. Posible convergencia prematura: Si el proceso de enfriamiento se realiza demasiado
rápido, puede llevar a una convergencia prematura hacia una solución subóptima.
Técnicas de búsqueda heurística
Ejemplos de aplicación de Simulated Annealing:
1. Optimización de rutas de transporte: Se utiliza para encontrar la ruta más
eficiente para entregar productos a diferentes destinos.
2. Diseño de circuitos: Se aplica en la optimización de diseño de circuitos
electrónicos para minimizar el tiempo de retraso.
3. Asignación de recursos: Se utiliza para asignar recursos limitados de manera
óptima, como la programación de tareas en un proyecto.
4. Problemas de planificación: Simulated Annealing se aplica en problemas de
planificación, como la programación de horarios en instituciones educativas.
5. Ajuste de modelos y parámetros: Se utiliza para encontrar los parámetros
óptimos en modelos matemáticos o en algoritmos de aprendizaje automático
Técnicas de búsqueda heurística
A continuación se presenta una tabla comparando los criterios de búsqueda informada en base a los parámetros
más representativos:
1. Basada en heurísticas: Estas estrategias utilizan información heurística para guiar la búsqueda hacia
soluciones prometedoras. La heurística proporciona una estimación del costo o valor de cada estado o
acción.
2. Complejidad de implementación: Se refiere al esfuerzo y la complejidad requeridos para implementar
cada estrategia. Esto incluye la codificación del algoritmo, la definición de la función heurística y otros
aspectos técnicos.
3. Garantía de encontrar el óptimo: Indica si la estrategia puede garantizar la búsqueda del óptimo global, es
decir, la solución de menor costo. Algunas estrategias pueden encontrar soluciones subóptimas debido a
su enfoque heurístico.
4. Eficiencia en tiempo: Se refiere a la rapidez con la que la estrategia encuentra una solución. Una
estrategia eficiente en tiempo encuentra la solución en menos tiempo en comparación con otras
estrategias.
5. Eficiencia en espacio: Indica cuánta memoria o espacio de almacenamiento se requiere para ejecutar la
estrategia. Una estrategia eficiente en espacio utiliza la menor cantidad de memoria posible.
Técnicas de búsqueda heurística
6. Complejidad del espacio de búsqueda: Se refiere a la cantidad de estados o nodos que se
deben explorar en el espacio de búsqueda para encontrar la solución. Una complejidad alta
implica un mayor número de estados a explorar.
7. Necesidad de función heurística: Indica si la estrategia requiere una función heurística para
evaluar los estados y guiar la búsqueda. Algunas estrategias, como A*, dependen de la
heurística, mientras que otras no la necesitan.
8. Tolerancia a soluciones subóptimas: Muestra en qué medida la estrategia puede aceptar
soluciones subóptimas. Una alta tolerancia significa que la estrategia puede aceptar soluciones
que no son óptimas pero son lo suficientemente buenas.
9. Capacidad de búsqueda global: Indica la capacidad de la estrategia para realizar una búsqueda
amplia y explorar diferentes áreas del espacio de búsqueda. Una estrategia con alta capacidad
de búsqueda global es más exhaustiva.
10. Versatilidad en diferentes problemas: Muestra la capacidad de cada estrategia para aplicarse a
una amplia gama de problemas. Algunas estrategias pueden adaptarse y ser efectivas en
diferentes dominios, mientras que otras pueden ser más limitadas en su aplicabilidad.
Técnicas de búsqueda heurística
Característica Búsqueda heurística Búsqueda heurística Búsqueda heurística de Búsqueda heurística de Búsqueda heurística de
greedy A* escalada haz recocido simulado

Basada en heurísticas Sí Sí Sí Sí Sí

Complejidad de
Baja Media Baja Media Media
implementación
Garantía de encontrar
No Sí No No No
el óptimo
Eficiencia en tiempo Alta Media Media Baja Baja
Eficiencia en espacio Alta Alta Baja Media Baja

Complejidad del
Baja Alta Alta Alta Alta
espacio de búsqueda

Necesidad de función
Sí Sí Sí Sí Sí
heurística

Tolerancia a soluciones
Alta Media Baja Baja Alta
subóptimas

Capacidad de
Baja Alta Baja Alta Alta
búsqueda global

Versatilidad en
Baja Alta Baja Media Alta
diferentes problemas
Técnicas de búsqueda óptima
Las técnicas de búsqueda óptima en inteligencia artificial se refieren a algoritmos y
estrategias que tienen como objetivo encontrar la solución óptima o la mejor
solución posible a un problema. Estas técnicas exploran un espacio de búsqueda
de manera sistemática y eficiente para identificar la solución con el costo mínimo,
la ruta más corta o la calidad más alta en función de un criterio específico.

Las técnicas de búsqueda óptima a menudo emplean algoritmos de búsqueda


informados o heurísticos que utilizan conocimientos específicos del problema o
heurísticos para guiar el proceso de búsqueda. Estas técnicas toman decisiones
inteligentes sobre qué rutas explorar y priorizar en función de la información
disponible, reduciendo el espacio de búsqueda y mejorando la eficiencia.

El objetivo de las técnicas de búsqueda óptima es encontrar la solución que


optimice una función o criterio objetivo específico. Esto podría ser encontrar el
camino más corto, minimizar el costo, maximizar la utilidad o satisfacer un
conjunto de restricciones mientras se optimiza una determinada métrica. Estas
técnicas aseguran que la solución descubierta sea de hecho la mejor solución
posible de acuerdo con el criterio de optimización dado.
Técnicas de búsqueda óptima
El concepto de optimalidad es subjetivo y depende del dominio del problema y de los criterios específicos
utilizados para evaluar las soluciones. En general, una técnica de búsqueda óptima debería garantizar
encontrar la mejor solución de acuerdo con los criterios definidos, dadas ciertas suposiciones y
restricciones.

Las técnicas de búsqueda óptimas generalmente implican explorar diferentes estados o configuraciones de
un problema y tomar decisiones sobre qué estados visitar a continuación en función de reglas o heurísticas
específicas. Estas técnicas toman en cuenta el costo o la calidad asociados con cada estado y toman
decisiones que conducen a minimizar o maximizar la función objetivo.

Es importante tener en cuenta que, si bien las técnicas de búsqueda óptima se esfuerzan por lograr la
optimización, es posible que no siempre sean factibles o eficientes en todos los dominios del problema. En
algunos casos, se pueden utilizar enfoques aproximados o basados en heurísticas cuando el espacio de
búsqueda es demasiado grande o la complejidad del problema hace que sea poco práctico encontrar la
solución verdaderamente óptima.
Técnicas de búsqueda óptima
Las características clave de las técnicas de búsqueda óptima incluyen:
1. Función Objetivo: Las técnicas de búsqueda óptima están guiadas por una función objetivo que define
el criterio de optimización. Esta función asigna valores o puntajes a posibles soluciones, lo que permite
que el algoritmo evalúe y compare diferentes caminos.
2. Exploración sistemática: estas técnicas exploran sistemáticamente el espacio de búsqueda para
descubrir la solución óptima. A menudo usan estrategias como el recorrido basado en árboles o
gráficos, expandiendo nodos y evaluando sus costos o utilidades.
3. Utilización de la información: las técnicas de búsqueda óptimas aprovechan el conocimiento específico
del problema o la heurística para guiar el proceso de búsqueda de manera eficiente. Utilizan la
información disponible para tomar decisiones inteligentes sobre qué caminos explorar, reduciendo el
espacio de búsqueda y mejorando la eficiencia de búsqueda.
4. Garantía de Optimalidad: Uno de los objetivos primarios de las técnicas de búsqueda óptima es
garantizar que la solución encontrada sea de hecho la mejor solución posible de acuerdo con el criterio
de optimización dado. Estas técnicas apuntan a encontrar el óptimo global en lugar de conformarse con
los óptimos locales.
Técnicas de búsqueda óptima
Algunas de las ventajas que se incluyen a través de las técnicas de búsqueda óptima son:
1. Garantiza Optimalidad: Las técnicas de búsqueda óptima aseguran que la solución
descubierta es la mejor solución posible según el criterio de optimización dado.
2. Exploración eficiente: estas técnicas exploran sistemáticamente el espacio de búsqueda,
evitando rutas redundantes o poco prometedoras y centrándose en las más prometedoras.
3. Conocimiento específico del problema: las técnicas de búsqueda óptimas a menudo utilizan
heurística o conocimiento específico del dominio, lo que puede mejorar significativamente
la eficiencia y la calidad de la solución.
4. Adaptabilidad: estas técnicas se pueden adaptar a diferentes dominios de problemas y
criterios de optimización, lo que permite la personalización y la adaptación.
5. Versatilidad: las técnicas de búsqueda óptima se pueden aplicar a una amplia gama de
problemas, incluidos los problemas de búsqueda de rutas, programación, asignación de
recursos y optimización.
Técnicas de búsqueda óptima
Algunas de las desventajas de las técnicas de búsqueda óptima son:
1. Computacionalmente intensivo: en espacios de búsqueda grandes o dominios de problemas
complejos, el proceso de búsqueda puede ser computacionalmente exigente, lo que requiere una
cantidad significativa de tiempo y recursos.
2. Dependencia del conocimiento: la eficacia de estas técnicas se basa en la disponibilidad y precisión
de heurísticas o conocimientos específicos del problema, que pueden no estar siempre disponibles.
3. Complejidad del espacio de búsqueda: en algunos dominios de problemas, el espacio de búsqueda
puede ser extremadamente grande o infinito, lo que dificulta la exploración y la búsqueda de la
solución óptima.
4. Óptimos locales potenciales: según el problema y la estrategia de búsqueda, las técnicas de
búsqueda óptima pueden quedarse atascadas en los óptimos locales, sin poder encontrar el óptimo
global.
5. Sensibilidad a la representación del problema: la eficacia de las técnicas de búsqueda óptimas puede
verse influida por la calidad y la representación del problema, lo que requiere una formulación y un
modelado cuidadosos del problema.
Técnicas de búsqueda óptima
Al comparar la búsqueda óptima contra otras técnicas de búsqueda se puede indicar:

a. Técnicas de búsqueda sin información: Las técnicas de búsqueda óptimas, como A* o el algoritmo de
Dijkstra, difieren de las técnicas de búsqueda sin información, como la búsqueda primero en amplitud o
la búsqueda primero en profundidad. Las técnicas no informadas exploran el espacio de búsqueda sin
considerar ningún conocimiento o heurística específicos del problema, lo que a menudo conduce a
soluciones subóptimas. Por el contrario, las técnicas óptimas aprovechan información adicional y
heurística para guiar la búsqueda de manera eficiente hacia la mejor solución.
b. Técnicas de búsqueda heurística: Las técnicas de búsqueda óptima a menudo se clasifican como
técnicas de búsqueda heurística porque incorporan heurísticas específicas del problema; sin embargo,
no todas las técnicas de búsqueda heurística son necesariamente óptimas. Las técnicas de búsqueda
óptima, como A*, utilizan heurísticas admisibles que proporcionan límites inferiores del costo real para
el objetivo, lo que garantiza la optimización. Por el contrario, otras técnicas de búsqueda heurística
pueden encontrar soluciones subóptimas debido al uso de heurísticas no admisibles o inconsistentes.
Técnicas de búsqueda óptima
C. Técnicas de búsqueda local: las técnicas de búsqueda óptimas, como el recocido
simulado o la ascensión de colinas, difieren de las técnicas de búsqueda local. Las técnicas
de búsqueda local se enfocan en encontrar soluciones satisfactorias dentro de un
vecindario restringido sin garantizar la optimización global. A menudo se utilizan en
problemas de optimización con grandes espacios de búsqueda, pero es posible que no
siempre encuentren la mejor solución posible.
d. Técnicas metaheurísticas: las técnicas de búsqueda óptima se pueden contrastar con
técnicas metaheurísticas como los algoritmos genéticos o la optimización de enjambres de
partículas. Las técnicas metaheurísticas se inspiran en procesos naturales y exploran el
espacio de búsqueda mediante heurísticas, pero no ofrecen garantías de optimización. A
menudo se utilizan para resolver problemas de optimización complejos con grandes
espacios de solución, pero es posible que no encuentren la mejor solución posible.
Técnicas de búsqueda óptima
A continuación, se presentan algunas de las técnicas de búsqueda heurística más comunes:

1. Algoritmo de Dijkstra
La técnica de búsqueda óptima de Dijkstra, también conocida como algoritmo de Dijkstra, es un algoritmo
ampliamente utilizado para encontrar la ruta más corta en un gráfico ponderado desde un nodo de origen a
todos los demás nodos. Fue desarrollado por el científico informático holandés Edsger Dijkstra en 1956 y se
ha convertido en un algoritmo fundamental en varias aplicaciones, como el enrutamiento de redes, la
planificación del transporte y la asignación de recursos.

Este es un algoritmo codicioso, lo que significa que siempre elige el camino que parece más corto en ese
momento. El algoritmo de Dijkstra funciona manteniendo un conjunto de nodos que ya se han explorado y un
conjunto de nodos que aún no se han explorado. El algoritmo elimina repetidamente el nodo con la distancia
más corta conocida del conjunto de nodos no visitados y agrega sus vecinos al conjunto de nodos no visitados
si aún no están en el conjunto de nodos no visitados o el conjunto de nodos visitados. El algoritmo termina
cuando se alcanza el nodo objetivo.
Técnicas de búsqueda óptima
El algoritmo de Dijkstra es un algoritmo de ruta más corta de fuente única, lo que significa que encuentra las
rutas más cortas desde un nodo de fuente única a todos los demás nodos en el gráfico.

Algunas características de la técnica de búsqueda óptima de Dijkstra:


1. Gráfico ponderado: el algoritmo opera en un gráfico donde cada borde tiene un peso o costo asociado, que
representa la distancia o el costo de recorrido entre los nodos conectados.
2. Fuente única, todos los destinos: el algoritmo de Dijkstra encuentra la ruta más corta desde un nodo fuente
único a todos los demás nodos en el gráfico.
3. Enfoque codicioso: el algoritmo utiliza una estrategia codiciosa al seleccionar el nodo con el costo más bajo
hasta el momento en cada paso, expandiendo gradualmente la búsqueda a los nodos vecinos.
4. Seguimiento de costos: el algoritmo de Dijkstra mantiene una lista del costo mínimo para llegar a cada nodo
desde el nodo de origen. Actualiza estos costos a medida que explora el gráfico y encuentra caminos más
cortos.
5. Cola de prioridad: el algoritmo emplea una estructura de datos de cola de prioridad para seleccionar de
manera eficiente el nodo con el costo mínimo en cada iteración, asegurando una búsqueda óptima.
Técnicas de búsqueda óptima
Una descripción paso a paso de cómo funciona el algoritmo de Dijkstra se presenta a continuación:

1. Inicializar el algoritmo:
• Asigne un valor de distancia tentativo de 0 al nodo de origen e infinito a todos los demás nodos.
• Establezca el nodo de origen como el nodo actual.
2. Visite el nodo actual:
• Marque el nodo actual como visitado.
• Actualice las distancias tentativas de sus nodos vecinos:
– Para cada nodo vecino, calcule la distancia tentativa sumando el peso del borde del nodo actual a la distancia tentativa actual de
ese nodo.
– Si la distancia tentativa recién calculada es menor que la distancia tentativa actual del nodo vecino, actualice la distancia tentativa.
3. Seleccione el siguiente nodo actual:
• Elija el nodo no visitado con la distancia tentativa más pequeña como el siguiente nodo actual.
• Si todos los nodos no visitados restantes tienen distancias tentativas infinitas, el algoritmo termina.
4. Repita los pasos 2 y 3 hasta que se hayan visitado todos los nodos.

Una vez que finaliza el algoritmo, se conoce la ruta más corta desde el nodo de origen hasta cada nodo del gráfico. El algoritmo también
proporciona información sobre los predecesores de cada nodo, lo que permite la reconstrucción de los caminos más cortos
Técnicas de búsqueda óptima
Algunas Ventajas de la técnica de búsqueda óptima de Dijkstra:
1. Optimalidad: el algoritmo de Dijkstra garantiza encontrar la ruta más corta desde el nodo de
origen a todos los demás nodos, dados pesos de borde no negativos.
2. Eficiencia en gráficos dispersos: el algoritmo es eficiente cuando se aplica a gráficos dispersos,
donde solo está presente una fracción de los posibles bordes.
3. Versatilidad: el algoritmo de Dijkstra se puede aplicar a varios escenarios del mundo real,
como encontrar la ruta más corta en las redes de transporte, optimizar la asignación de recursos
y resolver problemas de programación.
4. Fácil implementación: el algoritmo tiene una implementación sencilla, lo que lo hace
relativamente fácil de entender e implementar.
5. Proporciona información detallada sobre la ruta: junto con la ruta más corta, el algoritmo de
Dijkstra también proporciona información sobre los nodos predecesores, lo que permite la
reconstrucción de la ruta completa.
Técnicas de búsqueda óptima
Algunas desventajas de la técnica de búsqueda óptima de Dijkstra:
1. Ineficiencia en grafos densos: El algoritmo se vuelve menos eficiente cuando se aplica a grafos densos
con muchas aristas, ya que necesita explorar una gran cantidad de nodos y actualizar sus costos.
2. Limitado a pesos no negativos: el algoritmo de Dijkstra no maneja gráficos con pesos de borde
negativos. Puede producir resultados incorrectos o entrar en un ciclo infinito en presencia de pesos
negativos.
3. Requiere información completa del gráfico: el algoritmo requiere el conocimiento de todos los pesos
de los bordes del gráfico antes de iniciar la búsqueda, lo que puede no ser práctico en entornos
dinámicos o en constante cambio.
4. Uso de la memoria: el algoritmo de Dijkstra requiere memoria adicional para almacenar el costo y la
información del predecesor para cada nodo, lo que puede ser un problema para los gráficos grandes.
5. Falta de flexibilidad en la selección de rutas: el algoritmo de Dijkstra solo encuentra la ruta más corta
en función de los pesos de los bordes, sin considerar otros factores como restricciones o preferencias
que pueden ser relevantes en algunas aplicaciones.
Técnicas de búsqueda óptima
Ejemplos de aplicaciones de la técnica de búsqueda óptima de Dijkstra:
1. Enrutamiento en redes informáticas: el algoritmo de Dijkstra se usa en protocolos de enrutamiento de red, como Open
Shortest Path First (OSPF), para determinar las rutas más cortas para que los paquetes de datos atraviesen una red.
2. Sistemas de navegación GPS: el algoritmo de Dijkstra se emplea en los dispositivos de navegación GPS para calcular la
ruta más rápida o más corta entre un origen y un destino determinados, teniendo en cuenta las redes de carreteras y las
condiciones del tráfico en tiempo real.
3. Planificación de vuelos: las aerolíneas utilizan el algoritmo de Dijkstra para optimizar las rutas de vuelo y minimizar el
tiempo de viaje y el consumo de combustible.
4. Asignación de recursos: el algoritmo de Dijkstra se puede utilizar para asignar recursos de manera eficiente en
industrias como las telecomunicaciones, el transporte y la gestión de proyectos.
5. Planificación de la ruta del robot: se aplica el algoritmo de Dijkstra en robótica para planificar los caminos óptimos para
que los robots naveguen a través de un entorno, evitando obstáculos y minimizando la distancia recorrida.

Vale la pena señalar que el algoritmo de Dijkstra es el más adecuado para encontrar la ruta más corta desde una sola
fuente a todos los demás nodos. Para encontrar el camino más corto entre dos nodos específicos, otros algoritmos como
A* pueden ser más eficientes.
Técnicas de búsqueda óptima
2. Búsqueda óptima A* (A-star):
A* Search es un algoritmo de búsqueda popular utilizado en inteligencia artificial para
resolver problemas de optimización. Cuando se utiliza como una búsqueda optimizada,
A* combina las ventajas de las técnicas de búsqueda informada (heurística) y no
informada (óptima). Su objetivo es encontrar la solución óptima mediante la exploración
eficiente del espacio de búsqueda utilizando información heurística.

A* Buscar como una búsqueda optimizada: A* Search, como técnica de búsqueda


optimizada, garantiza encontrar la solución óptima, siempre que se cumplan ciertas
condiciones. Explora el espacio de búsqueda de forma sistemática y evalúa posibles
soluciones en función de una combinación del costo real incurrido hasta el momento
(costo g) y una estimación del costo restante para alcanzar la meta (costo h).
Técnicas de búsqueda óptima
Características de A* como Búsqueda Optimizada:
1. Función heurística: A* utiliza una función heurística, denotada como h(n), que estima el costo desde el estado
actual hasta el estado objetivo. Esta información heurística guía el proceso de búsqueda al priorizar los nodos que
probablemente conduzcan a la solución óptima.
2. Función de evaluación: A* emplea una función de evaluación, denominada f(n), que combina el costo real (costo g)
y la estimación heurística (costo h). La función de evaluación determina el orden en que se expanden los nodos
durante la búsqueda, priorizando los nodos con valores de evaluación más bajos.
3. Garantía de solución óptima: A* garantiza encontrar la solución óptima si la función heurística es admisible y la
búsqueda no encuentra bucles o ciclos infinitos. Una heurística admisible nunca sobrestima el costo real para
alcanzar la meta.
4. Best-First Search: A* combina la velocidad y la eficiencia de la memoria de la búsqueda en profundidad con la
optimización de la búsqueda en amplitud. Expande los nodos más prometedores primero en función de los valores de
su función de evaluación.
5. Gestión de la memoria: A* mantiene una cola de prioridad, como un montón mínimo, para realizar un seguimiento
de los nodos abiertos y determinar el siguiente nodo para la expansión. Almacena los nodos explorados y sus valores
de evaluación para evitar volver a visitar estados ya explorados.
Técnicas de búsqueda óptima
Comparación de A* como búsqueda heurística frente a búsqueda optimizada:
A* como búsqueda heurística:
- Ventaja: explora eficientemente el espacio de búsqueda utilizando información heurística, lo que conduce a una
convergencia más rápida y reduce el esfuerzo computacional.
- Ventaja: puede encontrar soluciones razonablemente buenas incluso en espacios de búsqueda grandes y complejos.
- Inconveniente: La solución obtenida puede no ser la óptima, ya que el foco está en llegar rápidamente a una solución
satisfactoria en lugar de encontrar la mejor solución.

A* como búsqueda optimizada:


- Ventaja: Garantiza encontrar la solución óptima, siempre que se cumplan las condiciones.
- Ventaja: equilibra la exploración del espacio de búsqueda considerando tanto el costo real como la información heurística.
- Desventaja: Puede ser costoso computacionalmente en términos de tiempo y memoria, especialmente para grandes
espacios de búsqueda o cuando no se dispone de una heurística precisa.
- Desventaja: Requiere una heurística admisible, que puede ser difícil de definir u obtener en algunos dominios de
problemas.
- Desventaja: la solución óptima aún puede tomar una cantidad significativa de tiempo para encontrar en algunos casos.
Técnicas de búsqueda óptima
Ejemplos de aplicaciones aplicadas a la búsqueda optimizada:
1. Pathfinding: A* se usa comúnmente para encontrar la ruta más corta o más rápida en aplicaciones como
sistemas de navegación GPS o videojuegos.
2. Problema del viajante de comercio: Se puede aplicar A* para encontrar la ruta óptima para el viajero de
comercio, minimizando la distancia total recorrida.
3. Planificación del movimiento del robot: A* ayuda a planificar las rutas más eficientes para que los robots
naveguen a través de obstáculos en entornos del mundo real.
4. Enrutamiento de red: A* puede usarse para determinar la ruta óptima para paquetes de datos en redes
informáticas, minimizando la latencia o maximizando la utilización del ancho de banda.
5. Asignación de recursos: A* puede ayudar a optimizar los problemas de asignación de recursos, como la
asignación de tareas a los trabajadores o la programación de actividades del proyecto.

A* se puede aplicar para resolver problemas de optimización de manera efectiva. La elección de usar A* como
búsqueda heurística u optimizada depende de los requisitos específicos del problema, la información
heurística disponible y las compensaciones entre la calidad de la solución y los recursos computacionales.
Técnicas de búsqueda óptima
3. Algoritmo de Ramificación y Acotación/poda (Branch and Bound):
Ramificación y acotación/poda es un algoritmo para encontrar la solución óptima a un problema de
optimización. Este es un algoritmo de búsqueda en árbol que funciona explorando el espacio de búsqueda de
forma sistemática. El espacio de búsqueda se representa como un árbol, donde cada nodo del árbol
representa una posible solución al problema. El algoritmo comienza en la raíz del árbol y explora el árbol
primero en profundidad. En cada nodo, el algoritmo evalúa una función heurística para estimar el costo de la
solución representada por el nodo. Si el costo de la solución representada por el nodo es mayor que el costo
de la mejor solución encontrada hasta el momento, entonces el algoritmo elimina el nodo del árbol. Este
proceso continúa hasta que el algoritmo llega a un nodo hoja, que representa una solución al problema.

Ramificación y acotación/poda es un algoritmo completo, lo que significa que está garantizado para encontrar
la solución óptima al problema, si existe; sin embargo, ramificar y acotar puede ser ineficaz para problemas
grandes, ya que puede necesitar explorar una gran parte del espacio de búsqueda. Este es un poderoso
algoritmo que se puede utilizar para resolver una amplia variedad de problemas de optimización; pero puede
ser computacionalmente costoso para problemas grandes
Técnicas de búsqueda óptima
Las características del algoritmo Ramificación y Acotación incluyen:

- Solución Óptima: El algoritmo garantiza encontrar la solución óptima entre todas las
soluciones factibles.
- Exploración Sistemática: Explora el espacio de soluciones de manera sistemática y
organizada, podando ramas que no pueden dar mejores soluciones.
- Límites Inferiores: Utiliza límites inferiores para determinar la calidad de las soluciones
parciales y guiar el proceso de búsqueda.
- Estrategia de ramificación: el algoritmo emplea una estrategia de ramificación para
generar nuevas ramas basadas en la solución parcial actual.
- Poda: Poda las ramas que garantizan producir soluciones subóptimas, reduciendo el
espacio de búsqueda.
Técnicas de búsqueda óptima
Una descripción detallada de cómo funciona el algoritmo Ramificación y Acotación:
1. Inicialización:
- Establecer un límite inferior inicial a un valor arbitrariamente grande.
- Empezar con una solución parcial vacía.
2. Exploración:
- Expandir la solución parcial actual agregando un componente de solución factible.
- Evalúe la función objetivo para el nuevo componente de la solución y actualice el límite inferior si es necesario.
- Si la solución parcial actual es inviable o su valor objetivo supera el límite inferior, podar la rama.
3. Ramificación:
- Generar nuevas ramas considerando todas las posibles extensiones de la solución parcial actual.
- Ordenar las ramas en función de algunos criterios, como su potencial para generar una mejor solución.
- Seleccione la rama más prometedora y proceda a explorarla.
4. Actualización:
- Si se encuentra una solución completa, actualice la mejor solución si mejora la mejor solución actual.
- Actualice el límite inferior en función de la nueva solución.
5. Terminación:
- Continúe explorando ramas hasta que todas las ramas hayan sido podadas o no haya más ramas prometedoras para explorar.
Técnicas de búsqueda óptima
Ventajas del algoritmo Ramificación y Acotación:
1. Soluciones Óptimas: Garantiza encontrar la mejor solución con respecto a la
función objetivo.
2. Eficiencia: elimina grandes porciones del espacio de soluciones, lo que genera
reducciones significativas en el esfuerzo de búsqueda.
3. Flexibilidad: Puede aplicarse a una amplia gama de problemas de optimización
combinatoria.
4. Mejora incremental: actualiza continuamente la mejor solución a medida que
explora diferentes ramas, lo que permite la mejora incremental.
5. Adaptabilidad: el algoritmo se puede adaptar para incorporar restricciones
adicionales o conocimiento específico del problema.
Técnicas de búsqueda óptima
Desventajas del algoritmo Ramificación y Acotación:
1. Complejidad computacional: la complejidad de tiempo del algoritmo puede ser
alta, especialmente para instancias de problemas grandes.
2. Uso de la memoria: puede requerir una cantidad considerable de memoria para
almacenar el árbol de búsqueda y rastrear la mejor solución.
3. Orden de ramificación: la calidad de la solución puede ser sensible a la estrategia
de ramificación utilizada.
4. Dependencia de los límites inferiores: el rendimiento del algoritmo depende en
gran medida de la precisión y la rigurosidad de los límites inferiores utilizados.
5. Maldición de la dimensionalidad: la eficiencia del algoritmo disminuye a medida
que aumentan el tamaño del problema y la dimensionalidad.
Técnicas de búsqueda óptima
Ejemplos de aplicación:
1. Problema del vendedor ambulante: encontrar la ruta más corta para que un
vendedor visite un conjunto de ciudades.
2. Problema de la mochila: maximizar el valor de los artículos que se pueden
poner en una mochila con capacidad limitada.
3. Programación de trabajos: determinar un programa óptimo para un conjunto
de trabajos con limitaciones de tiempo y recursos.
4. Ubicación de las instalaciones: identificar las mejores ubicaciones para abrir
instalaciones a fin de minimizar los costos o maximizar la cobertura.
5. Coloreado de gráficos: asignación de colores a los vértices del gráfico con la
menor cantidad de conflictos.
Técnicas de búsqueda óptima
4. Algoritmo de Bellman-Ford:
El algoritmo de Bellman-Ford es una técnica de búsqueda óptima para encontrar los caminos más cortos entre los nodos
de un gráfico. Es un algoritmo de programación dinámica, lo que significa que utiliza información de iteraciones anteriores
para mejorar sus estimaciones de los caminos más cortos.

El algoritmo de Bellman-Ford funciona manteniendo un conjunto de distancias desde el nodo de origen hasta todos los
demás nodos del gráfico. Las distancias se inicializan hasta el infinito y luego el algoritmo relaja iterativamente los bordes
del gráfico. Relajar un borde significa actualizar la distancia desde el nodo de origen hasta el nodo de destino, si la nueva
distancia es más corta que la distancia anterior. El algoritmo de Bellman-Ford termina cuando no se pueden relajar más
bordes. En este punto, las distancias del conjunto son los caminos más cortos desde el nodo de origen hasta todos los
demás nodos del gráfico.

Ramificación y acotación/poda es un algoritmo completo, lo que significa que está garantizado para encontrar la solución
óptima al problema, si existe; sin embargo, ramificar y acotar puede ser ineficaz para problemas grandes, ya que puede
necesitar explorar una gran parte del espacio de búsqueda. Este es un poderoso algoritmo que se puede utilizar para
resolver una amplia variedad de problemas de optimización; pero puede ser computacionalmente costoso para problemas
grandes
Técnicas de búsqueda óptima
El algoritmo Bellman-Ford funciona manteniendo una tabla de distancias. La tabla de
distancias es una tabla que almacena la distancia desde un nodo de origen a cada uno de los
otros nodos en el gráfico. La tabla de distancia se inicializa con valores infinitos, excepto la
distancia desde el nodo de origen a sí mismo, que se inicializa en 0.

Luego se realiza una serie de relajaciones. Una relajación es un proceso de actualización de la


tabla de distancias considerando los caminos más cortos que se pueden alcanzar desde un
nodo a través de sus vecinos. El algoritmo Bellman-Ford realiza relajaciones V-1, donde V es el
número de nodos en el gráfico.

Después de las relajaciones V-1, la tabla de distancias contendrá las rutas más cortas desde el
nodo de origen hasta todos los demás nodos del gráfico. Si hay ciclos de peso negativos en el
gráfico, el algoritmo Bellman-Ford los detectará e informará un error.
Técnicas de búsqueda óptima
Algunas características del algoritmo Bellman-Ford incluyen:
- Fuente única: el algoritmo encuentra las rutas más cortas desde un vértice de
fuente única a todos los demás vértices del gráfico.
- Pesos de borde negativos: puede manejar gráficos con pesos de borde negativos,
pero no puede manejar gráficos con ciclos negativos.
- Relajación iterativa: el algoritmo relaja iterativamente los bordes para actualizar
gradualmente las estimaciones de distancia.
- Programación Dinámica: Utiliza el principio de programación dinámica para
construir soluciones óptimas de manera incremental.
- Detección de ciclos negativos: el algoritmo puede detectar la presencia de ciclos
negativos en el gráfico.
Técnicas de búsqueda óptima
Un paso a paso de cómo funciona el algoritmo Bellman-Ford:
1. Inicialización:
- Establezca la distancia del vértice de origen en 0 y las distancias de todos los demás vértices en infinito.
- Establecer el predecesor de todos los vértices en nulo.
2. Relajación iterativa:
- Repita los siguientes pasos para el número de vértices menos uno veces:
- Para cada arista (u, v) en el gráfico:
- Si la distancia del vértice fuente a u más el peso de la arista (u, v) es menor que la distancia actual a v:
- Actualizar la distancia a v como la suma de las distancias a u y el peso de la arista (u, v).
- Establecer el antecesor de v en u.
3. Verifique los ciclos negativos:
- Repita el siguiente paso una vez:
- Para cada arista (u, v) en el gráfico:
- Si la distancia del vértice fuente a u más el peso de la arista (u, v) es menor que la distancia actual a v:
- Un ciclo negativo está presente en el gráfico. No existe una solución óptima.
4. Terminación:
- Termina el algoritmo y se obtienen las distancias finales y los predecesores.
Técnicas de búsqueda óptima
Ventajas del algoritmo Bellman-Ford:
1. Flexibilidad: puede manejar gráficos con pesos de borde positivos y negativos.
2. Optimalidad: Garantiza encontrar el camino más corto desde el vértice de
origen a todos los demás vértices.
3. Detección de Peso Negativo: Puede detectar la presencia de ciclos negativos
en el gráfico.
4. Generalidad: el algoritmo se puede aplicar a varios tipos de gráficos, incluidos
gráficos dirigidos y no dirigidos.
5. Reconstrucción de caminos: Permite reconstruir los caminos más cortos desde
el vértice de origen hasta cualquier otro vértice.
Técnicas de búsqueda óptima
Desventajas del algoritmo Bellman-Ford:
1. Complejidad de tiempo: el algoritmo tiene una complejidad de tiempo de O(V *
E), que puede ser ineficiente para gráficos grandes.
2. Limitación de ciclo negativo: no puede manejar gráficos con ciclos negativos, ya
que conducen a rutas más cortas indefinidas.
3. Iteraciones redundantes: en algunos casos, el algoritmo puede realizar
iteraciones innecesarias después de determinar la solución óptima.
4. Uso de memoria: requiere almacenar las distancias y los predecesores de todos
los vértices, lo que puede consumir una cantidad significativa de memoria.
5. Falta de paralelismo: la naturaleza iterativa del algoritmo dificulta la
paralelización para una ejecución eficiente en sistemas distribuidos.
Técnicas de búsqueda óptima
Ejemplos de aplicación:
1. Enrutamiento en redes: encontrar la ruta más corta para que los paquetes de
datos viajen desde un origen a un destino en una red.
2. Enrutamiento por vector de distancia: Cálculo de rutas óptimas en protocolos
de enrutamiento como RIP (Protocolo de información de enrutamiento).
3. Redes de Transporte: Determinación de las rutas más eficientes para que los
vehículos naveguen en un sistema de transporte.
4. Asignación de recursos: optimizar la asignación de recursos en un sistema para
minimizar costos o maximizar la eficiencia.
5. Gestión de Proyectos: Determinación de la ruta crítica y el menor tiempo para
completar un proyecto con dependencias.
Técnicas de búsqueda óptima
5. Algoritmo Genéticos:
Los algoritmos genéticos (AG) son algoritmos de optimización inspirados en los principios de la evolución
natural y la genética. Se utilizan para resolver problemas complejos de búsqueda y optimización al imitar el
proceso de selección natural, cruce y mutación. Los AG operan en una población de soluciones potenciales,
evalúan su aptitud en función de una función objetiva y hacen evolucionar la población a lo largo de
generaciones para encontrar la solución óptima.

Los AG funcionan representando soluciones potenciales a un problema como cromosomas. Los cromosomas
son cadenas de genes, donde cada gen representa un valor posible para una variable en el problema. Luego,
los GA usan un proceso llamado operaciones genéticas para crear nuevos cromosomas y seleccionar los
mejores cromosomas para continuar la búsqueda.

Las operaciones genéticas más comunes son el cruce y la mutación. El cruce es un proceso en el que dos
cromosomas se combinan para crear un nuevo cromosoma. La mutación es un proceso en el que se realiza
un cambio aleatorio en un cromosoma
Técnicas de búsqueda óptima
Los algoritmos genéticos funcionan creando una población de individuos, cada uno de los cuales representa una posible solución
al problema. Luego, los individuos de la población se evalúan en función de su aptitud, que es una medida de qué tan buenos son
para resolver el problema. Luego, los individuos más aptos se seleccionan para reproducirse, y su descendencia luego se muta y
se cruza para crear una nueva población de individuos. Este proceso se repite hasta que se encuentra una solución satisfactoria.

En general, el algoritmo repite los siguientes pasos hasta que se cumpla una condición de parada:

1. Evaluación de la aptitud: se evalúa la aptitud de cada cromosoma. La aptitud de un cromosoma es una medida de lo
bueno que es para resolver el problema.
2. Selección: Se seleccionan los mejores cromosomas para continuar la búsqueda. El número de cromosomas que se
seleccionan se denomina presión de selección.
3. Operaciones genéticas: se crean nuevos cromosomas mediante operaciones genéticas.
4. Mutación: Las mutaciones se aplican a los nuevos cromosomas.
5. Reemplazo: Los nuevos cromosomas reemplazan a los viejos cromosomas en la población.

El GA continúa este proceso hasta que se cumple una condición de parada. La condición de parada podría ser un número máximo
de generaciones, un valor de aptitud mínimo o un límite de tiempo.
Técnicas de búsqueda óptima
Los pasos que sigue el algoritmo genético se puede expresar de la siguiente manera:
1. Inicialización:
- Crear una población inicial de posibles soluciones (cromosomas).
- Codificar cada cromosoma como un conjunto de genes que representan una posible
solución.
2. Evaluación:
- Evaluar la aptitud de cada cromosoma aplicando la función objetivo para medir su calidad o
idoneidad.
3. Selección:
- Seleccione un subconjunto de cromosomas de la población actual en función de su aptitud.
- El proceso de selección suele estar sesgado hacia los cromosomas que se adaptan mejor, lo
que les permite tener una mayor probabilidad de ser elegidos para la reproducción.
Técnicas de búsqueda óptima
4. Reproducción:
- Realizar operaciones de cruce y mutación para crear cromosomas descendientes a partir de los cromosomas
parentales seleccionados.
- El cruce implica el intercambio de material genético entre los cromosomas de los padres para crear nuevas
soluciones.
- La mutación introduce cambios aleatorios en el material genético para mantener la diversidad en la población.
5. Reemplazo:
- Reemplazar una parte de la población existente con la descendencia de nueva creación.
- El reemplazo puede basarse en criterios como la idoneidad, lo que garantiza que las soluciones más adecuadas
tengan una mayor probabilidad de sobrevivir a la próxima generación.
6. Terminación:
- Repita los pasos de selección, reproducción y reemplazo para múltiples generaciones hasta que se cumpla una
condición de terminación.
- Las condiciones de terminación pueden ser un número máximo de generaciones, alcanzando un nivel de
aptitud satisfactorio, o una calidad de solución específica.
Técnicas de búsqueda óptima
Las características de los Algoritmos Genéticos incluyen:
- Basado en la población: los GA trabajan con una población de soluciones potenciales
en lugar de una única solución.
- Operadores Evolutivos: Utilizan operadores genéticos como cruce y mutación para
crear nuevas soluciones.
- Evaluación de aptitud: las soluciones se evalúan en función de una función de aptitud
que mide su calidad o idoneidad.
- Exploración del espacio de búsqueda: los GA exploran el espacio de búsqueda
manteniendo poblaciones diversas y permitiendo la exploración de diferentes regiones.
- Naturaleza estocástica: Los AG incorporan aleatoriedad a través de los procesos de
selección, cruce y mutación.
Técnicas de búsqueda óptima
Ventajas de los algoritmos genéticos:
1. Búsqueda global: los GA son capaces de encontrar soluciones globalmente óptimas o
casi óptimas en grandes espacios de búsqueda.
2. Versatilidad: se pueden aplicar a una amplia gama de problemas de optimización,
incluida la optimización de funciones, la programación y el aprendizaje automático.
3. Paralelización: los GA se pueden paralelizar, lo que permite una exploración más rápida
del espacio de búsqueda y un mejor rendimiento en los sistemas distribuidos.
4. Robustez: los GA pueden manejar espacios de búsqueda complejos, multimodales y
ruidosos donde otras técnicas de optimización pueden tener dificultades.
5. Diversidad de soluciones: el enfoque basado en la población de los AG promueve la
diversidad de soluciones, lo que ayuda a evitar la convergencia prematura a soluciones
subóptimas.
Técnicas de búsqueda óptima
Desventajas de los algoritmos genéticos:
1. Complejidad computacional: los AG pueden ser costosos desde el punto de vista
computacional, especialmente para poblaciones grandes o funciones de aptitud complejas.
2. Velocidad de convergencia: Pueden requerir un gran número de generaciones para
converger a una solución óptima, especialmente en problemas complejos.
3. Diseño de representación: la elección de codificación y representación puede afectar
significativamente el rendimiento y la eficiencia de los AG.
4. Dependencia del conocimiento del dominio: los AG pueden requerir conocimientos
específicos del dominio para diseñar funciones de aptitud y operadores genéticos adecuados.
5. Convergencia prematura: los AG pueden converger prematuramente a soluciones
subóptimas si el espacio de búsqueda no se explora adecuadamente o los operadores
genéticos no están bien sintonizados.
Técnicas de búsqueda óptima
Ejemplos de aplicación:
1. Problema del Vendedor Viajero: Encontrar la ruta más corta para que un vendedor
visite un conjunto de ciudades y regrese al punto de partida.
2. Programación de trabajos: optimización de la asignación de tareas a los recursos
para minimizar los tiempos de producción o maximizar la utilización de los recursos.
3. Selección de funciones: selección de las funciones más informativas de un gran
conjunto de funciones en problemas de aprendizaje automático.
4. Optimización de parámetros: ajustar los parámetros de un algoritmo de aprendizaje
automático para maximizar su rendimiento en un conjunto de datos determinado.
5. Optimización de cartera: Optimización de la asignación de inversiones en una
cartera financiera para maximizar los rendimientos y minimizar los riesgos.
Técnicas de búsqueda óptima
A continuación se presenta una tabla comparando los criterios de búsqueda informada en base a los parámetros más
representativos:
1. Tipo de búsqueda: El tipo de búsqueda que realiza el algoritmo, como búsqueda de costo uniforme, búsqueda
informada o exhaustiva.
2. Óptimo garantizado: Indica si el algoritmo garantiza encontrar una solución óptima.
3. Aplicabilidad a grafos con pesos: Si el algoritmo puede ser aplicado a grafos que contienen aristas con pesos.
4. Utiliza heurísticas: Si el algoritmo utiliza heurísticas para guiar la búsqueda.
5. Complejidad temporal: La complejidad temporal del algoritmo, indicando su eficiencia en términos de tiempo de
ejecución.
6. Eficiencia en grandes grafos: Evalúa la eficiencia del algoritmo al manejar grafos de gran tamaño.
7. Soluciones subóptimas: Indica si el algoritmo puede encontrar soluciones subóptimas en lugar de la solución
óptima.
8. Adaptabilidad a cambios: La capacidad del algoritmo para adaptarse a cambios en el entorno o en los datos del
problema.
9. Exploración exhaustiva: Si el algoritmo realiza una exploración exhaustiva de todas las posibles soluciones.
10. Tamaño del problema: La adecuación del algoritmo para problemas de diferentes tamaños, desde pequeños
hasta grandes.
Técnicas de búsqueda óptima
Característica Dijkstra's A* Algorithm Branch and Bound Bellman-Ford Genetic Algorithms
Algorithm Algorithm Algorithm
Búsqueda de costo Búsqueda de costo
Búsqueda informada con Búsqueda exhaustiva con Búsqueda heurística y basada
Tipo de búsqueda uniforme y no uniforme y dirigida a
heurística poda en la evolución
informada grafos con pesos

Óptimo garantizado Sí Sí Sí Sí No

Aplicabilidad a grafos con


Sí Sí Sí Sí No
pesos
Utiliza heurísticas No Sí No No Sí
Variable dependiendo del
Complejidad temporal O((V + E) log V) O(b^d) (peor caso) Exponencial O(VE)
problema
Depende del tamaño del
Eficiencia en grandes grafos Bueno Bueno Muy limitado Bueno problema y la codificación
utilizada

Soluciones subóptimas No Sí Sí No Sí

Adaptabilidad a cambios No Sí No Sí Sí

Exploración exhaustiva Sí No Sí Sí No

Adecuado para Adecuado para


Limitado por la capacidad de Adecuado para grafos Adecuado para problemas de
Tamaño del problema grafos pequeños y problemas de tamaño
memoria pequeños y medianos tamaño moderado
medianos moderado
Técnicas de búsqueda con adversarios
Las técnicas de búsqueda con adversarios, también conocidas como juegos
de dos jugadores, son un enfoque dentro de la inteligencia artificial que se
centra en resolver problemas de toma de decisiones en situaciones
competitivas. A diferencia de las técnicas de búsqueda tradicionales que se
centran en un solo agente que busca alcanzar un objetivo, las técnicas de
búsqueda con adversarios involucran a dos agentes o jugadores que
compiten entre sí, y cada uno busca maximizar su propio resultado
mientras intenta minimizar el resultado del oponente.

La principal diferencia entre las técnicas de búsqueda con adversarios y las


técnicas de búsqueda tradicionales radica en la naturaleza competitiva del
problema. Mientras que en las técnicas de búsqueda tradicionales el
agente tiene control total sobre el entorno y puede tomar decisiones sin
interferencia externa, en las técnicas de búsqueda con adversarios, el
agente debe considerar las acciones y respuestas del oponente para tomar
decisiones efectivas.
Técnicas de búsqueda con adversarios
Las técnicas de búsqueda con adversarios se aplican comúnmente en juegos estratégicos
como el ajedrez, el póker, el go y otros juegos de tablero. Estas técnicas se centran en
encontrar la mejor secuencia de movimientos para el agente teniendo en cuenta las
posibles respuestas del oponente. A menudo, se utilizan algoritmos de búsqueda en
árboles como el minimax y sus variantes para explorar el espacio de búsqueda y evaluar
las diferentes jugadas posibles.

Una diferencia clave en las técnicas de búsqueda con adversarios es la incorporación de


una evaluación de utilidad que tiene en cuenta los objetivos y preferencias de ambos
jugadores. La función de utilidad asigna valores numéricos a los estados del juego,
reflejando el resultado deseado para cada jugador. Esto permite que el agente considere
no solo sus propios objetivos, sino también los del oponente al tomar decisiones.
Técnicas de búsqueda con adversarios
Otra diferencia importante es la presencia de estrategias competitivas. En lugar de buscar
una solución única y óptima, en las técnicas de búsqueda con adversarios se busca una
estrategia que maximice la probabilidad de ganar frente a diferentes acciones del
oponente. Esto puede requerir el uso de técnicas más sofisticadas, como la poda alfa-
beta, que reduce la cantidad de nodos explorados en el árbol de búsqueda, y el
aprendizaje por refuerzo, que permite al agente adaptarse y mejorar su estrategia a
medida que juega contra diferentes oponentes.

La búsqueda adversarial es un proceso recursivo. Esto significa que divide el problema en


subproblemas cada vez más pequeños hasta que son lo suficientemente simples como
para resolverlos directamente. Luego, el agente elige el subproblema que cree que es
más probable que conduzca a una victoria y resuelve recursivamente ese subproblema.
Técnicas de búsqueda con adversarios
Algunas de las principales características de la búsqueda con adversarios son:
1. Entorno competitivo: Las técnicas de búsqueda con adversarios se aplican en entornos donde
el agente interactúa con oponentes racionales que también buscan maximizar su utilidad.
2. Información completa o parcial: Dependiendo del juego, el agente puede tener acceso a
información completa o solo parcial sobre el estado del juego y las acciones de los oponentes.
3. Árbol de búsqueda: Se utiliza un árbol de búsqueda para explorar las posibles acciones y
estados del juego, considerando las respuestas de los oponentes en cada nivel del árbol.
4. Evaluación de utilidad: Se emplea una función de evaluación para asignar valores de utilidad a
los diferentes estados del juego, lo que ayuda al agente a tomar decisiones.
5. Estrategias óptimas: El objetivo es encontrar una estrategia óptima que maximice la utilidad
esperada del agente, teniendo en cuenta las acciones y respuestas de los oponentes.
Técnicas de búsqueda con adversarios
Los algoritmos de búsqueda con adversarios trabajan de la siguiente manera:
1. Definir el estado inicial: En primer lugar, se establece el estado inicial del juego, que
representa la configuración inicial en la que se encuentran los jugadores y el entorno
del juego.
2. Generar el árbol de búsqueda: A partir del estado inicial, se genera un árbol de
búsqueda que representa todas las posibles secuencias de movimientos que pueden
realizarse por parte de los jugadores. Cada nodo del árbol representa un estado del
juego y las ramas representan las diferentes opciones de movimientos disponibles.
3. Evaluar los estados terminales: Se asigna un valor de utilidad a los estados terminales
del juego, que indican el resultado deseado para cada jugador. Por ejemplo, en el
ajedrez, un estado terminal podría ser una victoria, un empate o una derrota para un
jugador específico.
Técnicas de búsqueda con adversarios
4. Aplicar el algoritmo de búsqueda: Se aplica un algoritmo de búsqueda específico, como el minimax,
para explorar el árbol de búsqueda y determinar la mejor secuencia de movimientos para cada jugador. El
algoritmo evalúa los nodos del árbol de búsqueda de manera recursiva, teniendo en cuenta las acciones
del jugador y las posibles respuestas del oponente.
5. Realizar la poda alfa-beta: Para mejorar la eficiencia de la búsqueda, se puede aplicar la poda alfa-beta.
Este método permite eliminar ramas del árbol de búsqueda que no afectarán la elección de movimientos
óptimos. La poda alfa-beta reduce la cantidad de nodos explorados y acelera el proceso de búsqueda.
6. Tomar la mejor decisión: Una vez que se ha completado la búsqueda, se determina la mejor acción a
tomar en función de los resultados obtenidos. Esto implica seleccionar el movimiento que maximice la
utilidad del jugador o minimice la utilidad del oponente, dependiendo del objetivo del juego.
7. Actualización del estado del juego: Se realiza el movimiento seleccionado y se actualiza el estado del
juego al siguiente estado. Luego, el proceso se repite hasta que se alcance un estado final, como un
ganador o un empate
Técnicas de búsqueda con adversarios
Algunas de las ventajas de la búsqueda con adversarios son:
1. Capacidad de tomar decisiones racionales en entornos competitivos.
2. Capacidad de adaptarse a diferentes oponentes y situaciones de juego.
3. Puede generar soluciones óptimas o cercanas a óptimas en juegos bien definidos.
4. Aplicable a una amplia gama de juegos y problemas de toma de decisiones competitivas.
5. Puede mejorar las habilidades estratégicas y tácticas del agente
6. La búsqueda adversaria puede ser muy eficiente, ya que puede podar las ramas del árbol de
búsqueda que es poco probable que conduzcan a una victoria.
7. La búsqueda de adversarios se puede utilizar para resolver una amplia variedad de problemas,
incluidos juegos, planificación y programación.
8. La búsqueda de adversarios se puede escalar para manejar problemas grandes, ya que se puede
paralelizar en múltiples procesadores.
Técnicas de búsqueda con adversarios
Algunas de las desventajas de la búsqueda con adversarios son:
1. Complejidad computacional: La búsqueda exhaustiva en árboles de juego grandes
puede ser computacionalmente costosa.
2. Requiere información completa o parcial del estado del juego, lo que puede no estar
disponible en todos los contextos.
3. No garantiza la victoria en juegos de información imperfecta debido a la
incertidumbre y a la habilidad de los oponentes.
4. Sensible a la calidad de la función de evaluación utilizada para asignar valores a los
estados del juego.
5. Puede ser vulnerable a estrategias no convencionales o sorpresivas empleadas por
los oponentes.
Técnicas de búsqueda con adversarios
A continuación, se presentan algunas de las técnicas de búsqueda con adversarios más comunes:

1. Algoritmo Minimax
La técnica de búsqueda por adversarios Minimax es utilizada en inteligencia artificial para tomar decisiones en juegos
de dos jugadores de suma cero, donde uno busca maximizar su ganancia y el otro busca minimizarla. El objetivo del
algoritmo Minimax es encontrar la mejor estrategia para el jugador maximizador, considerando las posibles
respuestas del jugador minimizador.

El algoritmo Minimax se basa en la construcción de un árbol de búsqueda que representa todas las posibles
secuencias de movimientos para ambos jugadores. Cada nivel del árbol corresponde a un turno de juego, alternando
entre el jugador maximizador y el jugador minimizador. En cada nivel, se evalúa el valor o la utilidad de los estados del
juego.

Minimax es un poderoso algoritmo que se puede utilizar para resolver una amplia variedad de problemas de
búsqueda de adversarios; pero es importante tener en cuenta las limitaciones del algoritmo, como su lentitud para
árboles de juego grandes y su dependencia de una función objetivo bien definida.
Técnicas de búsqueda óptima
Las características más representativas del algoritmo Minimax son:
1. Árbol de búsqueda: El algoritmo Minimax construye un árbol de búsqueda que representa todas las posibles secuencias
de movimientos para ambos jugadores. Cada nivel del árbol representa un turno de juego alternado entre los jugadores.
2. Evaluación de nodos hoja: En los nodos hoja del árbol de búsqueda, se evalúa el valor o la utilidad de ese estado del
juego. Este valor puede ser calculado utilizando una función de evaluación que refleje la calidad del estado para el jugador
maximizador.
3. Maximización y minimización: En los niveles impares del árbol (correspondientes al jugador maximizador), se busca el
valor máximo entre los nodos sucesores, ya que el jugador maximizador busca maximizar su ganancia. En los niveles pares
(correspondientes al jugador minimizador), se busca el valor mínimo, ya que el jugador minimizador busca minimizar la
ganancia del oponente.
4. Retroceso de valores: A medida que se recorre el árbol de búsqueda, los valores calculados en los nodos hoja se
retroceden hacia los nodos superiores del árbol. En cada nivel, se selecciona el mejor movimiento en función de los
valores máximos o mínimos, dependiendo del jugador.
5. Poda Alpha-Beta: Para mejorar la eficiencia del algoritmo Minimax, se utiliza la técnica de poda Alpha-Beta, que
descarta las ramas del árbol de búsqueda que no afectarán el resultado final. Esto permite reducir la cantidad de nodos
evaluados y acelerar el proceso de búsqueda.
Técnicas de búsqueda óptima
El funcionamiento del algoritmo Minimax se puede explicar de la siguiente manera:
1. Construcción del árbol de búsqueda: Se comienza con el estado inicial del juego y se generan todos los posibles
movimientos legales del jugador maximizador. Para cada uno de estos movimientos, se generan todas las posibles
respuestas del jugador minimizador, y así sucesivamente. De esta manera, se construye un árbol de búsqueda
completo que representa todas las secuencias de movimientos posibles.
2. Evaluación de los nodos hoja: En los nodos hoja del árbol de búsqueda, se evalúa el valor o la utilidad del estado
del juego. Este valor puede ser calculado utilizando una función de evaluación que refleje la calidad del estado para
el jugador maximizador. Por ejemplo, en un juego de ajedrez, se podría asignar un valor numérico a cada estado en
función de la posición de las piezas y las posibilidades de victoria.
3. Maximización y minimización: A medida que se recorre el árbol de búsqueda, en los niveles impares se busca el
valor máximo entre los nodos sucesores, ya que el jugador maximizador busca maximizar su ganancia. En los niveles
pares, se busca el valor mínimo, ya que el jugador minimizador busca minimizar la ganancia del oponente.
4. Retroceso de valores: A medida que se avanza hacia arriba en el árbol de búsqueda, los valores calculados en los
nodos hoja se retroceden hacia los nodos superiores. En cada nivel, se selecciona el mejor movimiento en función
de los valores máximos o mínimos, dependiendo del jugador. De esta manera, se va eligiendo la mejor secuencia de
movimientos posible para el jugador maximizador.
Técnicas de búsqueda óptima
Desventajas del algoritmo Minimax:
1. Complejidad temporal: El algoritmo Minimax puede ser computacionalmente costoso,
especialmente cuando el factor de ramificación es alto y el árbol de búsqueda es grande.
2. Espacio de búsqueda amplio: En juegos complejos, el tamaño del árbol de búsqueda puede
crecer exponencialmente, lo que dificulta la exploración exhaustiva.
3. Limitaciones en juegos con información imperfecta: En juegos donde los jugadores no tienen
información completa sobre el estado del juego, el algoritmo Minimax puede no ser adecuado,
ya que se basa en la suposición de información perfecta.
4. Dependencia de la función de evaluación: La calidad de los resultados obtenidos por el
algoritmo Minimax depende en gran medida de la precisión de la función de evaluación
utilizada.
5. Imposibilidad de lidiar con juegos infinitos: El algoritmo Minimax no puede manejar juegos
con un número infinito de movimientos o estados posibles.
Técnicas de búsqueda con adversarios
2. Algoritmo Alpha-Beta Pruning
La técnica de búsqueda por adversarios Alpha-beta pruning es un algoritmo utilizado en inteligencia
artificial para mejorar la eficiencia de la búsqueda en juegos de dos jugadores de suma cero, donde
uno busca maximizar su ganancia y el otro busca minimizarla.

El objetivo del algoritmo Alpha-beta pruning es reducir la cantidad de nodos evaluados en el árbol de
búsqueda, descartando ramas que no afectarán la elección del mejor movimiento.

El algoritmo Alpha-beta pruning se basa en la idea de que, si un nodo en el árbol de búsqueda tiene un
valor que ya no afectará la elección del mejor movimiento, entonces no es necesario explorar más a
fondo los nodos descendientes de ese nodo. Esto se logra mediante el uso de dos valores, llamados
"alfa" y "beta", que representan los límites inferiores y superiores, respectivamente, de los valores que
un jugador maximizador puede alcanzar. Alpha representa el mejor valor posible para el jugador que
maximiza, y beta representa el mejor valor posible para el jugador que minimiza
Técnicas de búsqueda con adversarios
Algunas características importantes de la técnica de búsqueda por adversarios Alpha-Beta Pruning:
1. Eficiencia de búsqueda: El Alpha-Beta Pruning permite realizar una exploración más eficiente del espacio
de búsqueda, ya que evita la evaluación innecesaria de nodos que no tienen impacto en la elección del
mejor movimiento.
2. Búsqueda exhaustiva: Aunque el Alpha-Beta Pruning reduce la cantidad de nodos evaluados, sigue
realizando una búsqueda exhaustiva del árbol de juego, lo que significa que encuentra la solución óptima
en juegos de suma cero.
3. Podas de ramas: Mediante el uso de dos valores, alfa y beta, se realizan podas en el árbol de búsqueda,
evitando la exploración de ramas que no contienen movimientos óptimos.
4. Orden de los movimientos: El orden en que se exploran los movimientos puede afectar la eficiencia del
algoritmo. Un buen orden de movimientos puede llevar a una mayor poda y, por lo tanto, a una mejora en
el rendimiento.
5. Complejidad temporal: La complejidad temporal del algoritmo Alpha-Beta Pruning depende en gran
medida de la estructura del árbol de búsqueda y del factor de ramificación del juego. En general, se espera
una mejora significativa en comparación con el algoritmo Minimax.
Técnicas de búsqueda con adversarios
El funcionamiento del algoritmo Alpha-beta pruning se puede describir en la siguiente forma:
1. Inicialización: Se establecen los valores iniciales de alfa y beta. Al comienzo de la búsqueda, alfa se
establece en menos infinito y beta se establece en más infinito.
2. Exploración del árbol de búsqueda: El algoritmo recorre el árbol de búsqueda de forma similar al
algoritmo Minimax, evaluando los nodos hoja y retrocediendo los valores hacia los nodos superiores.
3. Actualización de alfa y beta: Durante la exploración, los valores de alfa y beta se actualizan en cada nivel,
siguiendo las reglas de maximización y minimización. Alfa representa el mejor valor encontrado hasta el
momento para el jugador maximizador en el camino actual, mientras que beta representa el mejor valor
encontrado hasta el momento para el jugador minimizador en el camino actual.
4. Poda de nodos: En cada nivel, se realiza la poda de nodos que no se considerarán en la búsqueda,
basándose en los valores de alfa y beta. Si en algún punto se encuentra un nodo donde el valor de alfa es
mayor o igual que el valor de beta, se puede realizar la poda y se evita explorar el resto de los nodos en esa
rama.
5. Elección del mejor movimiento: Al finalizar la exploración del árbol, se elige el movimiento con el valor
más alto encontrado por el jugador maximizador.
Técnicas de búsqueda con adversarios
El algoritmo alfa-beta tiene varias ventajas, entre ellas:
1. Eficiencia: la poda alfa-beta puede mejorar significativamente la eficiencia
de la búsqueda minimax, especialmente para árboles de caza grandes. Alpha-
beta pruning reduce significativamente el número de nodos evaluados en
comparación con el algoritmo Minimax
2. Garantizado para encontrar la solución óptima: si existe una solución
óptima, la poda alfa-beta está garantizada para encontrarla, ya que es un
algoritmo minimax.
3. Flexible: la poda alfa-beta se puede utilizar para resolver una amplia
variedad de problemas de búsqueda de adversarios, incluidos juegos,
planificación y programación.
Técnicas de búsqueda con adversarios

Algunas de sus desventajas del algoritmo Alpha-beta pruning son:


1. Dependencia de la ordenación de movimientos: La eficiencia del
algoritmo puede depender en gran medida del orden en que se exploran
los movimientos en cada nivel del árbol de búsqueda. Si se eligen
movimientos subóptimos primero, la poda puede no ser efectiva y el
rendimiento se ve comprometido.
2. Complejidad en juegos con movimientos irregulares: En juegos donde
el número de movimientos posibles varía mucho entre los diferentes
estados, el algoritmo puede no ser tan eficiente debido a la dificultad
para predecir qué ramas deben podarse.
Técnicas de búsqueda con adversarios
3. Limitaciones en juegos con información imperfecta: El algoritmo Alpha-beta
pruning está diseñado para juegos de información completa, donde ambos jugadores
tienen acceso a toda la información del juego. En juegos de información imperfecta,
como el póker, se requieren técnicas más sofisticadas.
4. Dificultad en juegos con evaluación heurística compleja: Si la función de evaluación
utilizada para asignar valores a los estados del juego es muy compleja y costosa de
calcular, el algoritmo puede no proporcionar una mejora significativa en la eficiencia
de búsqueda.
5. Dificultad en juegos con múltiples jugadores: El algoritmo Alpha-beta pruning está
diseñado específicamente para juegos de dos jugadores. En juegos con más de dos
jugadores, como el ajedrez en equipo, se requieren extensiones o variantes del
algoritmo para aplicarlo adecuadamente.
Técnicas de búsqueda con adversarios
Ejemplos de aplicación del Alpha-Beta Pruning:
1. Juegos de mesa: El algoritmo Alpha-Beta Pruning se utiliza ampliamente en juegos de mesa como
el ajedrez, el go, las damas y el backgammon, donde se busca encontrar el mejor movimiento en
cada turno.
2. Inteligencia artificial en juegos: El algoritmo se utiliza en el desarrollo de agentes de inteligencia
artificial que juegan juegos de estrategia, como los videojuegos en tiempo real, para tomar
decisiones óptimas.
3. Planificación y optimización: El Alpha-Beta Pruning puede aplicarse en problemas de planificación
y optimización donde se busca encontrar la mejor solución dentro de un espacio de búsqueda
amplio.
4. Robótica: En robótica, el algoritmo se utiliza para la toma de decisiones en tiempo real, como en el
control de movimientos y la planificación de rutas.
5. Búsqueda en árboles de decisión: El algoritmo también se aplica en la búsqueda en árboles de
decisión en diferentes dominios, como el diagnóstico médico y el análisis financiero.
Técnicas de búsqueda con adversarios
3. Algoritmo Monte Carlo Tree Search (MCTS)
El Monte Carlo Tree Search (MCTS) es un algoritmo de búsqueda con adversarios que se
utiliza en juegos de estrategia complejos como el ajedrez, el go y el póker, donde la
búsqueda exhaustiva no es factible debido a la gran cantidad de posibles movimientos. A
diferencia de otros algoritmos, como el Minimax, el MCTS no requiere una función de
evaluación heurística ni una evaluación exhaustiva de todo el árbol de búsqueda. En
cambio, se basa en el muestreo aleatorio del árbol de búsqueda y la exploración selectiva
para construir un árbol de búsqueda incrementalmente usando un modelo estadístico para
estimar el valor de cada nodo

El algoritmo MCTS no es determinista, lo que significa que no garantiza encontrar la


solución óptima; aunque se ha demostrado que MCTS es muy eficaz para una amplia
variedad de problemas de búsqueda de adversarios.
Técnicas de búsqueda con adversarios
Características importantes del MCTS:
1. No requiere una evaluación heurística: A diferencia de otros algoritmos, el MCTS no depende de una función de
evaluación heurística específica. Puede aplicarse a juegos con reglas complejas y desconocidas.

2. Adaptabilidad a juegos complejos: El MCTS se adapta bien a juegos con espacios de búsqueda grandes y
complejos, donde la exploración exhaustiva no es viable.

3. Capacidad de aprendizaje: A medida que se realizan más iteraciones, el MCTS puede aprender y mejorar sus
estimaciones de los valores de los nodos, lo que conduce a una mejor toma de decisiones.

4. Manejo de información imperfecta: El MCTS es capaz de manejar juegos con información imperfecta, donde los
jugadores no conocen todos los detalles del estado del juego en cada momento.

5. Eficiencia computacional: El MCTS es relativamente eficiente en términos de tiempo de ejecución, ya que solo se
exploran los nodos necesarios y se evita la exploración de áreas no prometedoras del árbol de búsqueda.
Técnicas de búsqueda con adversarios
El proceso de MCTS se puede dividir en cuatro pasos principales: selección, expansión, simulación y retropropagación.

1. Selección: Comienza en la raíz del árbol de búsqueda y selecciona recursivamente los nodos basados en una estrategia de
selección. El objetivo es elegir nodos que maximicen la exploración y la explotación, lo que significa seleccionar nodos con un
equilibrio entre las recompensas previas y la cantidad de veces que se han visitado.

2. Expansión: Una vez que se alcanza un nodo que no ha sido completamente expandido, se selecciona un movimiento no
explorado y se expande agregando un nuevo nodo al árbol de búsqueda.

3. Simulación: A partir del nuevo nodo expandido, se realiza una simulación de juego aleatoria hasta alcanzar un estado terminal.
Durante la simulación, los movimientos se eligen de manera aleatoria hasta que se alcance un estado final.

4. Retropropagación: Una vez finalizada la simulación, se retropropagan las recompensas resultantes desde el nodo expandido
hasta la raíz del árbol. Los valores de recompensa se acumulan y se actualizan en los nodos visitados durante la selección.

El proceso de selección, expansión, simulación y retropropagación se repite en cada iteración del algoritmo MCTS, con el objetivo
de mejorar la estimación de los valores de los nodos y, finalmente, encontrar el movimiento óptimo.
Técnicas de búsqueda con adversarios
Algunas de las ventajas que brinda MCTS son:

1. Adaptabilidad a juegos complejos: El MCTS se adapta bien a juegos con espacios de búsqueda grandes y complejos,
donde la exploración exhaustiva no es viable.

2. Capacidad de aprendizaje: El algoritmo MCTS puede aprender y mejorar sus estimaciones de los valores de los nodos a
medida que se ejecutan más iteraciones, lo que conduce a una mejor toma de decisiones.

3. No requiere una función de evaluación heurística: A diferencia de otros enfoques, el MCTS no depende de una función
de evaluación heurística específica, lo que lo hace más generalizable y aplicable a una variedad de juegos y problemas.

4. Puede manejar información imperfecta: El MCTS es capaz de manejar juegos con información imperfecta, donde los
jugadores no conocen todos los detalles del estado del juego en cada momento.

5. Eficiencia computacional: El MCTS es relativamente eficiente en términos de tiempo de ejecución, ya que solo se
exploran los nodos necesarios y se evita la exploración de áreas no prometedoras del árbol de búsqueda.
Técnicas de búsqueda con adversarios
Algunas de las desventajas que brinda MCTS son:

1. Necesita un gran número de iteraciones: El rendimiento del MCTS puede depender del número de iteraciones
realizadas. En algunos casos, se requiere un número significativo de iteraciones para obtener resultados óptimos.

2. No siempre garantiza la solución óptima: Aunque el MCTS busca mejorar su estimación de los valores de los nodos, no
siempre garantiza la solución óptima debido a la naturaleza estocástica de las simulaciones.

3. Sensible a la configuración de parámetros: Los resultados del MCTS pueden variar según la configuración de parámetros,
como el número de iteraciones o la estrategia de selección utilizada.

4. Requiere una representación adecuada del juego: El rendimiento del MCTS depende en gran medida de la
representación del juego y la forma en que se generan los movimientos aleatorios durante la simulación.

5. Puede ser difícil de implementar: La implementación correcta y eficiente del MCTS puede requerir un conocimiento
técnico y una comprensión profunda del algoritmo.
Técnicas de búsqueda con adversarios
Ejemplos en los que la Búsqueda por adversarios Monte Carlo Tree Search (MCTS) se utiliza de
forma específica:

1. Juego de Go: El juego de Go es un juego de estrategia complejo en el que el MCTS ha


demostrado ser altamente efectivo. El MCTS se utilizó en el programa AlphaGo, que derrotó al
campeón mundial de Go en 2016. El MCTS permite explorar movimientos y posiciones
prometedores en el vasto espacio de búsqueda del Go, lo que resulta en una toma de
decisiones estratégicas más precisa.

2. Ajedrez: El MCTS también se ha aplicado al ajedrez, otro juego de estrategia desafiante. El


enfoque MCTS ha mejorado significativamente el rendimiento de los motores de ajedrez,
permitiendo una búsqueda más eficiente y una evaluación más precisa de las posiciones en el
tablero.
Técnicas de búsqueda con adversarios
3. Juegos de mesa modernos: El MCTS se utiliza ampliamente en juegos de mesa modernos, como
el Carcassonne y el Ticket to Ride. Estos juegos tienen reglas y estrategias complejas, y el MCTS
permite a los jugadores virtuales evaluar las opciones de movimiento y tomar decisiones basadas
en la exploración aleatoria y la retroalimentación acumulada.

4. Juegos de estrategia en tiempo real: El MCTS se ha aplicado con éxito en juegos de estrategia en
tiempo real, como el juego StarCraft II. En este tipo de juegos, donde el tiempo y la incertidumbre
son factores clave, el MCTS ayuda a los agentes virtuales a tomar decisiones tácticas y estratégicas
basadas en la simulación y la retroalimentación de múltiples posibles movimientos.

5. Robótica y planificación de movimientos: Además de los juegos, el MCTS también encuentra


aplicaciones en robótica y planificación de movimientos. Por ejemplo, se utiliza para planificar rutas
y acciones en entornos complejos, como la navegación autónoma de robots en espacios
desconocidos.
Técnicas de búsqueda con adversarios
4. Algoritmo Expectimax
La Búsqueda por adversarios Expectimax es una técnica utilizada en inteligencia
artificial para tomar decisiones en juegos y otros escenarios con adversarios y
estados de incertidumbre. A diferencia del enfoque minimax que considera que los
adversarios siempre toman las mejores decisiones posibles, el Expectimax asume
que los adversarios pueden tomar decisiones de forma aleatoria o estocástica.

La Búsqueda por adversarios Expectimax se basa en la idea de maximizar la


ganancia esperada en lugar de garantizar la máxima ganancia posible. En lugar de
evaluar todos los posibles movimientos y estados del juego como en el enfoque
minimax, el Expectimax realiza una exploración estocástica del árbol de búsqueda.
Técnicas de búsqueda con adversarios
Expectimax es una generalización de minimax. Minimax funciona buscando recursivamente en todos
los estados posibles del juego y evaluando cada estado en función del objetivo del jugador. Luego, el
algoritmo elige el movimiento que conduce al mejor resultado posible para el jugador. Expectimax
funciona de manera similar, pero considera la posibilidad de que el oponente realice un movimiento
aleatorio.

Para hacer esto, Expectimax calcula el valor esperado de cada movimiento, donde el valor esperado es
un promedio ponderado de los posibles resultados. El peso de cada resultado está determinado por la
probabilidad de que ese resultado ocurra. Por ejemplo, si hay un 50 % de probabilidad de que el
oponente realice un movimiento aleatorio que resulte en una pérdida, y un 50 % de probabilidad de
que el oponente realice un movimiento aleatorio que resulte en una victoria, entonces el valor
esperado del movimiento es 0

Hay que resaltar que Expectimax también es más costoso computacionalmente que minimax.
Técnicas de búsqueda con adversarios
Características importantes de la Búsqueda por adversarios Expectimax:

1. Incertidumbre y aleatoriedad: El Expectimax tiene en cuenta la incertidumbre y la aleatoriedad inherentes en los


escenarios de búsqueda con adversarios. Esto permite modelar mejor situaciones donde los adversarios pueden
tomar decisiones aleatorias o estocásticas.
2. Expectativa de ganancia: En lugar de buscar la máxima ganancia posible, el Expectimax se centra en maximizar la
ganancia esperada. Considera las probabilidades de los diferentes movimientos y calcula la ganancia promedio
ponderada.
3. Exploración estocástica del árbol de búsqueda: A diferencia del enfoque minimax que explora todas las
ramificaciones del árbol de búsqueda, el Expectimax realiza una exploración estocástica, teniendo en cuenta las
posibles acciones aleatorias de los adversarios.
4. Propagación de valores esperados: Durante la exploración del árbol de búsqueda, el Expectimax evalúa los valores
esperados de los nodos y los propaga hacia arriba, considerando las probabilidades y las acciones de los adversarios.
5. Flexibilidad en la modelización: El Expectimax puede aplicarse a una amplia gama de escenarios y juegos con
incertidumbre y adversarios que toman decisiones estocásticas. Es adaptable a diferentes dominios y se puede ajustar
según las necesidades del problema.
Técnicas de búsqueda con adversarios
Una forma simple de describir el Funcionamiento de la Búsqueda por adversarios Expectimax es la siguiente:

1. Construcción del árbol de búsqueda: Se crea un árbol de búsqueda que representa las diferentes jugadas y
estados posibles. Cada nodo del árbol representa un estado del juego y las aristas representan las acciones que se
pueden tomar.
2. Evaluación de los nodos terminales: Se evalúan los nodos terminales del árbol, que corresponden a los estados
finales del juego. Se asigna un valor de utilidad a cada nodo terminal basado en la ganancia o pérdida en ese
estado.
3. Exploración estocástica del árbol: Durante la exploración del árbol de búsqueda, se consideran las posibles
acciones aleatorias de los adversarios. En cada nivel del árbol, se selecciona una acción aleatoria en función de las
probabilidades definidas.
4. Propagación de valores esperados: Los valores esperados se propagan hacia arriba en el árbol de búsqueda,
teniendo en cuenta las probabilidades de las acciones aleatorias y las ganancias esperadas.
5. Selección de la mejor acción: Una vez evaluados y propagados los valores esperados en el árbol de búsqueda,
se selecciona la acción con el valor de utilidad más alto en el nodo raíz como la mejor acción a tomar.
Técnicas de búsqueda con adversarios
Ventajas de la Búsqueda por adversarios Expectimax:

1. Manejo de incertidumbre: El Expectimax permite tomar decisiones en escenarios donde existe


incertidumbre y adversarios que toman decisiones aleatorias o estocásticas.
2. Modelización flexible: Se puede aplicar a una amplia gama de escenarios y juegos con
diferentes niveles de incertidumbre.
3. Eficiencia en espacios de búsqueda grandes: El Expectimax realiza una exploración estocástica
del árbol de búsqueda, lo que reduce el espacio de búsqueda y permite una mayor eficiencia en
problemas complejos.
4. Adaptabilidad a diferentes dominios: Puede adaptarse a diferentes dominios y ajustarse según
las necesidades específicas del problema.
5. Consideración de ganancias esperadas: El enfoque en la ganancia esperada permite tomar
decisiones más racionales y realistas en escenarios con incertidumbre.
Técnicas de búsqueda con adversarios
Desventajas de la Búsqueda por adversarios Expectimax:

1. Estimaciones de probabilidad y utilidad: La precisión de los resultados del Expectimax depende


de las estimaciones de probabilidad y utilidad proporcionadas. Si estas estimaciones son inexactas,
los resultados pueden ser subóptimos.
2. Espacio de búsqueda: A medida que aumenta la complejidad del problema y el tamaño del árbol
de búsqueda, el Expectimax puede requerir una gran cantidad de recursos computacionales.
3. Dificultad en la modelización: La modelización de probabilidades y acciones aleatorias de los
adversarios puede ser compleja y requerir un conocimiento profundo del dominio.
4. Dependencia de la exploración estocástica: La exploración estocástica puede llevar a resultados
subóptimos si no se realiza una exploración suficiente del árbol de búsqueda.
5. Sensibilidad a la calidad de las estimaciones: La calidad de las estimaciones de probabilidad y
utilidad afecta directamente la calidad de las decisiones tomadas por el Expectimax.
Técnicas de búsqueda con adversarios
Ejemplos de aplicación específica de la Búsqueda por adversarios Expectimax:

1. Juego de póker: El póker es un juego de cartas con elementos de incertidumbre y estrategia. La Búsqueda por
adversarios Expectimax se utiliza para tomar decisiones durante el juego, considerando las cartas propias, las acciones de
los oponentes y las posibles combinaciones de cartas futuras. Ayuda a evaluar las probabilidades de éxito de diferentes
movimientos y a tomar decisiones óptimas en función de las ganancias esperadas.

2. Juego de backgammon: El backgammon es un juego de mesa que implica el movimiento de fichas sobre un tablero y la
toma de decisiones estratégicas. En este juego, la Búsqueda por adversarios Expectimax se utiliza para evaluar las
diferentes posiciones del tablero, considerando las posibles jugadas de los oponentes y las probabilidades de tirar ciertos
números en los dados. Ayuda a tomar decisiones de movimiento óptimas para maximizar la ganancia esperada.

3. Planificación en juegos de estrategia en tiempo real: En juegos de estrategia en tiempo real como StarCraft o Age of
Empires, la Búsqueda por adversarios Expectimax se utiliza para la toma de decisiones de planificación. Ayuda a evaluar
diferentes acciones posibles, considerando las acciones de los oponentes, la incertidumbre en la exploración del mapa y
las consecuencias a largo plazo de las decisiones tomadas.
Técnicas de búsqueda con adversarios
4. Sistemas de razonamiento automatizado en medicina: En el campo de la medicina, la Búsqueda por
adversarios Expectimax se utiliza para ayudar en la toma de decisiones en diagnósticos y tratamientos. Se
puede aplicar en sistemas expertos que consideran diferentes opciones de diagnóstico o tratamiento,
evaluando los riesgos y beneficios de cada opción y teniendo en cuenta la incertidumbre asociada con los
resultados de las pruebas médicas y las respuestas de los pacientes.

5. Planificación de rutas en sistemas de transporte: En aplicaciones de planificación de rutas en sistemas de


transporte, como el enrutamiento de vehículos o la planificación de vuelos, la Búsqueda por adversarios
Expectimax se utiliza para encontrar la mejor ruta considerando las condiciones de tráfico, las acciones de
otros vehículos y las incertidumbres en los tiempos de viaje. Ayuda a tomar decisiones de enrutamiento
óptimas que minimizan el tiempo de viaje o maximizan otros objetivos deseados.

Expectimax también se utiliza en escenarios de planificación en tiempo real, donde se deben tomar
decisiones considerando las incertidumbres y las posibles acciones de los adversarios, con información parcial
y probabilidades.
Técnicas de búsqueda con adversarios
5. Algoritmo SSS* (Simplified Satisfiability Search):
La técnica de Búsqueda por adversarios SSS* (Simplified Satisfiability Search) es un algoritmo utilizado
en inteligencia artificial para resolver problemas de búsqueda en entornos con adversarios. Se basa en
el concepto de satisfactibilidad de una fórmula lógica para encontrar soluciones óptimas.

La Búsqueda por adversarios SSS* se utiliza comúnmente en juegos de dos jugadores con información
perfecta, como el ajedrez o el go. Su objetivo principal es encontrar la mejor jugada posible en un
estado dado, considerando las posibles respuestas del oponente y las acciones posteriores. A
diferencia de otros algoritmos de búsqueda, SSS* no explora todo el espacio de búsqueda, sino que se
enfoca en un subconjunto relevante de jugadas y jugadores.

El algoritmo SSS* utiliza técnicas de búsqueda en árboles para evaluar y comparar diferentes estados
del juego. A medida que se expande el árbol de búsqueda, se aplican heurísticas y algoritmos de poda
para reducir el espacio de búsqueda y mejorar la eficiencia del algoritmo.
Técnicas de búsqueda con adversarios
SSS* es una versión simplificada del algoritmo de poda alfa-beta. Alfa-beta es un
algoritmo más general que se puede usar para resolver una variedad más amplia de
problemas, pero también es más costoso computacionalmente. SSS* está diseñado para
ser más eficiente para los problemas de búsqueda adversarios, pero es posible que no
siempre encuentre la solución óptima.

La función heurística utilizada por SSS* se denomina heurística del adversario. La


heurística del adversario estima el valor de un nodo desde la perspectiva del oponente.

La heurística del adversario se utiliza para podar el árbol de búsqueda. Los nodos que se
estima que son malos desde la perspectiva del oponente se podan. Esto ayuda a SSS* a
encontrar buenas soluciones más rápidamente.
Técnicas de búsqueda con adversarios
A continuación, se describen las características más importantes de la técnica SSS*:

1. Satisfacibilidad: SSS* utiliza el concepto de satisfacibilidad de una fórmula lógica para determinar si un
estado del juego es alcanzable y qué acciones llevarán a un estado objetivo.
2. Reducción del espacio de búsqueda: SSS* aplica técnicas de poda y optimización para reducir el espacio
de búsqueda y enfocarse en las jugadas más prometedoras, lo que mejora la eficiencia del algoritmo.
3. Evaluación heurística: SSS* utiliza funciones heurísticas para evaluar la calidad de los estados del juego
y guiar la exploración. Estas funciones asignan valores a los estados en función de su potencial para
alcanzar el objetivo.
4. Actualización de valores: A medida que se expande el árbol de búsqueda, los valores de los nodos se
actualizan teniendo en cuenta las respuestas del oponente y las acciones posteriores. Esto permite tomar
decisiones óptimas considerando las posibles jugadas del oponente.
5. Garantía de optimalidad: SSS* garantiza encontrar una solución óptima si se cumplen ciertas
condiciones de optimalidad, como la completitud y la consistencia.
Técnicas de búsqueda con adversarios
La Búsqueda por adversarios SSS*:trabaja de la siguiente manera:

1. Inicialización: Se establece el estado inicial del juego y se crea un árbol de búsqueda con un único nodo raíz que
representa este estado.
2. Expansión: Se expanden los nodos del árbol de búsqueda de manera iterativa, considerando las jugadas posibles tanto
del jugador actual como del oponente. Se generan nuevos nodos para representar los diferentes estados del juego.
3. Evaluación: Se evalúan los nodos del árbol de búsqueda utilizando una función heurística que asigna un valor a cada
estado del juego. Esta función se basa en el conocimiento específico del dominio y ayuda a determinar la calidad de cada
movimiento.
4. Podado: Se aplican técnicas de poda para reducir el espacio de búsqueda y evitar explorar ramas innecesarias del árbol.
Esto se logra mediante la eliminación de nodos que no son relevantes para la solución óptima.
5. Retroceso: A medida que se explora el árbol de búsqueda, se actualizan los valores de los nodos superiores en función
de los valores de los nodos inferiores. Esto permite tomar decisiones óptimas considerando las respuestas del oponente.
6. Selección de movimiento: Una vez que se completa la exploración del árbol de búsqueda, se selecciona el movimiento
con el valor máximo para el jugador actual.
Técnicas de búsqueda con adversarios
Ventajas de SSS*:

1. Eficiencia: SSS* reduce el espacio de búsqueda y evita explorar caminos irrelevantes, lo


que mejora la eficiencia del algoritmo.
2. Óptimo: SSS* garantiza encontrar una solución óptima en juegos de dos jugadores con
información perfecta, siempre y cuando se cumplan las condiciones de optimalidad.
3. Adaptabilidad: SSS* se puede adaptar a diferentes juegos y dominios al ajustar las
funciones heurísticas y los criterios de evaluación.
4. Exploración selectiva: SSS* se enfoca en áreas más prometedoras del espacio de
búsqueda, lo que permite encontrar soluciones óptimas de manera más eficiente.
5. Flexibilidad: SSS* puede manejar diferentes tipos de juegos, como juegos de suma cero
y juegos con información imperfecta.
Técnicas de búsqueda con adversarios
Algunos criterios para comparar las cinco estrategias principales de búsqueda por adversario son:

1. Tipo de algoritmo: Describe el tipo de algoritmo utilizado en cada estrategia.


2. Complejidad temporal: Indica la complejidad temporal de cada estrategia en función de la profundidad del árbol de
juego.
3. Complejidad espacial: Indica la complejidad espacial de cada estrategia en función de la profundidad del árbol de juego
o la cantidad de nodos.
4. Utilización de memoria: Describe cómo cada estrategia utiliza la memoria.
5. Exploración del espacio de búsqueda: Indica cómo cada estrategia explora el espacio de búsqueda.
6. Manejo de información parcial: Indica si cada estrategia puede manejar juegos con información parcial.
7. Utilización de heurísticas: Indica si cada estrategia utiliza una función de evaluación heurística para estimar la calidad
de un estado de juego.
8. Manejo de incertidumbre: Describe cómo cada estrategia maneja la incertidumbre en los movimientos del adversario.
9. Aplicabilidad a juegos complejos: Indica la aplicabilidad de cada estrategia a juegos complejos.
10. Necesidad de conocimiento experto: Indica si cada estrategia requiere conocimiento experto adicional más allá de la
función de evaluación heurística.
Técnicas de búsqueda con adversarios
Criterio Minimax Alpha-beta pruning Monte Carlo Tree Search (MCTS) Expectimax SSS*

Algoritmo basado en la simulación de juegos


Algoritmo de búsqueda exhaustiva que considera Variante del algoritmo Minimax que realiza poda de Algoritmo que considera los movimientos del Algoritmo de búsqueda que combina
Tipo de algoritmo aleatorios para explorar el árbol de
el adversario óptimo. ramas no prometedoras. adversario como eventos aleatorios. heurísticas y búsqueda exhaustiva.
búsqueda.

Mejora el tiempo de ejecución del Minimax Depende de la cantidad de simulaciones Depende del tamaño del problema y puede
Complejidad temporal Exponencial en la profundidad del árbol de juego. Depende de la profundidad del árbol de juego.
mediante la poda de ramas no prometedoras. realizadas. ser exponencial en algunos casos.

Exponencial en la cantidad de variables y


Lineal en la cantidad de nodos del árbol de
Complejidad espacial Exponencial en la profundidad del árbol de juego. Lineal en la profundidad del árbol de juego. Exponencial en la profundidad del árbol de juego. restricciones en el problema de satisfacción de
juego.
restricciones.

Requiere almacenar todo el árbol de juego en Requiere almacenar una parte del árbol de juego en Almacena información relevante del árbol de Requiere almacenar todo el árbol de juego en Requiere almacenar información de las
Utilización de memoria
memoria. memoria. juego. memoria. variables y restricciones en memoria.

Utiliza simulaciones de juegos aleatorios para Explora todas las ramas del árbol de juego
Explora todas las ramas del árbol de juego de Realiza poda de ramas no prometedoras, Combina heurísticas y búsqueda exhaustiva
Exploración del espacio de búsqueda explorar de manera eficiente el espacio de considerando los movimientos del adversario
forma exhaustiva. reduciendo la exploración. para explorar el espacio de búsqueda.
búsqueda. como eventos aleatorios.

Adecuado para juegos con información parcial, ya


No es adecuado para juegos con información No es adecuado para juegos con información Puede adaptarse a juegos con información No es adecuado para problemas con
Adaptabilidad a la información parcial que considera los movimientos del adversario
parcial. parcial. parcial mediante la exploración aleatoria. información parcial.
como eventos aleatorios.

No utiliza directamente una función de


Utiliza una función de evaluación heurística para Utiliza una función de evaluación heurística para Utiliza una función de evaluación heurística para Utiliza heurísticas para guiar la búsqueda en el
Utilización de heurísticas evaluación heurística, sino que se basa en la
estimar la calidad de un estado de juego. estimar la calidad de un estado de juego. estimar la calidad de un estado de juego. espacio de soluciones.
simulación de juegos aleatorios.

Maneja la incertidumbre considerando los


No maneja la incertidumbre en los movimientos No maneja la incertidumbre en los movimientos del Maneja la incertidumbre a través de la
Manejo de incertidumbre movimientos del adversario como eventos No maneja la incertidumbre.
del adversario. adversario. simulación de juegos aleatorios.
aleatorios.

Adecuado para juegos complejos con


Adecuado para juegos de información perfecta Adecuado para juegos de información perfecta con Adecuado para juegos complejos con espacio de Adecuado para problemas de satisfacción de
Aplicabilidad a juegos complejos espacio de búsqueda grande y con
con espacio de búsqueda manejable. espacio de búsqueda manejable. búsqueda grande y con incertidumbre. restricciones complejos.
incertidumbre.

No requiere conocimiento experto adicional más No requiere conocimiento experto adicional más Requiere conocimiento experto para definir la Requiere conocimiento experto para definir las
Necesidad de conocimiento experto No requiere conocimiento experto adicional.
allá de la función de evaluación heurística. allá de la función de evaluación heurística. función de evaluación heurística. heurísticas y restricciones.
Técnicas de búsqueda
Algunos criterios para comparar las estrategias de búsqueda que se han estudiado son:
1. Complejidad temporal: La complejidad temporal indica cuánto tiempo tarda el algoritmo en encontrar una solución.
2. Complejidad espacial: La complejidad espacial se refiere a la cantidad de memoria requerida por el algoritmo.
3. Calidad de la solución: La calidad de la solución se refiere a qué tan cerca de la solución óptima puede llegar el algoritmo.
4. Información del dominio: La información del dominio se refiere al conocimiento adicional requerido por el algoritmo para
tomar decisiones.
5. Toma de decisiones: La toma de decisiones se refiere a cómo el algoritmo selecciona los siguientes pasos en la búsqueda.
6. Aplicabilidad: La aplicabilidad se refiere a los tipos de problemas en los que se puede utilizar cada estrategia.
7. Tiempo de ejecución: El tiempo de ejecución se refiere a la velocidad de procesamiento del algoritmo.
8. Ejemplos de aplicación: Los ejemplos de aplicación se refieren a los tipos de problemas en los que se utilizan
comúnmente cada estrategia.
9. Complejidad de implementación: La complejidad de implementación se refiere a la dificultad de implementar cada
estrategia.
10. Escalabilidad: La escalabilidad se refiere a la capacidad del algoritmo para manejar problemas de diferentes tamaños.
Técnicas de búsqueda
Criterio Búsqueda a Ciega Heurística Búsqueda Óptima Búsqueda por Adversario

Complejidad temporal Alta Variable Baja Variable

Complejidad espacial Baja Baja Baja Baja

Solución subóptima o sin garantía de Solución subóptima o sin garantía de Solución subóptima o sin garantía de
Calidad de la solución Solución óptima
optimalidad optimalidad optimalidad

Puede requerir información específica Puede requerir información específica del


Información del dominio No requiere información adicional No requiere información adicional
del dominio dominio

Basada únicamente en la exploración del Basada en estrategia para maximizar las


Toma de decisiones Basada en evaluaciones heurísticas Basada en estimaciones de calidad
espacio posibilidades de ganar

Problemas en los que se puede definir


Aplicabilidad Problemas sin información específica Problemas bien definidos Juegos y problemas de toma de decisiones
una heurística

Tiempo de ejecución Variable Variable Variable Variable

Escalabilidad Limitada Variable Buena Buena

Complejidad de implementación Relativamente simple Variable Complejidad variable Complejidad variable


Técnicas de búsqueda
Una breve explicación de los criterios de comparación por técnica de búsqueda sería la siguiente:
1. Complejidad temporal: Las estrategias óptimas suelen tener la menor complejidad
temporal, seguidas por las heurísticas y las de búsqueda a ciega, mientras que las de
búsqueda por adversario dependen de la complejidad del juego y la estrategia del
oponente.
2. Complejidad espacial: Las estrategias óptimas suelen tener la menor complejidad espacial,
seguidas por las heurísticas y las de búsqueda a ciega, mientras que las de búsqueda por
adversario también dependen de la complejidad del juego y la estrategia del oponente.
3. Calidad de la solución: Las estrategias óptimas garantizan la solución óptima, mientras que
las heurísticas y las de búsqueda a ciega pueden proporcionar soluciones subóptimas. Las
estrategias de búsqueda por adversario dependen de la estrategia del oponente y pueden
no alcanzar la solución óptima.
Técnicas de búsqueda
4. Información del dominio La información del dominio se refiere al conocimiento adicional
requerido por el algoritmo para tomar decisiones. Las estrategias de búsqueda a ciega no
requieren información adicional, mientras que las heurísticas y las de búsqueda por adversario
pueden requerir información específica del dominio. Las estrategias óptimas no requieren
información adicional.
5. Toma de decisiones: Las estrategias de búsqueda a ciega se basan únicamente en la exploración
del espacio de búsqueda, las heurísticas se basan en la evaluación heurística de los estados, las
estrategias óptimas se basan en la estimación de la calidad de los estados, y las estrategias de
búsqueda por adversario se basan en la estrategia que maximice las posibilidades de ganar
contra el oponente.
6. Aplicabilidad: Las estrategias de búsqueda a ciega son adecuadas para problemas sin información
específica, las heurísticas son útiles cuando se puede definir una función heurística para guiar la
búsqueda, las estrategias óptimas son adecuadas para problemas bien definidos, y las estrategias
de búsqueda por adversario son aplicables en juegos y problemas de toma de decisiones.
Técnicas de búsqueda
7. Tiempo de ejecución: Las estrategias de búsqueda a ciega pueden tener un tiempo de ejecución
rápido o lento dependiendo del espacio de búsqueda, mientras que las heurísticas, las
estrategias óptimas y las de búsqueda por adversario pueden tener tiempos de ejecución
variables según la implementación específica.
8. Ejemplos de aplicación: Las estrategias de búsqueda a ciega se utilizan para resolver laberintos,
búsqueda de palabras, entre otros. Las heurísticas se aplican en la resolución de puzzles, juegos
de estrategia, entre otros. Las estrategias óptimas se utilizan en problemas matemáticos y las
estrategias de búsqueda por adversario se aplican en juegos como Ajedrez, Go, Poker,
Backgammon, entre otros.
9. Complejidad de implementación: Las estrategias de búsqueda a ciega suelen ser simples y
fáciles de implementar, mientras que las heurísticas pueden ser más complejas dependiendo de
la heurística específica utilizada. Las estrategias óptimas pueden ser complejas debido a la
búsqueda exhaustiva requerida, y las estrategias de búsqueda por adversario pueden ser
complejas debido a la estrategia del oponente que se debe considerar.
Técnicas de búsqueda
10. Escalabilidad: Las estrategias de búsqueda a ciega y las heurísticas pueden tener
limitaciones en la escalabilidad debido al tamaño del espacio de búsqueda o la
complejidad de la función heurística. Las estrategias óptimas y las de búsqueda
por adversario pueden adaptarse mejor a problemas más grandes, aunque la
complejidad puede aumentar.

Estos criterios son una comparación general y brindan una visión simplificada de las
características de cada estrategia de búsqueda. La selección de parámetros de interés
pueden variar dependiendo del contexto y la implementación específica. En la
práctica, se debe considerar que pueden evaluarse otras opciones al momento de
comparar las estrategias de búsqueda dependiendo del problema y su
implementación.
Taller de Discusión:
La búsqueda de datos en línea con IA

Duración.
• 1 Sesión de clases (2 horas).

Generales.
• Dada la creciente cantidad de información disponible en línea, analice
qué elementos deben ser considerados para facilitar su acceso y uso
• Evalúe que beneficio brindan las técnicas de búsqueda de IA para
mejorar el filtrado y análisis avanzado de datos en gran volumen sobre
los procesos tradicionales
• Entregue un reporte en grupo en formato word o pdf que analice si a
pesar de la diversidad de fuentes y la falta de regulación de los
contenidos en internet, la IA puede lograr búsqueda más efectivas de
datos en línea

Modalidad.
• Taller de Discusión Grupal.
Taller de Discusión:
La búsqueda de datos en línea con IA

Duración.
• 1 Sesión de clases (2 horas).

Generales.
• Cada estudiante debe brindar su opinión dentro de la sesión de discusión o en
su defecto, debe compartir su punto de vista dentro del informe que se
entregue como constancia de participación.
• Se insta a que todas las participaciones estén alineadas al tema de propuesto.
Son bienvenidos los ejemplos o las referencias prácticas para aclarar cualquier
concepto que se quiera debatir
• Se busca una discusión basada en criterios éticos y apegada al tema de interés,
que propicie un debate de altura y fortalezca el crecimiento de los
participantes.

Modalidad.
• Taller de Discusión Grupal.
Taller de Discusión:
La búsqueda de datos en línea con IA

Tome Nota al Final del Tema


1. Aún tiene oportunidad de realizar la prueba evaluativa inicial.
Recuerde que ésta acción es calificada por su participación
2. Recuerde entregar los resultados del caso en grupo y realizar las
participaciones individuales
3. Recuerde realizar el ensayo individual del tema desarrollado y
entregarlo en la plataforma
4. Recuerde realizar el parcial individual del tema desarrollado
5. Recuerde entregar los avances del proyecto en grupo
6. Procure cumplir con los tiempos establecidos para las diferentes
entregas
Nota: Cualquier duda o inquietud la pueden canalizar por las vías que se han dispuesto para el desarrollo
del curso

También podría gustarte