برامج

أدخل إلى عالم الذكاء الإصطناعي مع لغة Prolog [الأرشيف] - برامج نت

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : أدخل إلى عالم الذكاء الإصطناعي مع لغة Prolog


boubekeur
10-07-2006, 02:12 PM
السلام عليكم
هذه أول مشاركة لي بالقسم و أردت أن أعرفكم على لغة تعتبر من أهم لغات الذكاء الإصطناعي أو IA

مدقدمة عن اللغة
البرولوغ (Prolog) هي لغة برمجة منطقية (logic programming) . الأسم مأخوذ من الفرنسية programmation enlogique (برمجة المنطق)، تم أختراع اللغة بواسطة ألين كولميرايور حوالي العام 1972. كانت محاولة لجعل لغة البرمجة قادرة على أستخدام عبارات منطقية بدل أن تكون تعليمات محددة تلقن الى الحاسوب. صممت اللغة أساساً لتستخدام في عمل برامج معالجة اللغات الطبيعية.
تستخدم لغة البرولوغ في العديد من برامج الذكاء الإصطناعي (artificial intelligence) و برامج معالجة اللغات الطبيعبة. عبارات وقواعد اللغة تعبتر بسيطة جداً وواضحة (يتم كتابة البرنامج بالكامل بأستخدام الحقائق و القواعد). العديد من الباحثين الذين يقودون تطبيقات حديثة للبرلوغ التي جاءت نتيجة أستخدام نسخات مختلفة من البرلوغ كنواة في مشاريع أنظمة حاسوب الجيل الخامس (fifth generation computer systems أختصاراً FGCS).
أساسيات لغة prolog
الحقائق Facts

تختلف طريقة البرمجة في برلوغ عن اللغات التقليدية. في برلوغ يتم كتابة الحقائق (Facts) والقواعد (Rules) في قاعدة بيانات، ثم يتم كتابة أستفسارت queries من قاعدة البيانات. الحقيقة عبارة عن سند (predicate) (الوحدة الأساسية للبرلوغ). يتكون السند من رأس (head) وعدد من الوسائط (arguments). مثال

cat(tom).

في هذا المثال نقول بباسطة أن هناك توم 'tom' وهو قط 'cat'،بتعبير أدق 'cat' هو رأس (head) السند و 'tom' هو وسيطة (argument). هنا عدد من الأستفسارات التي يمكن سؤالها بناء على هذه الخقيقة:
هل توم قط (is tom a cat)؟




?- cat(tom).yes.ببساطة هنا نسأل إذا توم قط ويجيبنا برلوغ بنعم (yes).




ماهي الأشياء التي هي قط (what things are cats)؟

?- cat(X).X = tom;yesالقواعد Rules

أن النوع الثاني من العبارت في برلوغ هي القواعد:

father(X,Y) :- parent(X,Y),male(X).
أنواع المعلومات Data types
لاتحتوي لغة البرلوغ على أنواع معلومات (Data types) تقليدية كلغات البرمجة التقليدية الأخرى. ولكن على عناصر تركيبية (lexical elements) .
الذرات Atoms

يعرف النص الثابت في برلوغ بمعنى الذرات Atoms. الذرة عبارة عن سلسة من الحروف،الأرقام و رمز شرطة-السفلية (_) (underscores) على أن يبدأ النص بحرف أنجليزي صغير (lower-case). عادة، عادة اذا كان هناك رمز ليس بحرف أو رقم فأنه يوضع بين (علامة التنصيص الأحادية) (مثال '+' يعتبر ذرة، في حين + يعتبر معامل)
الأرقام

معظم نسخ البرلوغ لاتميز بين الأعداد الصحيحة و الأعداد الحقيقية.
المتغيرات Variables

يعبر المتغيرات Variables عن نص يتكون من الحروف،الأرقام و رمز شرطة-السفلية (_) على أن يبدأ النص بحرف أنجليزي كبير (upper-case). عللى عكس اللغات القولية (imperative programming languages) في بيئة البرلوغ المتغير ليس مكان في الذاكرة (مستوعب) يمكن تخزين االقيم فيه. تصرف المتغيرات يتبع النمط لأيجاد القيمة.


