Por que o Prolog é bom para programação de IA? [fechadas]

25

Estou pesquisando linguagens de programação usadas para programação de IA. Eu sei que o LISP é ensinado como uma linguagem de programação de IA na minha universidade, mas o Prolog raramente é. Eu gosto de Prolog, mas não sou um programador de IA, então não acho que estou qualificado para julgar por que o Prolog é melhor que o LISP / Scheme. Fiquei me perguntando se os programadores tinham alguma entrada sobre este tópico.

Como você poderia argumentar que o Prolog seria mais útil para a programação de IA?

Eu tenho pesquisado um pouco, e o argumento básico que eu tenho visto repetidamente é que, como os pensamentos são apresentados na lógica, e o Prolog é uma linguagem de programação lógica, o Prolog pode construir máquinas de decisão facilmente, ou algo nesse sentido.

Há mais alguma coisa que possa ser dita sobre o Prolog na IA?

2rs2ts
fonte
1
Não é muito trabalhoso escrever um compilador / intérprete Prolog no Lisp. Paul Graham tem um exemplo no On Lisp .
Larry Coleman
Um dos meus colegas de classe também estava me dizendo isso. Achei realmente interessante que a manipulação simbólica do LISP me permitisse recriar o Prolog. Obrigado pelo bom lado!
Jun2 '16
4
@ Larry Coleman: Não é muito trabalhoso escrever um compilador / intérprete ingênuo do Prolog no Lisp. Fazer um que seja eficiente e totalmente funcional não é trivial em qualquer idioma.
APENAS MINHA OPINIÃO correta

Respostas:

19

Do prefácio à Prolog Programming for Artificial Intelligence :

O Prolog é uma linguagem de programação centrada em um pequeno conjunto de mecanismos básicos, incluindo correspondência de padrões, estrutura de dados baseada em árvore e retorno automático. Este pequeno conjunto constitui uma estrutura de programação surpreendentemente poderosa e flexível. O prólogo é especialmente adequado para problemas que envolvem objetos - em particular objetos estruturados - e relações entre eles. Por exemplo, é um exercício fácil no Prolog expressar relações espaciais entre objetos, como a esfera azul atrás da verde. Também é fácil declarar uma regra mais geral: se o objeto X está mais próximo do observador que o objeto Y, e Y está mais próximo que Z, então X deve estar mais próximo que Z. Prolog agora pode argumentar sobre as relações espaciais e sua consistência com o objeto. respeito à regra geral. Recursos como esse tornam o Prolog uma linguagem poderosa para inteligência artificial (IA) e programação não numérica em geral. Existem exemplos bem conhecidos de computação simbólica cuja implementação em outras linguagens padrão levou dezenas de páginas de código não digerível. Quando os mesmos algoritmos foram implementados no Prolog, o resultado foi um programa claro como o de fácil montagem em uma página.

Basicamente, é uma ótima linguagem para expressar vários relacionamentos e objetivos de maneira sucinta, (principalmente) legível e (semi) natural. Um código equivalente, digamos, no Lisps tende a ser mais detalhado e ofuscado em sua intenção, porque você passa muito tempo na coragem e no encanamento de gerenciar e raciocinar sobre relacionamentos.

APENAS MINHA OPINIÃO correta
fonte
Minha menor adição aqui seria que o Prolog permite que você declare fatos e depois regras com base nesses fatos. Suas regras podem ser usadas pelo Prolog para raciocinar e responder a outras consultas deduzindo logicamente as respostas. Por exemplo, se um fato afirma que A é um ancestral de B e outro fato afirma que B é um ancestral de C, o Prolog pode deduzir que A deve ser um ancestral de C sem que você precise escrever um algoritmo para verificá-lo.
precisa saber é o seguinte
25

Fiz uma introdução ao curso de IA na minha graduação que usava o Prolog para implementar um sistema especialista.

Um sistema especialista é um software usado para resolver um problema muito específico cuja solução depende de um grande número de regras e variáveis.

Por exemplo, você pode imaginar um sistema especialista que diga se você deve levar um guarda-chuva com você quando sai ou não; você forneceria um conjunto de dados (nublado, chovido no dia anterior, em que estação é etc.) e o sistema especialista passaria por regras para fornecer uma resposta (se estiver nublado e chovido) um dia antes, você deve levar um guarda-chuva).

A natureza do Prolog torna muito simples a implementação de regras e fatos (no Prolog, tudo é uma regra ou um fato) e, em seguida, "consulta o banco de dados" (obtenha uma resposta para sua pergunta), mesmo quando você tem milhares dessas regras e fatos .

Se você estiver interessado no tópico, eu recomendo que você instale um intérprete Prolog e tente implementar um sistema especialista muito básico para ter uma idéia dele - ele pode ajudar a entender por que é uma ferramenta tão poderosa para essas tarefas.

Bitgarden
fonte
Li em minha pesquisa que o Prolog facilita a implementação de sistemas especializados. Obrigado por apoiar-se que com alguma explicação :)
2rs2ts
16

A diferença é um pouco como usar o SQL para consultas ao banco de dados, em vez de escrever um programa, digamos, C. No SQL, você diz o que deseja - mas não precisa (diretamente) especificar o algoritmo usado para derivá-lo.

Às vezes, um programa Prolog é chamado de banco de dados, mas é realmente um conjunto de instruções lógicas predicadas. O mecanismo de avaliação pega a consulta e executa substituições com base nas instruções lógicas de predicado, fazendo uma pesquisa para encontrar soluções corretas. Todos os algoritmos de pesquisa necessários (muito mais envolvidos do que uma consulta SQL) são incorporados ao compilador Prolog.

Uma consulta SQL, se você implementasse a mesma lógica ingenuamente em C, não precisaria muito mais do que loop e condicionais if / else.

Uma consulta Prolog, implementada em C, precisaria (pelo menos) de uma pesquisa de retorno usando a técnica de união. E isso, novamente, é uma solução ingênua.

Um certo tipo de programação de IA envolve muito do tipo de pesquisa que o Prolog faz. Sem surpresa, realmente - originalmente que a programação de IA foi feita no Lisp ou em alguma outra linguagem, mas o Prolog foi escrito especificamente para fazer o trabalho.

A lógica de predicados é a abordagem natural para definir esse estilo de problema de IA e, no Prolog, depois de ter essa definição, você pode executá-la diretamente, sem ter que implementar todos esses algoritmos de pesquisa desajeitados.

Steve314
fonte
3

Tomei 2 módulos de Prolog na Universidade e gostei muito de desenvolver o idioma.

É particularmente bom para sistemas especialistas, escrevi um diagnóstico médico de sintomas.

A maneira como me foi explicado foi que o Lisp tende a ser mais usado em alguns países e o Prolog em outros.

Em termos do que é melhor, eu cobri o Lisp brevemente quando fiz o cálculo lambda em um módulo de Ciência da Computação Teórica, por isso sou inclinado a Prolog.

Se você estiver desenvolvendo um aplicativo para lidar com regras e fatos para obter respostas, o Prolog é muito bom e, naturalmente, suporta o retorno.

DazManCat
fonte