You are on page 1of 40

Universidad Gran Mariscal de Ayacucho

Núcleo Ciudad Bolívar


Facultad de ingeniería
Escuela de ingeniería
Ingeniería informática
Semestre VII
“INTELIGENCIA ARTIFICIAL”
Unidad II

“Procedimientos de
búsquedas”
UNIDAD 2

ALUMNO: Anyelo Carmelo Ruiz Noto, CI: 27.490.440

Ciudad Bolívar – Estado Bolívar, 04/2019


INTRODUCCIÓN
A medida que se profundiza en el conocimiento de la Inteligencia artificial, tarde o
temprano hemos de considerar que la “búsqueda” es un procedimiento que está
relativamente vinculado a la esencia de ésta rama informática. La solución de problemas
de forma mecanizada va transcendiendo paulatinamente a medida que se aplica, en
teoría, funciones homólogas del comportamiento humano y su proceso racional al
sistema experto, de manera que sean eficientes las acciones emuladas y logren
eficazmente el objetivo determinado. No obstante, un proceso de búsqueda puede variar
en función del objetivo o problema a solucionar. En Inteligencia Artificial (IA) los términos
resolución de problemas y búsqueda se refieren a un núcleo fundamental 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
estas ideas generales aparecen en la práctica totalidad de los sistemas inteligentes,
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.

Durante la última década, una variedad de programas heurísticos, comúnmente


