Pregunta

¿Cuáles son las aplicaciones (prácticas) de Unificación ? Donde realmente se está utilizando en el mundo real?

No podía entender la idea de lo que es realmente y por qué se considera como parte de la Inteligencia Artificial.

¿Fue útil?

Solución

Unificación es esencialmente un proceso de sustitución . He visto que llamó "bidireccional de adaptación".

En Prolog, en otros lenguajes de programación lógica y en las lenguas directamente basada en la lógica de reescritura ( Maude , Elan , etc ...) es el mecanismo por el cual las variables libres (lógicos) son términos se unen a / valores. En concurrente Prolog estas variables se interpretan como canales de comunicación.

OMI, la mejor manera de entender que es con algunos ejemplos de las matemáticas (unificación era / es un mecanismo clave base, por ejemplo, en el contexto de automatizado investigación demostradores de teoremas, un sub-campo de la IA; otro uso en en algoritmos de tipo de inferencia ). Los ejemplos que siguen se han tomado del contexto de href="http://en.wikipedia.org/wiki/Computer_algebra_system" (CAS) :

Primer ejemplo:

dado un conjunto Q y dos operaciones binarias * + y en él, a continuación, * es de izquierda distributiva sobre + si:

X * (Y + Z)   =   (X * Y) + (X * Z)   |1|

Este es un regla de reescritura (un conjunto de reglas de reescritura es una reescritura sistema ).

Si queremos aplicar esta regla de reescritura a un caso específico, por ejemplo:

a * (1 + b)   |2|

unificar (a través de un algoritmo de unificación) este término, | 2 |, con el lado izquierdo ( LHS ) de | 1 | y tenemos este (trivial a propósito) sustitución (el unificador más general , MGU ):

{X/a, Y/1, Z/b}   |3|

Ahora, aplicando | 3 | a la derecha ( RHS ) de | 1 |, tenemos, por último:

(a * 1) + (a * b)

Esta era simple y apreciar lo que puede hacer la unificación voy a mostrar un pequeño ejemplo más complejo.

Segundo ejemplo:

Teniendo en cuenta esta regla de reescritura:

log(X,Y) + log(X,Z)   =>   log(X,Y*Z)   |4|

lo aplicamos a esta ecuación:

log(e,(x+1)) + log(e,(x-1)) = k   |5|

( LHS de | 5 | unificar a LHS de | 4 |), por lo que tenemos este MGU

{X/e, Y/(x+1), Z/(x-1)}   |6|

Tenga en cuenta que X y X son dos variables diferentes. Aquí tenemos dos variables, X e Y, que responden a dos términos compuestos , (x + 1) y (x-1), no los valores simples o variables.

Aplicamos este MGU , | 6 |, a RHS de | 4 | y luego se vuelve a poner esto en | 5 |; por lo que tenemos:

log(e,(x+1)*(x-1)) = k   |7|

y así sucesivamente.

(Con la esperanza de que no lo hice ningún error o esto puede confundir a los neófitos aún más.)

Otros consejos

Unificación es un mecanismo clave en inferencia . En términos prácticos, la unificación en este contexto reducirá en gran medida el desgaste de los dedos.

Prolog , por ejemplo, utiliza la unificación de encontrar los valores de las variables que cumplan las normas - ver este explicación de un ejemplo. Supongo que es una técnica típica en lenguajes de programación lógicos en general, aunque no tengo experiencia con los demás.

Unificación es como reconocimiento de patrones, donde se rozan dos estructuras, donde se permiten variables en uno para que coincida con los valores en la otra.

La forma más simple de la unificación ocurre cada vez que se llama a una función en un lenguaje normal. La persona que llama tiene argumentos, y el destinatario de la llamada tiene parámetros. Los parámetros se "obligados a" los argumentos, y que produce una instanciación de la función.

Otra forma simple de la unificación es cuando se utiliza una expresión regular para la coincidencia, por ejemplo, en un símbolo de sistema se podría decir dir x*y*.z* que coincidirá con algunos, pero no todos los nombres de los archivos.

Inteligencia Artificial le gusta hacer uso de motores de inferencia, para tratar de simular el razonamiento a partir de un corpus de conocimiento, por lo general en forma de declaraciones en una lógica. Para escoger un ejemplo tonto, es posible que "sabe" que "todos los hombres son mortales", como en forall(x)(man(x) implies mortal(x)). Entonces, si usted hace una pregunta "Sam es mortal", como mortal(Sam)?, que podría unificar a que con la regla para obtener una nueva pregunta "Sam es un hombre" man(Sam)?

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top