Está en la página 1de 12

Inteligencia artificial

Programación inteligente Programación convencional


Resuelven problemas distintos
Emula inteligencia
Problemas más complejos Problemas más simples
Adaptación a los cambios
Basada en intuiciones y heurística Basada en algoritmos
Se aplica donde la programación
convencional no llega
Pueden retroalimentarse entre sí

Campos de aplicación: robótica, lenguaje natural (sistemas expertos, redes


neuronales), etc.

Los sistemas inteligentes se acotan a un campo de expertise en particular y


trabajan con datos sólo de ese campo, logrando mayor conocimiento que un
experto en dicho campo.

Heurística: Método exploratorio durante la resolución de un problema donde las


soluciones son descubiertas evaluando el progreso logrado en la búsqueda de un
resultado final. Los algoritmos heurísticos se usan para obtener soluciones a
problemas cuya optimización no es factible con matemática convencional.

Se la denomina como la experiencia de resolver problemas y ver cómo otros lo


hacen. Las búsquedas heurísticas se basan en experiencia y probabilidad.

Aprendizaje: Los sistemas inteligentes aprenden y recuerdan lo que se les informó.

Lenguaje natural: es la interpretación del lenguaje mediante un transductor. Esto


se realiza en un contexto que permite analizar el diálogo y responder todo.

 Sistema experto: emula el razonamiento de un (1) experto en un área en


particular, basándose en conocimiento existente. Debe justificar su
respuesta.
 Redes neuronales: emulan el principio de funcionamiento del cerebro,
resolviendo problemas con menos información, usando patrones o
asociación. Son adaptables y no deben explicar sus respuestas ni cómo
llegaron a ellas.

Estados

Es la forma de representar un problema. Cada problema tiene un estado desde que


surge hasta que se resuelve. Hay muchos caminos de estado, algunos resuelven el
problema y otros no.

Espacio de estados: son TODOS los posibles estados del problema (los que
resuelven el problema y los que no). Suelen ser infinitos e inmanejables. Si son
manejables, puede usarse programación convencional. Si no, programación
inteligente.

Explosión combinatoria

Es cuando un problema presenta infinitos o inmanejables estados y solo se puede


resolver con programación inteligente. Se generan combinatorias de permutatorias
para obtener un espacio de estados imposible de representar.
Búsquedas en la representación de espacio de estados

Los espacios de estado suelen representarse como grafos (bidireccionales) o como


árboles (el estado inicial es uno solo).

Objetivo: encontrar el camino entre el nodo inicial y el nodo objetivo. Puede haber
más de un camino y más de un nodo objetivo.

Solución óptima: es la que encuentra el nodo objetivo y está más cerca del nodo
raíz. Es decir, la que incurre en menos costo.

Métodos – Eficiencia: qué tan rápido (menor costo) se encuentra un objetivo.

Búsquedas

Los métodos de búsquedas permiten crear el espacio de estados.

 Se parte del nodo inicial con la descripción del nodo objetivo.


 Mediante reglas posibles se va armando el espacio en cada búsqueda.
 Si hay un nodo muerto, vuelve un paso atrás y arma una nueva “jugada”.

Límite de profundidad: máximo de niveles a analizar. Nos permite acotar el árbol o


grafo para un mejor análisis. Si se llega al límite sin un objetivo, se considera al
nodo como muerto.

Tipos de búsquedas:

 Según información: ciegas o informadas


 Según sentido de la búsqueda: hacia adelante o hacia atrás
 Según criterio: en amplitud o en profundidad

Búsquedas ciegas en profundidad: Son algoritmos no inteligentes. No toman atajos,


pero son rápidos. Arrancan en el nodo de la izquierda (por convención) y siguen en
profundidad hasta encontrar el nodo objetivo o un nodo muerto (sin hijos y no
objetivo). En este caso vuelve hasta algún nodo que tenga hijos.

Búsquedas en amplitud: Recorre por niveles el árbol. No conviene cuando se tiene


muchos nodos por nivel. Este método siempre halla la solución más cercana a la
raíz (óptima), aunque esto no implica que sea el mejor método.