llamados sistemas expertos, han sido escritos para resolver problemas en diversas
áreas de la ciencia, ingeniería, negocios y medicina. Desarrollar estos programas implica
satisfacer un conjunto de requisitos interactivos: seleccionar el área de aplicación y el
problema específico que se va a resolver, limitar el problema para que sea
computacional y financieramente manejable, e implementar un programa prototipo, para
mencionar algunas preocupaciones obvias. Con experiencia continua, se han
desarrollado una serie de entornos de programación o herramientas de que se han
utilizado con éxito para implementar programas prototipo. las unidades de
representación de las herramientas (tales como las reglas y los atributos proporcionan
una orientación para identificar sub-problemas manejables y organizar el análisis de
problemas. La selección de aplicaciones adecuadas ahora a menudo toma la forma de
relacionar problemas candidatos con métodos computacionales conocidos, nuestras
herramientas.

Varios estudios han demostrado las ventajas de usar un lenguaje de representación en


lugar de otro, para facilitar la especificación de las relaciones de conocimiento, el control
del razonamiento y la perspicacia para el mantenimiento y la explicación. Otros estudios
han caracterizado en términos de bajo nivel por qué un problema dado podría ser
inapropiado para un lenguaje determinado, por ejemplo, porque los datos varían en el
tiempo o los sub-problemas interactúan. Si bien estos estudios revelan las debilidades y
limitaciones del formalismo basado en reglas, en particular, no aclaran la forma de
análisis y descomposición del problema que se ha utilizado con tanto éxito en estos
programas. En resumen, los intentos de describir un mapeo entre tipos de problemas y
lenguajes de programación no han sido satisfactorios porque no describen lo que sabe
un programa dado: las descripciones orientadas a las aplicaciones como diagnóstico son
demasiado generales (por ejemplo, resolver un problema).
el problema de diagnóstico no requiere necesariamente un modelo de dispositivo, y
términos tecnológicos basados en reglas donde describe qué tipo de problema se está
resolviendo. Necesitamos una mejor descripción de lo que hacen los programas
heurísticos y una caracterización computacional de su competencia,
independientemente de la tarea e independiente de la implementación del lenguaje de
programación. Se ha sugerido la lógica como base para un análisis de nivel de
conocimiento para especificar lo que hace y podría saber un programa heurístico. Sin
embargo, nos ha faltado un conjunto de términos y relaciones para hacer esto.

En un intento por caracterizar la competencia a nivel de conocimiento de una variedad


de sistemas expertos, se analizaron en detalle varios programas. Hay un patrón
sorprendente: estos programas pasan a través de fases fácilmente identificables de
abstracción de datos, mapeo heurístico en una jerarquía de soluciones pre-enumeradas
y refinamiento dentro de esta jerarquía. En resumen, estos programas hacen lo que
comúnmente se denomina clasificación, pero con el importante giro
de relacionar conceptos en diferentes jerarquías de clasificación mediante inferencias
inciertas y no jerárquicas. A esta combinación de razonamiento la llamamos clasificación
heurística.
Inteligencia Artificial (IA)

BREVE SÍNTESIS SOBRE LA


“HEURÍSTICA” EN EL CONTEXTO DE
BÚSQUEDAS (En la Inteligencia Artificial)

En Inteligencia Artificial (IA) se emplea el calificativo “heurístico”, en un sentido


muy genérico, para aplicarlo a todos aquellos aspectos que tienen que ver con el
empleo de conocimiento en la realización dinámica de tareas.

Se habla de heurística para referirse a una técnica, método o procedimiento


inteligente de realizar una tarea que no es producto de un riguroso análisis formal,
sino de conocimiento experto sobre la tarea. En especial, se usa el término
heurístico para referirse a un procedimiento que trata de aportar soluciones a un
problema con un buen rendimiento, en lo referente a la calidad de las soluciones y a
los recursos empleados. Por otra parte, consta de cierta/s técnica/s para “resolver
un problema” más rápido que los métodos clásicos, o para encontrar una solución
aproximada cuando los métodos c lásicos no pueden.

Una heurística (o una función heurística) en cada paso de bifurcación, evalúa la


información disponible y toma una decisión sobre “qué bifurcación seguir”. Lo hace
por ranking (En otras palabras, jerárquicamente) de alternativas. La Heurística es
cualquier dispositivo que a menudo es efectivo, pero no garantiza el trabajo en todos
los casos.
Las técnicas heurísticas pueden considerarse como: Una forma de conocimiento
y patrones de razonamiento de situaciones y soluciones de problemas familiares,
relacionadas heurísticamente. Al capturar situaciones problemáticas que tienden a
ocurrir y soluciones que tienden a funcionar, este conocimiento es
esencialmente experimental, con una forma general que es independiente del área
del problema. Las técnicas heurísticas son “métodos de cálculo”, no un tipo de
problema a resolver.

Puede haber una o muchas soluciones para un problema dado, dependiendo del
escenario, ya que puede haber muchas maneras de resolver ese problema. Piensa en
cómo abordas un problema. Para una mejor comprensión, se puede considerar que
en el caso de hacer “algo directo” como una multiplicación matemática, claramente
hay una solución correcta, pero puede haber muchos algoritmos para multiplicar,
dependiendo del tamaño de la entrada. Por otra parte, se puede considerar un
problema más complicado, como jugar un juego (Por ejemplo: Ajedrez, Sudoku,
Laberinto, etc… ); En la mayoría de éstos juegos, en un momento dado, tiene varios
movimientos que puede hacer y elige el que le ofrece el mejor resultado posible. En
este escenario, no hay una solución correcta, pero hay una mejor solución posible,
dependiendo de lo que quiera lograr. Además, hay varias formas de abordar el
problema, según la estrategia que elija para su juego.

Los agentes racionales o sistemas expertos para la Inteligencia


Artificial abordan los problemas de una manera similar. Tiene que
buscar en el “espacio de la solución” para proporcionar el mejor
resultado. Esto hace que los algoritmos de búsqueda sean
importantes en el estudio de la “Inteligencia Artificial”. En
cuanto a, lo que se considera como el mejor resultado y por qué se
prefiere una solución sobre otra, es algo que programamos en la IA.

A su vez, la búsqueda y organización de datos es un tema importante dentro de la


Inteligencia Artificial. Hay muchos problemas que requieren buscar una respuesta
dentro del dominio de la solución. Hay muchas soluciones posibles para un
problema dado y no sabemos cuáles son las correctas. Al organizar eficientemente
los datos, podemos buscar soluc iones de manera rápida y eficaz.
DEFINIENDO EL PROBLEMA
El agente o el sistema experto (inteligente) debe tener claro el objetivo. Esto
significa que necesitamos programar al agente / sistema experto, de manera que
pueda clasificar claramente un estado como objetivo. Dado que hay muchas formas
de alcanzar ese objetivo, el agente / sistema experto también debe poder evaluar
una solución y determinar su preferencia por una solución. Por lo tanto, se puede
considerar los factores que deben definirse para la formulación de un problema:

 Estado inicial: el estado en el que se inicia el agente o la condición inicial del


agente.

 Estados: todos los estados que son accesibles desde el estado inicial mediante
cualquier secuencia de acciones o todos los estados posibles que el agente puede
tomar. Esto también se conoce como espacio estatal.

 Acciones: todas las acciones posibles que el agente puede


ejecutar. Específicamente, proporciona la lista de acciones que un agente puede
realizar en un estado particular. Esto también se conoce como espacio de acción.

 Modelo de transición: esta propiedad describe los resultados de cada acción


realizada en un estado particular.

 Prueba de metas: Una forma de verificar si un estado es la meta.

 Costo de ruta: una función que asigna un costo numérico a una medida de
rendimiento de escritura de ruta

La formulación de problemas proporciona una manera fácil de diseñar un


agente racional.
ESPACIO DE BÚSQUEDA
A diferencia del espacio de estado (que es una configuración física), el espacio de
búsqueda es una configuración abstracta representada por un árbol o gráfico de
búsqueda de posibles soluciones.

Se utiliza un árbol de búsqueda para modelar la secuencia de acciones. Se


construye con el estado inicial como la raíz. Las acciones tomadas hacen que
las ramas y los nodos sean el resultado de esas acciones. Un nodo tiene
profundidad, costo de ruta y estado asociado en el espacio de estado.

EL ESPACIO DE BÚSQUEDA SE DIVIDE EN 3 REGIONES, A SABER:

 Explorado

 Frontera

 Inexplorado

La “búsqueda” implica mover los nodos de la región no explorada a la región


explorada. El orden estratégico de estos movimientos realiza una mejor
búsqueda. Los movimientos también se conocen como expansión de nodo. Elegir el
orden de expansión de los nodos nos ha proporcionado diferentes estrategias de
búsqueda que son adecuadas para diferentes tipos de problemas.

Las diferentes estrategias de búsqueda se evalúan a lo largo de la integridad, la


complejidad del tiempo, la complejidad del espacio y la optimalidad. La complejidad
del tiempo y el espacio se mide en términos de:

 b: factor de bifurcación máximo del árbol de búsqueda (acciones por estado).

 d: profundidad de la solución

 m: profundidad máxima del espacio de estado (puede ser ∞) (también se


observa a veces D).
TÉCNICAS DE BÚSQUEDA HEURÍSTICA
Cabe destacar que existen muchos algoritmos especiales para resolución de
problemas que requieran técnicas de “búsquedas”; no obstante, a continuación,
se tratará brevemente algunas técnicas fundamentales de “búsqueda
heurística” en dos categorías:

I. Búsqueda no informada

Los algoritmos de búsqueda en esta sección no tienen información adicional sobre el


nodo objetivo que no sea la proporcionada en la definición del problema. Los planes
para alcanzar el estado objetivo desde el estado inicial difieren solo por el orden y / o
la duración de las acciones. La búsqueda no informada también se
llama “búsqueda ciega”. En otras palabras, Este tipo de búsqueda no utiliza
ningún conocimiento de dominio; esto significa que no utiliza ninguna información
que lo ayude a alcanzar la meta, como la cercanía o la ubicación de la misma. Las
estrategias o algoritmos, utilizando esta forma de búsqueda, ignoran a dónde van
hasta que encuentran una meta y reportan el éxito.

En este contexto se sintetizará los siguientes “algoritmos de búsqueda


informada”:

1. Búsqueda en Anchura
2. Búsqueda de Costo Uniforme

CADA UNO DE ESTOS ALGORITMOS TENDRÁ:

 Un gráfico de problemas, que contiene el nodo de inicio S y el nodo de


objetivo G.
 Una estrategia que describe la manera en que se recorrerá la gráfica para
llegar G.
 Una franja, que es una estructura de datos utilizada para almacenar todos los
estados (nodos) posibles a los que puede ir desde los estados actuales.
 Un árbol, que resulta al atravesar el nodo objetivo.
 Un plan de solución, que la secuencia de nodos de S a G.
1. BÚSQUEDA EN ANCHURA: Es un algoritmo para
atravesar o buscar estructuras de datos de árboles o
gráficos. Comienza en la raíz del árbol (o en algún nodo
arbitrario de un gráfico, a veces denominado "clave de
búsqueda"), y explora todos los nodos adyacentes a la
profundidad actual antes de pasar a los nodos en el
siguiente nivel de profundidad.

EJEMPLO:
¿Qué solución encontraría la “Búsqueda en Anchura” para moverse de un nodo S a
otro G si se ejecutara en el gráfico a continuación?
SOLUCIÓN:
El árbol de búsqueda equivalente para el gráfico anterior es el siguiente. Cuando la
“Búsqueda en Anchura” atraviesa el árbol "el nodo más superficial primero",
siempre escogería la rama menos profunda hasta que llega a la solución (o se queda
sin nodos y va a la siguiente rama). El recorrido se muestra en flechas azules.

Camino: S -> D -> G

Sea s = la profundidad de la solución más superficial.

ni = número de nodos en el nivel i.


Complejidad en el tiempo: equivalente a la cantidad de nodos atravesados en BFS
hasta la solución más superficial.
T(n) = 1+ n2 + n3 + … + n8 = O(n8)
Complejidad del espacio: Equivalente a qué tan grande puede llegar la franja.
S(n) = O(n8)
Integridad: La “Búsqueda en Anchura” está completa, lo que significa que para
un árbol de búsqueda dado, la búsqueda respectiva encontrará una solución si
existe.

Optimalidad: La “Búsqueda en Anchura” es óptima siempre que los costos de


todos los bordes sean iguales.
2. BÚSQUEDA DE COSTO UNIFORME:

Ésta búsqueda (Costo Uniforme) es diferente a las anteriores porque aquí los
costos entran en juego. En otras palabras, atravesar diferentes bordes puede no tener
el mismo costo. El objetivo es encontrar un camino donde la suma acumulativa de los
costos sea menor.

El costo de un nodo se define como:

costo (nodo) = costo acumulado de todos los nodos desde el


costo raíz (raíz) = 0

EJEMPLO:
¿Qué solución encontraría la “Búsqueda de Costo Uniforme” para moverse de un
nodo S a otro G si se ejecutara en el gráfico a continuación?
SOLUCIÓN:
El árbol de búsqueda equivalente para el gráfico anterior es el siguiente. El costo de
cada nodo es el costo acumulado de llegar a ese nodo desde la raíz. Según la estrategia
de la “Búsqueda de Costo Uniforme” , se elige la ruta con el menor costo
acumulativo. Teniendo en cuenta que, debido a las muchas opciones en la franja, el
algoritmo explora la mayoría de ellas siempre y cuando su costo sea bajo, y las descarta
cuando se encuentra una ruta de menor costo; estos recorridos descartados no se
muestran a continuación. El recorrido real se muestra en azul.

Ruta: S -> A -> B -> G


Costo: 5

Sea d = costo de la solución.


w = costo de arcos.

Entonces C/w = la profundidad efectiva.

Complejidad del tiempo: T(n) = O (nC / w)

Complejidad del espacio: S(n) = O (nC / w)

Ventajas:
 La “Búsqueda de Costo Uniforme” está completa.
 La “Búsqueda de Costo Uniforme” es óptima.

Desventajas:
 Explora opciones en cada "dirección".
 No hay información sobre la ubicación de la meta.
II. Búsqueda informada

Este tipo de búsqueda utiliza el conocimiento del dominio. En general, utiliza


una función heurística que estima qué tan cerca está un estado del objetivo. Esta
heurística no necesita ser perfecta. Esta función se utiliza para estimar el costo de un
estado al objetivo más cercano.

En este contexto se sintetizará los siguientes “algoritmos de


búsqueda informada”:

1. Búsqueda codiciosa
2. A * Árbol de búsqueda
3. A * Búsqueda gráfica
1. BÚSQUEDA CODICIOSA: expande el nodo que parece
ser el más cercano al objetivo. La "cercanía" se estima
por una heurística h(x).

Heurística: una heurística h se define como:


h(x) = estimación de la distancia del nodo x al objetivo.
Baje el valor de h(x), más cerca está el nodo del objetivo.

Estrategia: Expanda el nodo más cercano al estado objetivo, es decir, expanda


el nodo con un h valor más bajo.

EJEMPLO:
Encuentra el camino de S a G utilizando la búsqueda codiciosa. Los valores
heurísticos h de cada nodo debajo del nombre del nodo.
SOLUCIÓN:
A partir de S, podemos atravesar hasta A(h=9) o D(h=5) . Elegimos D, ya que tiene el menor
costo heurístico. Ahora desde D, podemos pasar a B(h=4) ó E(h=3) . Elegimos E con menor
costo heurístico. Finalmente, desde E, vamos a G(h=0) . Todo este recorrido se muestra
en el árbol de búsqueda a continuación, en azul.

Camino: S -> D -> E -> G

 Ventaja: funciona bien con problemas de búsqueda informados, con


menos pasos para alcanzar una meta.

 Desventaja: puede convertirse en “Búsqueda en profundidad (Primera


búsqueda en profundidad)” no guiado en el peor de los casos.
2. A * ÁRBOL DE BÚSQUEDA: Minimiza el costo total
estimado de la solución, que incluye el costo de alcanzar
un estado y el costo de alcanzar la meta de ese estado.
combina los puntos fuertes de la búsqueda de costo
uniforme y la búsqueda codiciosa. En esta búsqueda, la
heurística es la suma del costo (En: Búsqueda de costo
uniforme), denotado por g(x), y el costo en búsqueda
codiciosa, denotado por h(x). El costo sumado se denota
por f(x).

Heurística: los siguientes puntos deben anotarse en heurísticas en la búsqueda A *.

F(x) = g(x) + h(x)


 Aquí, h(x) se denomina costo directo y es una estimación de la distancia del
nodo actual desde el nodo objetivo.

 Y, g(x) se denomina costo atrasado, y es el costo acumulativo de un nodo


desde el nodo raíz.

 Una búsqueda * es óptima solo cuando, para todos los nodos, el costo directo
para un nodo h(x) subestima el costo real h*(x) para alcanzar la meta. Esta
propiedad de la heurística A * se llama admisibilidad.

Admisibilidad: 0 ≤ h(x) ≤ h*(x)

Estrategia: Elija el nodo con el f(x) valor más bajo.


EJEMPLO:
Encuentra la ruta a la que se puede llegar desde S a G usando la técnica “Arbol de
búsqueda A *”.
SOLUCIÓN:
A partir de S, el algoritmo calcula g(x) + h(x) para todos los nodos en la franja en
cada paso, eligiendo el nodo con la suma más baja. El trabajo completo se muestra
en la siguiente tabla.

Tenga en cuenta que, en el cuarto conjunto de iteraciones, obtenemos dos rutas con
el mismo costo sumado f(x), por lo que las expandimos en el siguiente conjunto. El
camino con menor costo en una mayor expansión es el camino elegido.

Ruta: S -> D -> B -> E -> G


Costo: 7
3. A * BÚSQUEDA GRÁFICA:
 La búsqueda mediante la técnica “búsqueda gráfica A * ” funciona bien,
excepto que lleva tiempo volver a explorar las ramas que ya ha explorado. En
otras palabras, si el mismo nodo se ha expandido dos veces en diferentes ramas
del árbol de búsqueda, la “búsqueda gráfica A * ” podría explorar ambas
ramas, perdiendo así el tiempo.

 La “búsqueda gráfica A * ”, elimina esta limitación al agregar esta regla: no


expanda el mismo nodo más de una vez.

Heurística: La búsqueda de gráficos es óptima solo cuando el costo hacia


adelante entre dos nodos sucesivos A y B, dado por h(A) - h (B), es menor o
igual que el costo hacia atrás entre esos dos nodos. g(A -> B). Esta propiedad de
la heurística de búsqueda de gráficos se llama consistencia.

Consistencia: h(A) – h(B) ≤ g(A  B)

EJEMPLO:
Implemente la “búsqueda gráfica A* ” para encontrar la ruta de S a G en el
siguiente gráfico.
SOLUCIÓN:
Resolvemos esto de manera semejante que el ejemplo anterior; pero en este
caso, mantenemos un seguimiento de los nodos explorados para que no los
volvamos a explorar.

Ruta: S -> D -> B -> C -> E -> G


Costo: 7
GENERACIÓN Y PRUEBA
es un algoritmo muy simple que garantiza encontrar una solución si se realiza de
manera sistemática y existe una solución.

ALGORITMO: GENERAR Y PROBAR

1) Generar una posible solución.


2) Compruebe si esta es la solución esperada.
3) Si la solución ha sido encontrada, quit o vaya al paso 1.