لتجميل كومبايلر لغة prolog
هذا هو العنوان
papriko.4000webs.com/prolog.exe (http://papriko.4000webs.com/prolog.exe)




درس أولي : تسطيب الكومبايلر وكيفية تنفيذ البرامج




في الحقيقة يوجد عدة كومبالرات وبعدة لغات أجنبية وأنا أخترتلكم أخف واحد و أسهل واحد في التنصيب و مجاني وباللغة الأنجليزية
بعد تنزيل setup للكومبايلر نسطبه عادي
أما البرنامج المعالج فسنجده في مجلد خاص به على قائمة ابدأ وعليه هذه الأيقونة
http://papriko1.googlepages.com/image001.png
الخطوات لكتابه برنامج وتنفيذه



أعلمك أن الحقائق أو المعطيات والقواعد تكتب داخل ملف أولي عادي مثل المفكرة و نحفظها بأي اسم على شرط أن تكون لاحقته( extension ) هي PL
مثل الصورة
http://papriko1.googlepages.com/image003.gif
تنفيذ الملف


لتنفيذه نتبع الخطوات الآتية
1-نذهب الى البرنامج ونفتحه ونختار من الأعلى قائمة file ثم نختار العنصر Consult… مثل الصورة
http://papriko1.googlepages.com/image004.gif
أو يمكننا الضغط مرتين على الملف الأولي مباشرة
وبمجرد ادارج الملف أو فتحه في البرنامج سيقوم بمعالجته فأن لم يجد أخطاء ستظهر مثل ما في الصورة
http://papriko1.googlepages.com/image005.gif
أو مثل الصورة هذه
http://papriko1.googlepages.com/image006.gif
وان وجدت أخطاء برمجية فسيكتب لك سطر الخطأ ورقم عموده
http://papriko1.googlepages.com/image007.gif

boubekeur
10-07-2006, 02:16 PM
الدرس الأول : عمليات بسيطة في لغة prolog

( استعمال الحقائق وطرح الآسئلة على المعالج )

إعداد BoubeKeur@Bramjnet







المثال الأول عن الحقائق

سنقوم بأنشاء ذرة أي ملف أولي يحتوي على مجموعة من طلاب كلية على الشكل التالي

سنقوم يأنشاء الحقيقة stud ونقوم بتعبئتها بالحقائق التاية
اسم الطالب
سنة ميلاد الطالب
جنس الطالب
التخصص
درجة الطالب

على الشكل




stud(student,birth,option,degree)

على الشكل التالي



/* the precedure student has as arguments : name of student,sex of student,year of birth,studies,ans his degree */




stud(ali,m,1980,biology,a).




stud(kameel,m,1982,english,a).




stud(diana,f,1980,data_processing,b).




stud(ahmed,m,1981,french,c).




stud(sameera,f,1981,biology,b).




stud(reema,f,1980,history,a).




stud(yassine,m,1981,french,a).




stud(yassmina,f,1982,psychology,c).




stud(omar,m,1981,history,c).




stud(youssouf,m,1980,biology,a).




stud(michel,m,1980,french,b).




نحفظ ما كتبناه على المفكرة في ملف ذو لاحقة PL



قد تلاحظ وجود الآتي
/* تعليــــــــــــــــــقات تعليــــــــــــــــــقات */
فهنا عمل /* xxxxxx*/ هي نفس عملها في لغة سي ++ أي أن هذه تعليقات لا تدخل عنذ تنفيذ البرنامج
كما تلاحظ أن كل حقيقة facts تنتهي بنقطة ( من قواعد اللغة)
ننفذ البرنامج
ونبدأ بطرح الأسئلة
1- نكتب في المعالج العبارة التالية ( مع العلم أن المعاج تلقائيا سيضع علامة ?- ) دلاللة على أنه جاهز للأجابة على الأسئلة


stud(diana,f,1980,data_processing,b).

في هذا السؤال أشرنا الى المعالج بالتحقق من المعلومة التي أعطيت له
وسيجيب المعالج بكلمة YES

2- مثلا نريد البحث عن اسماء الطالبات البنات
نطرح السؤال الآتي

stud( Whogirl, f, _, _, _).

علما بأن
Whogirl هو متغير أي variable ويجب أن يبدأ بحرف أنكليزي كبير و يمكن أن نستبدله بكلمة أخرى غير الكلمات الخاصة بالبرنامج
أما هذا الرمز _ فيعني أننا لا نضع شرطا على تلك الخانة أي يأخذ كل الحالات
ويجب أن ينتهي السؤال بنقطة أيضا
بعد كتابة الجملة ووضع النقطة والضغط على enter سعيطيك اسم أول بنت في الملف



Whogirl = diana

فأن لم يجد نتيجة أخري فسيجيبك ب NO
و ان وجد نتيجة أخرى لا يكتب لك لا YES ولا NO
فإذا ضغطت على enter فسينهي المعالج بحثه عن الحقيقة وان اردت متابعة البحث فأضغط على الفاصلة المنقوطة ;
والنتائج ستكون

Whogirl = diana ;

Whogirl = sameera ;

Whogirl = reema ;

Whogirl = yassmina ;
no

ملاحظة لا تستطيع استعمال كلمة WHO كمتغير لأنها كلمة خاصة بالمعالج ( compiler )

3- نريد البحث عن الطلاب المولودين بين سنة 1980 و 1981
نتكب الأمر الآتي
stud(Wwho,_,N,_,_),1980=<N,N=<1981.
في هذه الحالة N و Wwhoيعتبر متغيرين ) لاحظ أن المتغير يحمل اسم Wwho وليس WHO)
و النتائج هي
Wwho = ali
N = 1980 ;