Búsqueda informada: combina búsqueda algorítmica con inteligente. Es un


algoritmo informado que al buscar genera una función heurística (nº real) que
representa la probabilidad (%) de éxito de ese nodo. La función se basa en
conocimiento que le brindamos del problema, que luego convierte en un modelo
matemático.

Si se van siguiendo los mayores valores heurísticos, debería llegarse al nodo


objetivo. Sin embargo está el problema de tener 2 nodos con el mismo valor.

El proceso de control debe verificar que el valor heurístico crezca, de lo contrario


estaremos retrocediendo. Este proceso conlleva gran nivel de procesamiento, al
trabajar con muchos valores heurísticos y muchos nodos.
Ej.: Función heurística ta-te-ti (gráfico)

∑ (filas + columnas + diagonales) jugador a - ∑ (filas + columnas + diagonales) jugador b

Para el caso del ta-te-ti, una búsqueda ciega generaría 9 nodos en el primer nivel,
72 nodos en el 2º nivel (8 x 9). En el 3º generaría 7 x 72 nodos y así
sucesivamente.

En una búsqueda informada generaría 9 nodos en el 1º nivel, seleccionaría el mejor


nodo y para él generaría 8 hijos. Luego para el mejor de éstos generaría 7 y así
sucesivamente, lo cual va reduciendo considerablemente el espacio de estados.

Sin embargo esto no hace que esta búsqueda sea mejor que la ciega, ya que puede
darse el caso de que la función heurística haga más ineficiente la búsqueda que el
hecho de generar todos los nodos.

Criterios de búsqueda combinados

Búsqueda ciega o búsqueda informada


Búsqueda hacia adelante o búsqueda hacia atrás
Búsqueda en amplitud o en profundidad

Las 6 pueden combinarse. Ejemplo: revisar los primeros niveles en amplitud y


luego seguir en profundidad con una búsqueda informada.

Búsqueda bidireccional: hacia adelante y hacia atrás al mismo tiempo. Termina


cuando alguna encuentra el objetivo o cuando se unen y entre ambas forman el
camino.
Ejemplo de búsqueda en profundidad:

 Subíndice: padre del nodo


 Analizo si cada nodo es objetivo. Si no lo es, genero sus hijos y lo paso a
CLOSE.
 En la lista CLOSE queda el camino recorrido hasta llegar al objetivo.
Ejemplo de búsqueda en amplitud: Recorre horizontalmente y analiza primero los
de un mismo nivel antes de pasar a los hijos generados. La lista OPEN queda más
larga que la CLOSE para el mismo ejemplo anterior.
Ejemplo de búsqueda informada:

f(n) = función heurística


Algoritmo A* => f(n) = g(n) + h(n) Se agregan valores no heurísticos, valores
conocidos, relacionados con algún costo anterior que hayamos tenido con el
problema.
Árboles alternados

Usado para problemas de contrincantes que alternan jugadas (1 por vez). Se denominan
problemas de “suma nula”, ya que cada uno sabe TODO lo que el contrincante puede
hacer, pero NO lo que efectivamente va a hacer.

Un estado que es bueno para uno, es malo para el otro. Hay un estado neutro (empate).
Cada contrincante se atiene a lo que hace el otro, es decir, la opción que elige uno obliga
al otro.

Métodos: Minimax, Alfa Beta, Alfa Beta dinámico. Todos buscan la mejor jugada en base
al estado actual del problema, no en base a la solución buscada. Deciden basándose en
una “visión de futuro”. La forma en que operan es la siguiente:

1. Genero el espacio de estados (árbol) en base a algún método de búsqueda. Limito


el árbol hasta un cierto nivel según los recursos (hardware, software, tiempos,
etc.). Se usan mayormente búsquedas ciegas, ya que necesito generar todo el
árbol.
2. Calculo cuál es la mejor jugada a partir del nodo raíz.
3. Realizo la jugada y luego de que el oponente juega, tomo dicho nodo como raíz
para iniciar todo el proceso de nuevo y así obtener la 2º mejor jugada, y así
sucesivamente.

Minimax