Generar y probar (como la búsqueda en profundidad), requiere que se generen


soluciones completas para las pruebas. En su forma más sistemática, es solo una
búsqueda exhaustiva del espacio del problema. Las soluciones también se
pueden generar al azar, pero la solución no está garantizada. Este enfoque es lo que
se conoce como algoritmo del Museo Brit ánico: encontrar un objeto en el Museo
Británico vagando al azar.
GENERACIÓN Y PRUEBA SISTEMÁTICA

Si bien la generación de soluciones completas y la generación de soluciones aleatorias


son los dos extremos, existe otro enfoque intermedio. El enfoque es que el proceso
de búsqueda se realiza de manera sistemática, pero no se consideran algunas rutas
que probablemente no guíen la solución. Esta evaluación se realiza mediante una
función heurística.

El árbol de búsqueda en profundidad con retroceso se puede usar para implementar


un procedimiento sistemático de generación y prueba. Según este procedimiento, si
es probable que algunos estados intermedios aparezcan a menudo en el árbol, sería
mejor modificar ese procedimiento para atravesar un gráfico en lugar de un árbol.

GENERACIÓN Y PRUEBA Y PLANIFICAC IÓN

La generación y prueba exhaustiva es muy útil para problemas simples. Pero para
problemas complejos, incluso la generación y prueba heurística no es una técnica
muy efectiva. Pero esto puede hacerse efectivo mediante la combinación con otras
técnicas de tal manera que el espacio en el que se busca sea restringido. Un
programa de inteligencia artificial DENDRAL, por ejemplo, utiliza la técnica de
generación y prueba del plan. Primero, el proceso de planificación utiliza técnicas de
satisfacción de restricciones y crea listas de subestructuras recomendadas y
contraindicadas. Luego, el procedimiento de generación y prueba utiliza las listas
generadas y necesarias para explorar solo un conjunto limitado de
estructuras. Restringido de esta manera, generar y probar resultó altamente
efectivo. Una debilidad importante de la planificación es que a menudo produce
soluciones inexactas ya que no hay retroalimentación del mundo.
ESCALADA
La escalada es una búsqueda heurística utilizada para problemas de optimización
matemática en el campo de la Inteligencia Artificial.