Wwho = diana
N = 1980 ;

Wwho = ahmed
N = 1981 ;

Wwho = sameera
N = 1981 ;

Wwho = reema
N = 1980 ;

Wwho = yassine
N = 1981 ;

Wwho = omar
N = 1981 ;

Wwho = youssouf
N = 1980 ;

Wwho = michel
N = 1980 ;


انتهى الدرس الأول

boubekeur
10-07-2006, 02:34 PM
وانتظرو دروس مني حول هذه اللغة

NORTONFOX
10-07-2006, 02:43 PM
شكرا جدا ومنتظر دروسك وياريت لو عندك بعض الكتب ايضا

boubekeur
10-07-2006, 02:52 PM
العفو أخي
وانشاء الله أدورلك على كتب

QWERTS
10-07-2006, 04:13 PM
مشكور اخوي والله يعطيك الف الف عافية

boubekeur
10-07-2006, 04:15 PM
الله يعافيك

melll224
10-07-2006, 04:34 PM
مشكور على اللغة القوية هذه

Gangsta
10-07-2006, 04:44 PM
مشكور على المعلومات البرمجية
وعلى البرنامج

بانتظار المزيد من الدروس

يعطيك الف عافية...

veto_44
10-07-2006, 05:00 PM
بارك الله فيك اخي الكريم ولكن عندي استفسار اذا
سمحت انا قرات الموضوع والمقدمة وفهمت ان هذه
اللغة لبرمجة الالكترونيات وليست لبرمجة التطبيقات
على الكمبيوتر مثل البرامج والوب فهل كان فهمي
للموضوع ولهذه اللغة صحيح ام خاطئ ؟

boubekeur
10-07-2006, 05:09 PM
بارك الله فيك اخي الكريم ولكن عندي استفسار اذا
سمحت انا قرات الموضوع والمقدمة وفهمت ان هذه
اللغة لبرمجة الالكترونيات وليست لبرمجة التطبيقات
على الكمبيوتر مثل البرامج والوب فهل كان فهمي
للموضوع ولهذه اللغة صحيح ام خاطئ ؟

فهمك صحيح الى حد 50 في المئة
لأنه عبر هذه اللغة يمكن أن تصنع تطبيقات صغيرة للكمبوتر وخاصة الألعاب المنطقية
كما أنها لغة واسعة المجالات حيث تتوافق مع عدة لغات برمجة معروفة مثل سي ++ و جافا والفورتران
كما أنها اشهر لغة في مجال الذكاء الإصطناعي
وهذا كله لأنها أول لغة تندرج ضمن مجال البرمجة المنطقية
حيث تستعمل منطق الدرجة الأولى ومنطق الدرجة الثانية مع استعمال predicat calculus أي "الحساب الأصلي" .

