Prolog가 AI 프로그래밍에 적합한 이유는 무엇입니까? [닫은]


25

AI 프로그래밍에 사용되는 프로그래밍 언어를 연구하고 있습니다. 나는 LISP가 대학에서 AI 프로그래밍 언어로 가르치는 것을 알고 있지만 Prolog는 거의 없습니다. 나는 Prolog를 좋아하지만 AI 프로그래머는 아니기 때문에 Prolog가 LISP / Scheme보다 나은 이유를 스스로 판단 할 자격이 없다고 생각합니다. 프로그래머 가이 주제에 대한 의견을 가지고 있는지 궁금합니다.

Prolog가 AI 프로그래밍에 더 유용 할 것이라고 어떻게 주장 할 수 있습니까?

나는 그것을 조금 연구 해 왔고, 계속해서 본 기본 논쟁은 생각이 논리로 표현되고 Prolog가 논리적 프로그래밍 언어이기 때문에 Prolog는 의사 결정 기계를 쉽게 구축 할 수 있다는 것입니다.

AI에서 Prolog에 대해 말할 수있는 다른 것이 있습니까?


1
Lisp에서 Prolog 컴파일러 / 인터프리터를 작성하는 것은 그리 큰 일이 아닙니다. Paul Graham의 사례는 On Lisp에 있습니다.
래리 콜먼

내 반 친구 중 한 명이 나에게도 말하고있었습니다. LISP의 상징적 인 조작으로 프롤로그를 다시 만들 수 있다는 것이 정말 흥미로 웠습니다. 좋은 옆에 감사합니다!
2rs2ts

4
@Larry Coleman : Lisp에서 순진한 Prolog 컴파일러 / 인터프리터를 작성하는 일은 그리 많지 않습니다. 효율적이고 완전한 기능을 갖춘 제품을 만드는 것은 모든 언어에서 사소한 것이 아닙니다.
저의 올바른 의견에 동의하십시오

답변:


19

인공 지능을위한 서문에서 프롤로그 프로그래밍 까지 :

프롤로그는 패턴 일치, 트리 기반 데이터 구조화 및 자동 역 추적을 포함하여 작은 기본 메커니즘을 중심으로 한 프로그래밍 언어입니다. 이 작은 세트는 놀랍도록 강력하고 유연한 프로그래밍 프레임 워크를 구성합니다. 프롤로그는 특히 오브젝트, 특히 구조화 된 오브젝트 및 오브젝트 간의 관계와 관련된 문제점에 적합합니다. 예를 들어, 프롤로그에서 푸른 구체가 녹색 뒤에있는 것과 같이 물체 간의 공간 관계를 표현하는 것은 쉬운 연습입니다. 객체 X가 객체 Y보다 관찰자에 더 가깝고 Y가 Z보다 더 가까운 경우 더 일반적인 규칙을 쉽게 설명 할 수 있습니다. 이제 Prolog는 공간 관계와의 일관성에 대해 추론 할 수 있습니다. 일반적인 규칙을 존중합니다. 이와 같은 기능으로 Prolog는 인공 지능 (AI) 및 일반적으로 비 숫자 프로그래밍을위한 강력한 언어입니다. 다른 표준 언어로 구현할 때 수십 페이지의 소화 불가능한 코드를 사용하는 상징적 계산의 잘 알려진 예가 있습니다. 동일한 알고리즘이 Prolog에 구현되었을 때, 결과는 한 페이지에 쉽게 맞는 명확한 프로그램이었습니다.

기본적으로 그것은 다양한 관계와 목표를 간결하고 (주로) 읽을 수 있고 (반) 자연스럽게 표현할 수있는 훌륭한 언어입니다. 예를 들어, Lisps의 동등한 코드는 당신이 용기에 많은 시간을 소비하고 관계에 대한 관리 및 추론의 배관에 많은 시간을 소비하기 때문에 의도가 더 장황하고 모호한 경향이 있습니다.


여기에 제가 추가 한 내용은 Prolog를 사용하여 사실 을 선언 한 다음 해당 사실을 기반으로 규칙 을 지정할 수 있다는 것 입니다. 규칙은 다음에 프롤로그에서 사용할 수있는 이유 와 논리적으로하여 다른 쿼리에 응답 추론 답변을. 예를 들어, 사실이 A가 B의 조상이라고 말하고 다른 사실이 B가 C의 조상이라고 말하면, Prolog는 알고리즘을 작성하지 않고도 A가 C의 조상이어야한다고 추론 할 수 있습니다.
code_dredd