Dado un gran conjunto de entradas y una buena función heurística, intenta encontrar
una solución suficientemente buena para el problema. Esta solución puede no ser el
máximo óptimo global.

CARACTERÍSTICAS BÁSICAS DE LA “ESCALADA”


1. Variante de generar y probar algoritmo: Es una variante de generar y
probar algoritmo. El algoritmo de generar y probar es el siguiente:

1. Generar posibles soluciones.


2. Prueba para ver si esta es la solución esperada.
3. Si se ha encontrado la solución, salga del paso 1.
Por lo tanto, llamamos a la “Escalada” como una variante del algoritmo de generación y
prueba, ya que toma la retroalimentación del procedimiento de prueba. Luego, esta
retroalimentación es utilizada por el generador para decidir el próximo movimiento en el
espacio de búsqueda.
2. Utiliza el enfoque codicioso (Búsqueda Codiciosa): en cualquier punto del
espacio de estado, la búsqueda avanza solo en esa dirección, lo que optimiza el
costo de la función con la esperanza de encontrar la solución óptima al final.
TIPOS DE “ESCALADAS”

I. Escalada simple: examina los nodos vecinos uno por uno y


selecciona el primer nodo vecino que optimiza el costo actual como el
siguiente nodo.

Algoritmo para la escalada simple:

