# Ingeniería del conocimiento/Métodos de resolución de problemas
## Métodos de resolución de problemas

Diferentes son las técnicas de resolución de problemas que se pueden utilizar para las tareas que debe realizar un SBC. Existen ciertas técnicas generales que se pueden aplicar a diferentes tipos de dominios y tareas. De ellas destacaremos las tres más utilizadas:
* Clasificación Heurística (Heuristic Classification)
* Resolución Constructiva (Constructive Problem Solving)
* Hipótesis y Prueba Jerárquica (Hierarchical Hipotesize and Test)

### Clasificación Heurística

La clasificación es un método utilizado en muchos dominios. El elemento esencial de ésta consiste en que el experto escoge una categoría de un conjunto de soluciones previamente enumerado.
En dominios simples, el disponer de las características esenciales de cada una de las categorías es suficiente para establecer la clase del problema y su solución. Esto no ocurre así cuando la complejidad del problema aumenta, pues las características esenciales son cada vez más difíciles de identificar. El objetivo de la técnica de clasificación heurística será obtener y representar el conocimiento necesario para que la asociación problema-solución se pueda realizar.
Se define como clasificación heurística a toda asociación no jerárquica entre datos y categorías que requiere de inferencias intermedias. Es decir, el establecer la clase de un problema requiere realizar inferencias y transformaciones sobre éste, para poder asociarlo con la descripción de la clase. El esquema de razonamiento para hacer estas inferencias se ha de adquirir del experto.
La clasificación heurística se divide en tres etapas:

#### 1. Abstracción de los datos

    Por lo general, se hace una abstracción del caso concreto para acercarlo a las soluciones que se poseen.

#### 2. Asociación heurística

    Se busca la mayor coincidencia entre el caso abstraído y las soluciones. Esta asociación es de naturaleza heurística, es decir, depende de conocimiento basado en la experiencia, y, por lo general, la correspondencia entre caso y soluciones no será uno a uno, existirán excepciones, y las coincidencias no serán exactas.
    La solución corresponderá con la que mejor coincida con la abstracción de los datos.

#### 3. Refinamiento de la solución

    Haber identificado la abstracción de la solución reducirá el espacio de búsqueda, ahora será necesario buscar la mejor solución determinada por la solución abstracta. Esto puede necesitar de más deducciones, o de la utilización de más información. De esta manera se debe reducir el espacio de búsqueda hasta encontrar la mejor solución.
En la siguiente figura se puede ver un esquema del proceso.
Archivo:Clasificación heurística.svg
Dentro de este proceso, un punto importante es la abstracción de los datos. Tres son las más utilizadas::

#### Abstracción definicional

    Se deben extraer las características definitorias del problema y focalizar la búsqueda con éstas. Le corresponde al experto decidir cuáles son esas características.

#### Cualitativa

    Supone abstraer sobre valores cuantitativos, convirtiéndolos en cualitativos (e.g.: Fiebre = 39 grados ===> Fiebre = alta).

#### Generalización

    Se realiza abstracción sobre una jerarquía de conceptos (e.g.: forma = pentágono ===> forma = polígono).
Se puede ver que esta metodología de resolución de problemas capta una gran cantidad de dominios, siendo adecuada para cualquier problema en el que se pueda hacer una enumeración del espacio de soluciones. Es válida para todas las tareas de análisis.

#### Clasificación heurística en los sistemas de reglas

Por lo general, la construcción de un sistema mediante clasificación heurística basado en reglas es una labor iterativa. A los expertos les es difícil dar las reglas que son capaces de realizar la labor de clasificación, y además encuentran difícil el formalismo de las reglas.
El proceso de refinamiento del sistema ha de hacerse paso a paso, añadiendo nuevas reglas que cubran nuevos casos y vigilando las interacciones. La metodología que se suele seguir es la siguiente:
* El experto da las nuevas reglas al IC.
* El IC cambia la base de conocimiento.
* El IC prueba casos ya resueltos para comprobar inconsistencias.
* Si aparecen errores, se comprueba el nuevo conocimiento con el experto y se empieza de nuevo.
* Se prueban nuevos casos.
* Si no hay problemas se para, si los hay se retorna al principio.
Esta labor iterativa se puede dividir para cada uno de los módulos que componen el sistema, reduciendo de esta manera las interacciones entre diferentes partes del conocimiento.

#### Estrategias de adquisición del conocimiento con clasificación heurística

La aplicación de la clasificación heurística a diferentes problemas ha dado con métodos que permiten dirigir la explicitación del conocimiento por parte del experto de una manera más sistemática, enfocando la labor de extracción en cada uno de los elementos que componen las reglas (hipótesis, evidencias, cadenas de inferencia, hechos intermedios, confianza en las evidencias y las asociaciones evidencia-hipótesis). Algunos de los pasos que debe incluir la adquisición son los siguientes:

##### Diferenciación

    Buscar los síntomas que distinguen entre hipótesis.

##### Frecuencia de condicionalización

    Buscar condiciones de base que hagan a una hipótesis más o menos probable.

##### Distinción de síntomas

    Identificar propiedades de síntomas que indican las causas originales.