1. Genero el árbol hasta cierto nivel.


2. Aplico una función heurística al último nivel para obtener el valor prioritario de
retroceso (VPR) de cada nodo.
3. Retrotraigo hacia el nodo raíz esos valores, subiendo el valor máximo o mínimo en
base a la jugada que lógicamente elegiría el jugador maximizante o minimizante.
4. En el nodo raíz el jugador maximizante elige la mejor jugada (la que tiene el valor
heurístico más alto). Este valor en sí no significa nada, sirve solo para seleccionar
la jugada.

Lo importante del método radica en que la decisión que se toma en el 1º nivel (24 en el
ejemplo) se basa en información obtenida en el último nivel (el 4º en el ejemplo). Si se
aplicara la función heurística en el 1º nivel, la información obtenida sería casi nula y las
decisiones se tomarían a ciegas.

Alfa-Beta

Genera y evalúa simultáneamente. Esto le permite dejar de lado estados y acciones


irrelevantes para las jugadas. Aplica 2 reglas: β <= α anterior y α >= β anterior. Esto
produce cortes alfa y beta, dando nombre al método.
1. Genero la 1º rama completa hasta el nivel seleccionado.
2. Evalúo los nodos “hoja” y retrotraigo los VPR hacia arriba.
3. Genero las siguientes ramas, pero por cada hoja evalúo y comparo su valor con el
de la rama anterior. Ejemplo: el nodo de valor 7 no cumple la regla de corte, pero
al generar el siguiente se produce una acción de refutación, es decir, se genera un
estado tal que los siguientes estados “hermanos” son irrelevantes. El nodo con
valor 4 sí cumple con la regla de corte β <= α anterior (4 < 6). A partir de este
nodo, los siguientes “hermanos” pueden ser mayores o menores que 4. Los
mayores serán ignorados por el nodo minimizante y los menores sí serán
considerados por éste e ignorados por el nodo maximizante, según el nivel
analizado.
4. Las reglas de corte se alternan según el nivel.
5. Cada vez que se completa una rama, hay que subir los valores lo más posible y
las comparaciones deben hacerse en todos los niveles, para maximizar la cantidad
de cortes.
6. “Podar” significa no generar ni evaluar los nodos siguientes luego de una
“refutación”.

Este método permite ahorrar varios órdenes de magnitud en la cantidad de nodos


generados y evaluados, llegando al mismo resultado que Minimax. Esto nos permite
generar un árbol de mayor profundidad con los mismos recursos y tomar la decisión final
en base a estados con mayor información.
Ambos métodos eligen la mejor jugada, pero alfa-beta genera y evalúa casi el 50%
menos de nodos, lo que implica que, ante igualdad de recursos y ante un mismo
problema, con alfa-beta se podría llegar casi al doble de profundidad en el espacio
de estados y así tomar decisiones basadas en nodos con mayor información.

Alfa-beta dinámico

Si aplicamos alfa-beta en el ejemplo, no hay poda, es decir, generamos todos los


nodos. Sin embargo podemos generar los nodos en otro orden, ya que las ramas A,
B y C son igualmente posibles desde el nodo inicial. Entonces si generáramos en
orden C, B y A, habrían 2 cortes, en vez de ninguno.
De esta manera podemos maximizar la cantidad de cortes, según como ordenemos
los nodos (de mayor a menor debajo de un nodo maximizante y de menor a mayor
debajo de un nodo minimizante.

Alfa-beta dinámico genera 1º el primer nivel del árbol y lo evalúa heurísticamente,


para seleccionar por cuál rama comenzar. Sin embargo, si al aplicar el método, los
valores obtenidos en esa rama contradicen el valor heurístico, asignado al 1º nivel,
debe abandonarse la rama y continuar con la siguiente.

Ejemplo: se genera el 1º nivel y se ordena según sus valores heurísticos (10, 8 y


6). Al generar el 1º VPR da 1, lo que significa que el máximo valor a subir al nodo
minimizante es 1, mientras que en la siguiente rama se puede subir un 8. En este
caso se abandona la rama y se continúa con la 2º y así sucesivamente.

También podría gustarte