Paso 1: Evaluar el estado inicial. Si se trata de un estado objetivo, deténgase y


devuelva el éxito. De lo contrario, haga el estado inicial como estado actual.

Paso 2: realice un bucle hasta que se encuentre el estado de la solución o no


haya nuevos operadores presentes que puedan aplicarse al estado actual.

a) Seleccione un estado que aún no se haya aplicado al estado actual y


aplíquelo para producir un nuevo estado.

b) Realice estos para evaluar el nuevo estado:


-Si el estado actual es un estado objetivo, entonces detenga y devuelva el éxito.
-Si es mejor que el estado actual, entonces conviértalo en estado actual y continúe.
-Si no es mejor que el estado actual, continúe en el bucle hasta que se encuentre una
solución.

Paso 3: Salir.
II. Escalada a la colina (Steepest-Ascent Hill climbing): primero examina
todos los nodos vecinos y luego selecciona el nodo más cercano al estado
de la solución como siguiente nodo.

Paso 1: Evaluar el estado inicial. Si es el estado del objetivo, salga o realice el


estado actual como estado inicial

Paso 2: repita estos pasos hasta que se encuentre una solución o el estado
actual no cambie:

I. Sea "objetivo" un estado tal que cualquier sucesor del estado actual sea
mejor que él;

