3

私は現在、Alephでシンボリック AI の宿題に取り組んでおり、何時間も取り組んできましたが、まだ最初の段階にいます。皆さんの助けやヒントをいただければ幸いです。

最初の課題は、Aleph での member/2 の実装の再帰的な例を見て、これがどのように機能するかを確認することでした。

mem.b:

% Simple illustration of the learning of recursive predicates
%       in Aleph
% To run do the following:
%       a. Load Aleph
%       b. read_all(mem).
%       c. induce.

% :- modeh(*,mem(+any,+list)).
% :- modeb(*,mem(+any,+list)). 
% :- modeb(1,((+list) = ([-any|-list]))).

:- mode(*,mem(+any,+list)).
:- mode(1,((+list) = ([-any|-list]))).

 :- set(i,3).
 :- set(noise,0).


 :- determination(mem/2,mem/2).
 :- determination(mem/2,'='/2).

次の練習問題は、rev/2 や append/3 などの別の再帰問題に Aleph アルゴリズムを実装することです。これを何時間も試しましたが、開始方法や何をすべきかがよくわかりません。現時点での実装方法は次のとおりです。

rev.b (私は多くのことを試し、今のところすべてをコメントアウトしましたが、本当に混乱しています atm):

% Simple illustration of the learning of recursive predicates
%       in Aleph
% To run do the following:
%       a. Load Aleph
%       b. read_all(rev).
%       c. induce.

% :- mode(*, rev(+startlist,+startreversed,+result)).
% :- mode(1, ((+startlist) = ([-any|-startlistlist]))).
% :- mode(1, ((-result) = ([+any|+result]))).
% :- mode(1, ((-list) = (+result))).

% :- mode(*,rev(+startlist,+endlist)).
% :- mode(1, (length(+startlist, -length) = length(+endlist, -length))).
% :- mode(*,rev(+startlist,-result)).
% :- modeb(*,mem(+any, ([+any|+list]))).
% :- modeb(1, ((-result) = ([+any|+result]))).
% :- modeb(1, ((+list) = (-endlist))).
% :- modeb(1, ((+list) = (-startlist))).
% :- modeb(1, ((+endlist) = ([-any|-endlist]))).
% :- modeb(1, ((+startlist) = ([-any|-startlist]))).
% :- modeb(1, ((-result) = ([+any]))).

%:- mode(*, rev(+startlist, +list)).
%:- modeb(*, ((+startlist) = (+list), (+startlist) = ([-any|-startlist]))).
%:- modeb(*, ((-startlist) = ([+anyend|+anystart]))).
% :- modeb(1, ((+startlist) = ([-any|-startlist]))).
%:- modeb(*, ((+startlist) = ([-anystart|-anyend]))).
%:- modeb(1, ((+startlist) = ([-any|-startlist]))).
%:- modeb(1, ((+list) = ([-any|-list]))).

:- mode(*, rev(+list, +list)).
:- mode(1, ((+list) = ([-anystart|-anyend]))).
:- mode(1, ((-list) = ([+anystart]))).
:- mode(1, ((-list) = ([+anyend]))).
:- mode(1, ((-list) = ([+anyend|+anystart]))).


% :- mode(1, (([+endlist]) = ([+list|+any]))).%, (+starlist) = ([-any|-startlist]))).
% :- mode(1, ((+startlist) = ([-any|-list]))).%, (+endlist) = ([-anyt|-listt]))).

:- set(i,2).
:- set(noise,0).

:- determination(rev/2, rev/2).
% :- determination(rev/3, rev/3).
% :- determination(rev/2, mem/2).
% :- determination(rev/2,rev/2).
% :- determination(rev/2,length/2).
:- determination(rev/2,'='/2).
% :- determination(rev/3, '='/2).

誰かが私の正例と負例のファイルを見たい場合は、私に知らせてください。しかし、主な問題は背景知識ファイルにあると思います。ヒント/ヒント/ヘルプはありますか?

4

0 に答える 0