Goaway
10-07-2006, 05:09 PM
يطيك العافية ومشكور على اللغة الجميلة.. ونوع جديد علي
وان شاء الله .. نقدر نتابع موضوك للاخر لتعلم هذه اللغة..

boubekeur
10-07-2006, 05:12 PM
مشكور على اللغة القوية هذه


مشكور على المرور

veto_44
10-07-2006, 05:19 PM
فهمك صحيح الى حد 50 في المئة
لأنه عبر هذه اللغة يمكن أن تصنع تطبيقات صغيرة للكمبوتر وخاصة الألعاب المنطقية
كما أنها لغة واسعة المجالات حيث تتوافق مع عدة لغات برمجة معروفة مثل سي ++ و جافا والفورتران
كما أنها اشهر لغة في مجال الذكاء الإصطناعي
وهذا كله لأنها أول لغة تندرج ضمن مجال البرمجة المنطقية
حيث تستعمل منطق الدرجة الأولى ومنطق الدرجة الثانية مع استعمال predicat calculus أي "الحساب الأصلي" .

شكرا لك اخي على التوضيح ننتظر منك باقي الدروس
وان شاء الله نستفيد منها اسال الله ان يكون هذا العمل
بميزان حسناتك دمت بخير وعافية .

boubekeur
10-07-2006, 05:22 PM
آمين يا رب العالمين
ومشكور على الأهتمام
وانشاء الله أنا هنزل الدروس هذا الأسبوع

boubekeur
10-07-2006, 09:36 PM
مشكور على اللغة القوية هذه


مشكور على المرور

boubekeur
10-08-2006, 11:01 AM
لتسطيب الكومبايلر أضغط هنا (http://www.bramjnet.com/vb3/showpost.php?p=1704254&postcount=1)
الدرس الأول في prolog (http://www.bramjnet.com/vb3/showpost.php?p=1704254&postcount=2)

naelashi
12-20-2006, 08:54 PM
thank you very much for the wonderful subject .. i need a small favor plz .. i need the free compiler for Prolog because the given link is not working .. and i will be glad if u guys send it to my email .. naelashi@gmail.com .. thank you

Mtv pop
01-03-2007, 03:58 PM
I would like to thank you for the course & for the setup file

hamata00
01-03-2007, 06:29 PM
بارك الله فيك

Ahmed_ghanam
01-04-2007, 01:24 AM
مشكور اخى الكريم جزاك الله خيرا باذن الله اتابع حضرتك

(li) صقر (li)
01-04-2007, 06:32 AM
جزاك الله كل خير أخي العزيز , وننتظر الباقي

boubekeur
06-10-2007, 09:55 PM
ميـــــرسي للكل

y85.fox
06-21-2007, 11:15 PM
مشششششششششكو\ر

اخوي
ما في ثاني

فطوم87
10-28-2008, 11:00 AM
شكرا كتيير على الدروس وانا بدرس البرولوج واتمنى ان تقدم المزيد ... وجزال الله كل خير

CaShKiNgDoM
10-28-2008, 05:59 PM
مشكور أخي على الجهد القيم

abdest
11-16-2008, 11:08 PM
شكرا على الموضوع الشيق

مختار احمد
01-18-2009, 09:13 AM
وين الموضوع

hemhy
01-24-2009, 04:24 AM
السلام عليكم ورحمة الله وبركاته
جزاكم الله خيراً
ولكن أخى إن شاء الله لا تكتب إنشاء الله

phy4eveything
01-24-2009, 10:23 PM
بسم الله الرحمن الرحيم
شكرا اخى على هذا الدرس وفقك الله
وهذا رابط كتاب فى لغة prolog
http://rapidshare.com/files/188921794/prolog-digital.pdf.html

ابوفردة
08-06-2009, 11:19 AM
مشكووووووووووووووووور

dragon_hunter
08-07-2009, 09:11 PM
موضوع رائع شكرا

http://your-picture.info/images/609_Chibi_Naruto_Kakashi_Sasuke_by.jpg

mohamed_177
08-10-2009, 05:02 PM
جزاك الله خيرا
وبارك الله فيك