Senin, 22 September 2008

Software Prolog di Linux (Bagian 1)

Artificial Intelligence sangatlah kontroversial, tetapi saya akan mendekatinya dengan artikel yang sangat simple. Artificial Intelligence bukanlah suatu hal baru yang harus dipelajari lagi dimasa sekarang. Artificial Intelligence sudah ada sejak jaman dulu. Mirip dengan sebuah peradaban Artificial Intelligence pun semakin hari semakin berkembang. Dan pada akhirnya munculah sebuah bahasa sebagai tool dari implementasi Artificial Intelligence. Untuk penggunan prolog berbasis linux itu sendiri diperlukan adanya sebuah compiler.
Ada bermacam macam jenis compiler prolog yang berjalan di linux. Salah satunya adalah SWI-Prolog. Prolog adalah bahasa yang sangat flexibel. Tidak seperti bahasa pemograman yang lain seperti C, C++, atau Java. Prolog berbasis pada logika matematika formal. Sebuah program prolog biasanya dibuat oleh adanya fakta dengan seperangkat aturan – aturan yang ada. Untuk mencapai solusi akhir, pogram prolog harus memenuhi aturan aturan yang ada. Dengan memenuhi aturan aturan tersebut, membolehkan komputer untuk memutuskan solusi dengan sendirinya. Dalam prolog, normalnya fakta disimpan dalam file yang berbeda sebagai pengetahuan dasar, dan aturan aturan dalam file lainnya sebagai program aktual.

Adapun software compiler prolog yang berjalan di linux adalah sebagai berikut...

1.swi-prolog
url : (http://www.hio.hen.nl/faq/SWI-Prolog.html)

2.gprolog (untuk gnome)

keduanya berjalan diatas konsole. jadi prolog tidak membutuhkan editor lain kecuali sebuah konsole.

Adapun contoh program prolog untuk pencarian Depth First Search adalah sebagai berikut....
Seperti yang telah saya kemukakan sebelumnya, program prolog dibagi 2 yaitu knowledge base dan rules.

Program 1 (simpan dengan nama graph.pl)
--------------------------------------------------------------------------------
% Name: Edy Mulyanto
% Date: Sept ,4 , 2008
% ================================
% ini adalah node yang digunakan
% algoritnma Depth First Search
% Knowlodge Base.
% ================================

% linked/2
% node dan cabang - cabangnya

linked(a, [b,c,d]).
linked(b, [e,f]).
linked(c, [g,h]).
linked(d, [i,j]).
linked(e, [k,l]).
linked(f, [l,m]).
linked(g, [n]).
linked(h, [o,p]).
linked(i, [p,q]).
linked(j, [r]).
linked(k, [s]).
linked(l, [t]).
linked(m, []).
linked(n, []).
linked(o, []).
linked(p, [u]).
linked(q, []).
linked(r, []).
linked(s, []).
linked(t, []).
linked(u, []).

% arc/2
% Aturan yang mengecek bila terdapat
% sebuah garis yang mengarah ke node yang sama.

arc(X,Y):- linked(X,L), member(Y,L).
------------------------------------------------------------------------


Program 2
------------------------------------------------------------------------
% Name: Edy Mulyanto
% Date: Sept ,4 , 2008
% ================================
% Implementasi Algoritma DFS
% pada Prolog dengan menggunakan
% graph.pl knowlodge base
% ================================

reverse_write([]).
reverse_write([H|T]):-reverse_write(T), write(H), nl.
solve(INode, Solution):- consult('graph.pl'),
query_goal,
dfs([], INode, Solution),
reverse_write(Solution).

query_goal :- abolish(goal(Node)),
write('Goal? [Followed by a period]'),
nl,
read(Node),
assert(goal(Node)).
goal(standard).
dfs(Path, Node, [Node|Path]):- goal(Node).
dfs(Path, Node, Sol):- arc(Node, Node1),
--------------------------------------------------------------------------------


selamat berkarya dengan prolog semoga dapat membantu...

by Edy Mulyanto, S.si, M.kom.

Tidak ada komentar:

Design by The Blogger Templates

Design by The Blogger Templates