Pergunta

Quais são os (prático) aplicações de Unificação?Onde ele está sendo realmente utilizada no mundo real?

Eu não conseguia entender a ideia de que ele é realmente e a razão pela qual é considerado como uma parte de Inteligência Artificial.

Foi útil?

Solução

A unificação é, essencialmente, um processo de substituição.Eu vi ele chamou de "duas vias de correspondência".

No Prólogo, em outra lógica de programação, linguagens e idiomas diretamente com base na lógica de regravação (Maude, Elan, etc...) é o mecanismo pelo qual grátis (lógico) variáveis são vinculadas aos termos/valores.Em Simultâneo Prólogo estas variáveis são interpretadas como canais de comunicação.

IMO, a melhor maneira de entender é com alguns exemplos de matemática (unificação foi/é um da base de dados de mecanismo de chave, por exemplo, no contexto da automatizado teorema de equipamentos para assar pesquisa, um sub-campo da inteligência artificial;outro uso no inferência de tipo de algoritmos).Os exemplos que seguem são tiradas do contexto de computador sistemas de álgebra (CAS):

Primeiro exemplo:

dado um conjunto Q e duas operações binárias * e + sobre ele, em seguida, * é de esquerda distributivo que + se:

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

este é um regra de reescrita (um conjunto de regras de reescrita é uma a reconfiguração do sistema).

Se queremos aplicar esta regra de reescrita para um caso específico, a dizer:

a * (1 + b)   |2|

nós unificar (através de um algoritmo de unificação) este termo, |2|, com o do lado esquerdo (lhs) de |1| e temos este (trivial de propósito) a substituição de (a mais geral unificador, mgu):

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

Agora, aplicando-se |3| para o lado direito (rhs) de |1|, temos, finalmente:

(a * 1) + (a * b)

Esta era simples e apreciar o que a unificação pode fazer vou mostrar um pouco mais complexa exemplo.

Segundo exemplo:

Dada esta regra de reescrita:

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

aplicamos a equação:

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

(lhs de |5| unir para lhs de |4|), então temos mgu:

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

Observe que X e x são duas variáveis diferentes.Aqui temos duas variáveis, X e Y, que correspondem a dois termos compostos, (x+1) e (x-1), e não de simples valores ou variáveis.

Podemos aplicar esta mgu, |6|, para rhs de |4| e, em seguida, colocamos de volta esta em |5|;assim, temos:

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

e assim por diante.

(Esperando que eu não algum erro ou isso pode confundir os neófitos ainda mais.)

Outras dicas

Unificação é um mecanismo -chave em Digite inferência. Praticamente falando, a unificação nesse contexto reduzirá bastante o desgaste nos dedos.

Prólogo, por exemplo, utiliza a unificação de encontrar valores para as variáveis que satisfazem as regras - ver esta explicação para um exemplo.Eu espero é uma técnica comum na lógica linguagens de programação em geral, apesar de eu não ter experiência com quaisquer outros.

A unificação é como correspondência de padrões, onde você esfregar juntos duas estruturas, onde as variáveis são permitidos para coincidir com os valores nos outros.

A forma mais simples de unificação acontece sempre que você chamar uma função em uma linguagem normal.O autor da chamada tem argumentos, e o receptor tem parâmetros.Os parâmetros são "vinculados" os argumentos, e que produz uma instanciação da função.

Outra forma simples de unificação é quando você usa uma expressão regular para correspondência, por exemplo, em um prompt de comando você pode dizer dir x*y*.z* que irá corresponder a alguns, mas não todos os nomes de arquivo.

A Inteligência Artificial não gosta de fazer uso de motores de inferência, para tentar simular o raciocínio a partir de um corpus de conhecimento, geralmente na forma de instruções em uma lógica.Para escolher um estúpido exemplo, você pode "saber" que "todos os homens são mortais", como em forall(x)(man(x) implies mortal(x)).Então, se você faz uma pergunta: "Sam mortal" como mortal(Sam)?, você poderia unificar-se que com a regra para obter uma nova pergunta "é Sam, um homem" man(Sam)?

Espero que ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top