25

우리는 전문가 시스템을 구현하기 위해 Prolog를 사용한 AI 과정에 대해 소개했습니다.

전문가 시스템은 솔루션이 많은 규칙과 변수에 의존하는 매우 특정한 문제를 해결하는 데 사용되는 소프트웨어입니다.

예를 들어, 외출 할 때 우산을 가져야하는지 여부를 알려주는 전문가 시스템을 상상할 수 있습니다. 흐린 날, 비가 오는 날, 어떤 계절인지 등의 데이터 세트를 제공하고 전문가 시스템은 규칙을 통해 답변을 제공합니다 (흐리거나 비가 오는 경우). 하루 전에 우산을 가져 가십시오).

Prolog의 특성상 규칙 및 사실 (Prolog에서 모든 것이 규칙 또는 사실임)을 구현 한 다음 수천 개의 규칙 및 사실이있는 경우에도 "데이터베이스 쿼리"(질문에 대한 답변 얻기)를 매우 간단하게 만듭니다. .

이 주제에 관심이 있다면 Prolog 인터프리터를 설치하고 기본적인 전문가 시스템을 구현하여 느낌을 얻으십시오. 이러한 작업에 왜 강력한 도구인지 이해하는 데 도움이 될 수 있습니다.


Prolog를 통해 전문가 시스템을 쉽게 구현할 수 있다는 연구 결과를 읽었습니다. 약간의 설명과 함께 백업 해 주셔서 감사합니다 :)
2rs2ts

16

차이점은 C와 같은 프로그램을 작성하는 대신 데이터베이스 쿼리에 SQL을 사용하는 것과 조금 비슷합니다. SQL에서는 원하는 것을 말하지만 직접 파생하는 데 사용되는 알고리즘을 지정할 필요는 없습니다.

프롤로그 프로그램은 데이터베이스라고도하지만 실제로는 술어 논리 문 세트입니다. 평가 메커니즘은 쿼리를 가져 와서 술어 논리 문에 따라 대체를 수행하고 올바른 솔루션을 찾기 위해 검색을 수행합니다. 필요한 모든 검색 알고리즘 (SQL 쿼리보다 훨씬 많은 관련 알고리즘)이 Prolog 컴파일러에 내장되어 있습니다.

C에서 동일한 논리를 순진하게 구현하려는 경우 SQL 쿼리는 루핑 및 if / else 조건보다 훨씬 더 필요하지 않습니다.

C로 구현 된 Prolog 쿼리는 최소한 Union-find 기법을 사용한 역 추적 검색이 필요합니다. 그리고 그것은 순진한 해결책입니다.

특정 종류의 AI 프로그래밍에는 Prolog가 수행하는 많은 유형의 검색이 포함됩니다. 당연히 AI 프로그래밍은 Lisp 또는 다른 언어로 이루어졌지만 Prolog는 그 일을 위해 특별히 작성되었습니다.

술어 논리는 AI 스타일의 해당 스타일을 정의하는 자연스러운 접근 방식이며, Prolog에서 일단 정의가 있으면 어색한 검색 알고리즘을 모두 구현하지 않고도 직접 실행할 수 있습니다.


3

나는 대학에서 2 개의 프롤로그 모듈을 받았고 언어 개발을 매우 즐겼습니다.

그것은 전문가 시스템에 특히 좋습니다, 나는 의학 증상 진단을 썼습니다.

나에게 설명 된 방식은 특정 국가에서는 리스프가 더 많이 사용되고 다른 국가에서는 프롤로그가 더 많이 사용되는 경향이 있다는 것입니다.

가장 좋은 측면에서, 이론적 컴퓨터 과학 모듈에서 람다 미적분학을 수행했을 때 Lisp를 간략하게 다루었으므로 Prolog에 편향되었습니다.

규칙과 사실을 처리하여 답변을 도출 할 수있는 응용 프로그램을 개발하는 경우 Prolog는 매우 우수하며 자연스럽게 역 추적을 지원합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.