##### Condicionalización de síntomas

    Buscar las condiciones bajo las cuales se espera que aparezcan ciertos síntomas dada una hipótesis.

##### División de caminos

    Descubrir los sucesos intermedios entre hipótesis y síntomas que son más probables.

##### Diferenciación de caminos

    Buscar los eventos intermedios que pueden diferenciar hipótesis con similares evidencias.

##### Diferenciación de condiciones

    Determinar el grado de confianza a aplicar al resultado de las condiciones.

##### Condicionalización de condiciones

    Buscar las condiciones de base que afectan a la confianza de las condiciones.
La conjunción de todas estas fases permiten construir la base de conocimiento necesaria para la resolución del problema.

#### Aplicación de la clasificación heurística

Como ejemplo de la técnica de clasificación heurística, vamos a plantear un pequeño SBC para la concesión de créditos bancarios para creación de empresas. El propósito de este sistema será examinar las solicitudes de créditos de clientes con pretensiones de crear una empresa para determinar si se les debe conceder y qué cuantía es la recomendable respecto a la que solicitan.
El problema que se nos plantea tiene por lo tanto una labor de análisis que nos ha de predecir la fiabilidad de si cierta persona, en ciertas condiciones, será capaz de devolver un crédito si se lo concedemos. El número de soluciones a las que podemos llegar es evidentemente finito: el crédito se concede, o no se concede, y en el caso de que se conceda, se decidirá si la cuantía solicitada es adecuada o si sólo se puede llegar hasta cierto límite.
Todas estas características indican que la metodología de resolución que mejor encaja es la clasificación heurística, por lo tanto dirigiremos el planteamiento con las fases que necesita.
Deberemos plantear cuatro tipos de elementos y los mecanismos para transformar unos en otros. El primero será cómo se plantearán los problemas al sistema, es decir, qué elementos se corresponderán con los datos específicos, las solicitudes de crédito.
Esta información ha de definir el estado financiero del solicitante, el motivo por el que pide el crédito, cuánto dinero solicita, etc. Supongamos que una solicitud contiene la siguiente información:
* Si tiene avales bancarios.
* Si tiene familiares que puedan responder por él.
* Si tiene cuentas corrientes, casas, coches, fincas, etc. y su valoración.
* Si tiene antecedentes de morosidad.
* Si ha firmado cheques sin fondos.
* Si tiene créditos anteriores concedidos.
* Tipo de empresa que quiere crear.
* Cantidad de dinero que solicita.
Esta información deberá convertirse mediante el proceso de abstracción de datos en los problemas abstractos a partir de los cuales se hará el razonamiento. Podríamos decidir que nuestras soluciones abstractas quedan definidas por los siguientes atributos:
* Apoyo financiero: Valoración de la capacidad económica para responder al valor del crédito que solicita. Este apoyo se puede evaluar con la información sobre avales y personas allegadas que puedan responder por él.
* Bienes: Dinero o propiedades que puedan usarse para responder por el crédito o que se puedan embargar en caso de no devolución.
* Fiabilidad de devolución: Información sobre si el cliente tiene antecedentes económicos positivos o negativos.
* Compromiso: Información sobre si ya se tienen compromisos económicos con esa persona o si se tienen intereses especiales con ella.
* Viabilidad de la empresa: Tipo de empresa que se quiere crear y su posible futuro.
Supondremos que estos cinco atributos pueden tomar valores cualitativos que estarán dentro de este conjunto: muy bueno, bueno, normal, regular, malo, muy malo.
Para realizar la abstracción de datos se podrían dar un conjunto de reglas que harían la transformación, como por ejemplo:
* si avales > 10 millones o tío rico entonces apoyo financiero bueno
* si avales entre 10 millones y un millón entonces apoyo financiero normal
* si avales < 1 millón entonces apoyo financiero malo
* si suma bienes < 10 millones entonces bienes malo
* si suma bienes entre 10 y 20 millones entonces bienes normal
* si suma bienes > 20 millones entonces bienes bien
* si cheques sin fondos o moroso entonces fiabilidad muy mala
* si fábrica de agujeros entonces viabilidad muy mala
* si hamburguesería o heladería entonces viabilidad normal
* si grandes almacenes o proveedor de Internet entonces viabilidad muy buena
* si concedido crédito < 1 millón entonces compromiso regular
* si concedido crédito > 10 millones o hermano del director entonces compromiso bueno
El conjunto de soluciones abstractas a las que podría dar el análisis de las solicitudes podría ser el siguiente:
* Denegación: no hay crédito para el cliente.
* Aceptación: se acepta el crédito tal como se solicita.
* Aceptación con rebaja: se acepta el crédito, pero se rebaja la cantidad solicitada; harán falta reglas para crear la solución concreta indicando la cantidad final que se concede.
* Aceptación con interés preferente: se concede la cantidad solicitada, pero además se rebajan los intereses que normalmente se ponen al crédito; en este caso también hará falta generar una solución concreta.
Ahora nos faltan las reglas que nos harán la asociación heurística entre los problemas abstractos y las soluciones abstractas. Un conjunto de reglas que cubre una pequeña parte del espacio de soluciones podría ser:
* si apoyo financiero regular y bienes malo entonces denegar
* si fiabilidad mala o muy mala entonces denegar
* si apoyo financiero normal y bienes normal y viabilidad buena entonces aceptar con rebaja
* si apoyo financiero bueno y bienes normal y compromiso normal y viabilidad buena entonces aceptar
* si apoyo financiero bueno y bienes bueno y compromiso muy bueno y viabilidad muy buena entonces aceptar con interés preferente
Por último, nos hacen falta reglas para poder generar soluciones concretas en los casos que son necesarias; algunas reglas podrían ser:
* si aceptación con rebaja y petición > 5 millones y bienes = 5 millones entonces rebaja a 5 millones
* si aceptación con interés preferente y petición > 10 millones y bienes > 10 millones entonces rebaja de un 1% de interés
* si aceptación con interés preferente y hermano del director entonces rebaja de un 2% de interés.....