II. Para cada operador que se aplique al estado actual


a. aplicar el nuevo operador y crear un nuevo estado
b. evaluar el nuevo estado
c. si este estado es el estado objetivo, entonces quit; de lo contrario, compare con 'objetivo'
d. si este estado es mejor que 'objetivo', establezca este estado como 'objetivo'
e. si el objetivo es mejor que el estado actual, establezca el estado actual en Objetivo

Paso 3: Salir.
III. Escalada estocástica: no examina todos los nodos vecinos antes de
decidir qué nodo seleccionar. Simplemente selecciona un nodo vecino al
azar y decide (basándose en la cantidad de mejora en ese vecino) si
moverse hacia ese vecino o examinar otro.

DIAGRAMA DEL ESPACIO DEL ESTADO PARA LA


ESCALADA DE LA COLINA
El diagrama de espacio de estado es una representación gráfica del conjunto de
estados que nuestro algoritmo de búsqueda puede alcanzar frente al valor de
nuestra función objetivo (la función que deseamos maximizar).

Eje X: denota el espacio de estado, es decir, los estados o la configuración que


puede alcanzar nuestro algoritmo.

Eje Y: denota los valores de la función objetivo correspondientes a un estado


particular.

La mejor solución será ese espacio de estado donde la función objetivo tenga el valor
máximo (máximo global).
DIFERENTES REGIONES EN EL DIAGRAMA ESPACIAL ESTATAL

1. Máximo local: es un estado que es mejor que su estado vecino, sin embargo,
existe un estado que es mejor que este (máximo global). Este estado es mejor
porque aquí el valor de la función objetivo es más alto que sus vecinos.

2. Máximo global: es el mejor estado posible en el diagrama de espacio de


estado. Esto porque en este estado, la función objetivo tiene el valor más alto.

3. Plano máximo local: es una región plana del espacio estatal donde los estados
vecinos tienen el mismo valor.

4. Cresta: es la región que es más alta que sus vecinos, pero en sí misma tiene
una pendiente. Es un tipo especial de máximo local.

5. Estado actual: La región del diagrama de espacio de estado donde estamos


presentes actualmente durante la búsqueda.

6. Hombro: Es una meseta que tiene un borde cuesta arriba.

PROBLEMAS EN DIFERENTES REGIONES EN LA ESCALADA DE COLINAS.

La escalada en pendientes no puede alcanzar el estado óptimo / óptimo (máximo


global) si ingresa a alguna de las siguientes regiones:

1. Máximo local: en un máximo local, todos los estados vecinos tienen valores
que son peores que el estado actual. Ya que la escalada de colinas usa un
enfoque codicioso, no se moverá al peor estado y terminará por sí misma. El
proceso terminará, aunque exista una mejor solución.

Para superar el problema máximo local: Utilice la técnica de


retroceso. Mantener una lista de los estados visitados. Si la búsqueda alcanza
un estado no deseado, puede retroceder a la configuración anterior y explorar
una nueva ruta.

2. Meseta: En la meseta todos los vecinos tienen el mismo valor. Por lo tanto, no
es posible seleccionar la mejor dirección.

Para superar las mesetas: Haz un gran salto. Selecc iona aleatoriamente un
estado alejado del estado actual. Es probable que aterricemos en una región
que no sea de meseta

3. Cresta: cualquier punto en una cresta puede verse como un pico porque el
movimiento en todas las direcciones posibles es hacia abajo. Por lo tanto, el
algoritmo se detiene cuando alcanza este estado.

Para superar Ridge: en este tipo de obstáculo, use dos o más reglas antes de
probar. Implica moverse en varias direcciones a la vez.
BÚSQUEDA PRIMERO EL MEJOR
(PRIMERA BÚSQUEDA DE PROFUNDIDAD):
es un algoritmo para atravesar o buscar estructuras de datos de árboles o gráficos. El
algoritmo comienza en el nodo raíz (seleccionando algún nodo arbitrario como el
nodo raíz en el caso de un gráfico) y explora en la medida de lo posible a lo largo de
cada rama antes de retroceder.