### Resolución Constructiva

En contraste con la clasificación heurística, hay dominios en los que las soluciones no se pueden enumerar a priori, sino que la solución ha de construirse. Por ejemplo, en problemas de diseño, o de planificación, y por lo general, todos los sistemas que incluyen tareas de síntesis.
Este tipo de problemas se pueden atacar mediante métodos no guiados por conocimiento, pero obtener una solución satisfactoria es computacionalmente prohibitivo.
Construir una solución necesita que exista un modelo de la estructura y el comportamiento del objeto que se desea construir, modelo que debe contener conocimiento acerca de las restricciones que se deben satisfacer. Este conocimiento debe incluir:
* Restricciones en la configuración de los componentes.
* Restricciones respecto a las entradas y salidas.
* Interacciones entre estos dos tipos de restricciones.
Dos son las estrategias generales que se siguen para la resolución de este tipo de problemas:
* Proponer y aplicar (Propose and apply).
* Mínimo compromiso (Least commitment).

#### Proponer y aplicar

En principio, el experto debe tener una idea clara de la descomposición en tareas del problema y de las relaciones espacio-temporales entre éstas, para de esta manera plantear las restricciones que se tienen que cumplir. Se han de definir también las operaciones que se pueden efectuar en cada estado de la resolución, cuándo se pueden aplicar y cuáles son sus efectos. Los pasos que se siguen en esta metodología son los siguientes, para cada tarea a realizar para alcanzar la solución:
* Inicializar el objetivo: se crea el elemento que define el estado actual.
* Proponer un operador: se seleccionan operaciones plausibles sobre el estado actual.
* Podar operadores: se eliminan operadores de acuerdo con criterios globales. Estos criterios globales consistirán en criterios de consistencia generales que permiten descartar operadores que, aún siendo aplicables, se ve claramente que no mejorarán la solución (e.g.: no tiene sentido escoger el operador que deshaga el efecto del último operador aplicado).
* Evaluar operadores: se comparan los efectos de los operadores sobre la solución y se evalúa su resultado. Es en este punto donde interviene el conocimiento del experto para realizar la evaluación de los operadores.
* Seleccionar un operador: se escoge el operador mejor evaluado.
* Aplicar el operador: se aplica el operador al estado actual.
* Evaluar el objetivo: Se comprueba si se ha llegado al objetivo, continuando si se ha cumplido, o reconsiderando si no.

#### Mínimo compromiso

Un planteamiento alternativo consiste en partir de soluciones parciales e ir reformándolas hasta llegar a la solución. La estrategia sería la siguiente:
* Partir de una solución inicial no óptima, pero que satisfaga las restricciones.
* Hacer una modificación sobre la solución. Esta modificación ha de hacerse de acuerdo con la heurística de mínimo compromiso, es decir, escoger la acción que menos restricciones imponga sobre la solución y, por lo tanto, menos restricciones imponga sobre el próximo paso.
* Si la modificación viola alguna de las restricciones, se intenta deshacer alguno de los pasos anteriores, procurando que las modificaciones sean las mínimas. Esta modificación no tiene por qué ser precisamente deshacer el último paso que se realizó.
El conocimiento del experto ha de aparecer en la evaluación de los efectos de los operadores sobre las restricciones, de manera que se pueda escoger siempre el operador con menos efecto sobre éstas y que permita más libertad de movimientos.

### Hipótesis y Prueba Jerárquica

Esta metodología combina aspectos de la clasificación heurística y la resolución constructiva de problemas. Está indicado para problemas en los que:
* El espacio de soluciones es muy grande, pero enumerable.
* La solución puede ser una combinación de un conjunto de hipótesis.
Parte de la idea de que el espacio de soluciones está organizado jerárquicamente, de manera que en niveles más altos se encuentran soluciones más generales, que se deben refinar mediante el conocimiento que guiará a través del árbol de soluciones a soluciones más concretas.
La estructuración en forma jerárquica ayuda a plantear el problema y a focalizar la solución. Será labor del experto el definir la jerarquía y el conocimiento necesario para evaluar el estado de la solución en cada nodo, tanto para descender hacia soluciones más concretas como para descartar ramas.