EJEMPLO:
¿Qué solución encontraría la técnica “Primera Búsqueda de Profundidad” para
moverse de un nodo S a otro G si se ejecuta en el gráfico a continuación?
SOLUCIÓN:
El árbol de búsqueda equivalente para el gráfico anterior es el siguiente. A medida
que la “Primera Búsqueda de Profundidad” atraviesa el árbol "el nodo más profundo
primero", siempre elegirá la rama más profunda hasta que alcance la solución (o se
quede sin nodos y pase a la siguiente rama). El recorrido se muestra en flechas
azules.

Camino: S -> A -> B -> C -> G

Sea d = la profundidad del árbol de búsqueda = número de niveles del árbol de


búsqueda.
ni = número de nodos en el nivel i.
Complejidad en el tiempo: equivalente al número de nodos atravesados en la “Primera
Búsqueda de Profundidad”.

T(n) = 1+ n2 + n3 + … + nd = O(nd)
Complejidad del espacio: Equivalente a qué tan grande puede llegar la franja.
S(n) = O(n x d)
Integridad: La “Primera Búsqueda de Profundidad” está completa si el árbol de
búsqueda es finito, lo que significa que para un árbol de búsqueda finito dado, ésta
búsqueda encontrará una solución, si existe.

Optimalidad: La “Primera Búsqueda de Profundidad” no es óptima, lo que significa


que la cantidad de pasos para alcanzar la solución o el costo gastado para alcanzarla
son altos.
REDUCCIÓN DE PROBLEMAS
Una de las razones por lo que se implementa la “Heurística” para la resolución de
problemas, es, producir en un tiempo razonable, una solución que sea lo
suficientemente buena para el problema en cuestión. No tiene que ser lo mejor, una
solución aproximada funcionará ya que esto es lo suficientemente rápido. La mayoría
de los problemas son exponenciales. La búsqueda heurística nos permite reducir esto
a un número más bien polinomial. Es usada en la Inteligencia Artificial porque se
puede usar la “Heurística” en situaciones donde no podemos encontrar algoritmos
conocidos.

A veces los problemas solo parecen difíciles de resolver. Un problema difícil puede ser
uno que puede reducirse a una serie de problemas simples; y cuando se resuelve
cada uno de los problemas simples, se soluciona el problema difícil. Esta es la
intuición básica detrás del método de Reducc ión de problemas.

La “Reducción de problemas” es una técnica algorítmica que se implementa para


descomponer un problema en varios “sub-problemas” para que así, sea más fácil de
llegar a una solución determinada.

El primer elemento de la pareja es el estado inicial del (sub) problema

y el segundo elemento de la pareja es el estado objetivo (sub) del objetivo.


En un espacio de “reducción de problemas”, los nodos representan
problemas a resolver o metas que deben alcanzarse, y los bordes representan
la descomposición del problema en sub-problemas.

EJEMPLO:
Esto se ilustra mejor con el ejemplo del problema de las Torres de Hanoi.

El nodo raíz, etiquetado como "3AC" representa el problema original de transferir los
3 discos de la clavija A a la peg C.

El objetivo se puede descomponer en tres sub-objetivos: 2AB, 1AC, 2BC. Para lograr
el objetivo, se deben alcanzar los 3 sub-objetivos.
VERIFICACIÓN DE RESTRICCIONES

En muchas ocasiones la resolución de problemas está sujeta a que las diversas


componentes en las que se pueden descomponer verifiquen ciertos conjuntos de
restricciones. Problemas tan cotidianos como fijar una cita con unos amigos, comprar
un coche o preparar una receta culinaria pueden depender de muchos aspectos
interdependientes, e incluso conflictivos, sujetos a un conjunto de restricciones que
deben ser verificadas para poder encontrar una solución al problema planteado.

Históricamente, la resolución de problemas de satisfacción de


restricciones (PSR, por sus siglas en español) ha generado una gran expectación
entre expertos de muchas áreas debido a su potencial para la resolución de grandes
problemas reales que caen, en muchas ocasiones, dentro de lo que se conocen como
problemas NP (aquellos que presentan una complejidad computacional superior para
su resolución). Los primeros trabajos relacionados con la programación de
restricciones datan de los años 60 y 70 en el campo de la Inteligencia Artificial.

La idea de las técnicas de PSR es resolver problemas mediante la declaración de


restricciones sobre el área del problema (el espacio de posibles soluciones) y
consecuentemente encontrar soluciones que satisfagan todas las restricciones. A
veces, se buscan soluciones que, además, optimicen algunos criterios determinados.
La resolución de problemas con restricciones puede dividirse en dos ramas
claramente diferenciadas: la satisfacción de restricciones y la resolución de
restricciones. Ambas comparten la misma terminología, pero sus orígenes y
técnicas de resolución son diferentes: la satisfacción de restricciones trata con
problemas con dominios finitos, mientras que la resolución de restricciones está
orientada principalmente a problemas sobre dominios infinitos o dominios más
complejos.

Aquí nos centraremos principalmente en los problemas de satisfacción de


restricciones, que básicamente consisten en un conjunto finito de variables, un
dominio de valores finito para cada variable y un conjunto de restricciones que
acotan las posibles c ombinaciones de valores que estas variables pueden tomar en su
dominio.

Ejemplo. El problema de coloración de mapas es un problema clásico que se


puede formular como un PSR. En este problema hay un conjunto de colores y un
mapa dividido en regiones. El objetivo es colorear cada región del mapa de manera
que regiones adyacentes tengan distintos colores. Una forma de modelar este
problema dentro del PSR sería asociando una variable por cada región del mapa (el
dominio de cada variable es el conjunto de posibles colores disponibles), y para cada
par de regiones contiguas añadir una restricción sobre los valores de las variables
correspondientes que impida asignarles el mismo valor (color). Como suele ser
habitual, este mapa puede ser representado mediante un grafo donde los nodos
representan las diversas regiones del mapa y cada par de regiones adyacentes están
unidas por una arista. Veremos que esta representación en forma de grafo, que en
este problema es natural, será usada como metodología general para da r una
estructura a las restricciones de cualquier problema PSR.
Resolución del PSR
La resolución de un PSR consta de dos fases, las cuales se definirán brevemente:

1. Modelar el problema como un problema de satisfacción de restricciones.


Para ello, y siguiendo una metodología similar al ejemplo anterior, el problema se
expresa mediante un conjunto de variables, dominios en los que toman los
posibles valores, y restricciones sobre estas variables.

2. Procesar las restricciones. Una vez formulado el problema como un PSR, hay
dos maneras de procesar las restricciones:

 Técnicas de consistencia: basadas en la eliminación de valores inconsistentes de los dominios de las


variables (es decir, que no verifican las restricciones impuestas). A veces se pueden aplicar aquí técnicas
derivadas de la Lógica Proposicional (o de primer orden).

 Algoritmos de búsqueda: se basan en la exploración sistemática del espacio de soluciones hasta


encontrar una solución (o probar que no existe tal solución en caso contrario) que verifica todas las
restricciones del problema.

Lo más normal es que se combinen ambas aproximaciones, ya que las técnicas de


consistencia permiten deducir información del problema, y reducen el espacio de
soluciones que podemos explorar usando algoritmos de búsqueda más o menos
tradicionales.
ANÁLISIS DE MEDIOS Y FINES

La mayoría de las estrategias de búsqueda, ya sea por adelantado o por revés, a


menudo es apropiada una mezcla de las dos direcciones. Dicha estrategia mixta
permitiría resolver primero las partes principales del problema y resolver los
problemas más pequeños que surgen al combinarlos. Dicha técnica se denomina
"Análisis de medios y fines".

El proceso de análisis de medias y salidas se centra en encontrar la diferencia entre el


estado actual y el estado objetivo. El análisis del espacio de problemas de medios y
fines tiene un estado inicial y uno o más estados objetivo, un conjunto de
operaciones con un conjunto de condiciones previas de su aplicación y funcio nes de
diferencia que calculan la diferencia entre dos estados a (i) ys (j). Un problema se
resuelve usando el análisis de medios y fines por:

1. Calcular el estado actual s1 a un estado objetivo s2 y calcular su diferencia D12.

2. Cumplir con las condiciones previas para seleccionar un operador recomendado, luego reducir la diferencia D12.

3. El operador OP se aplica si es posible. Si no se resuelve el estado actual, se crea un objetivo y se aplica el


análisis de fines y fines de forma recursiva para reducir el objetivo secundario.

4. Si el objetivo secundario se resuelve, el estado se restaura y el trabajo se reanuda en el problema original.


INFOGRAFÍA

Conceptos básicos de Búsqueda Heurística:


http://inteligenciaartificialgrupo33.blogspot.com/p/metodos-de-busqueda-y-ejemplos.html

http://www.aistudy.co.kr/heuristic/heuristic_classification.htm

http://intelligence.worldofcomputing.net/ai-search/heuristic-search.html

Técnicas de Búsqueda Heurística:


https://www.geeksforgeeks.org/search-algorithms-in-ai/

https://hackernoon.com/search-algorithms-in-artificial-intelligence-8d32c12f6bea

https://data-flair.training/blogs/heuristic-search-ai/
https://data-flair.training/blogs/heuristic-search-ai/

Generación y Prueba:
http://intelligence.worldofcomputing.net/ai-search/generate-and-test-search.html#.XLuhl4lKjct

Escalada:
https://www.geeksforgeeks.org/introduction-hill-climbing-artificial-intelligence/

Reducción de problemas:
http://www.uobabylon.edu.iq/eprints/publication_12_357_213.pdf

Verificación de restricciones: http://www.cs.us.es/~fsancho/?e=141

Análisis de medios y fines: http://artificialintelligence-


notes.blogspot.com/2010/07/means-ends-analysis.html

You might also like