ذكاء-معمل1

advertisement
Lab (1)
‫مقدمة إلى لغة البرولوج ‪Prolog‬‬
‫‪‬‬
‫‪ ‬لغة البرولوج ) ‪ ) PROLOG‬هي اختصار ‪programming in‬‬
‫) ‪ ) LOGIC‬أي البرمجة المنطقية‬
‫‪ ‬وتعتمد لغة البرولوج على مفهوم البرمجة المنطقية‬
‫( ‪ ) Logic Programming‬والتي تتعامل مع جمل )‪) Statement‬‬
‫تحتوي على أشياء ) ‪ ) Objects‬والعالقات ( ‪ ) Relationships‬التي‬
‫تربط بينها وبين الجملة‬
‫‪‬‬
‫‪ ‬أي أن لغة البرولوج تسمح للمبرمج بتمثيل العالقات بين األشياء وتجميع‬
‫وتنظيم هذه العالقات حتى يمكن الوصول إلى استنتاج منطقي من الحقائق‬
‫التي تمثلها تلك العالقات ‪ .‬وذلك على عكس اللغات التقليدية مثل الباسكال‬
‫وسي التي تطلب من المبرمج كتابة الخطوات التفصيلية التي يجب إتباعها‪.‬‬
‫‪‬‬
‫‪ ‬ومن أهم الفروق بين لغة ‪ Prolog‬و اللغات األخرى هي أن لغة ‪Prolog‬‬
‫هي لغة دينامكية ‪Dynamic‬في مستوى كودها‪ ,‬حيث أن الكود ممكن أن‬
‫يتغير مع تنفيذ البرنامج وذلك ببساطة ألن البرنامج يتعلم و يطور من نفسه‬
‫على عكس اللغات التقليدية مثل السي‪ ,‬سي‪ ,++‬جافا ‪ ...‬هي لغات ثابتة‬
‫‪Static‬على مستوى كودها‪.‬‬
‫‪ ‬بمعنى آخر لو وجد لدي كود للغة ‪ Prolog‬مكون من ‪ 20‬سطر مع التنفيذ‬
‫من الممكن أن يزيد إلى ‪ 25‬أو أي عدد آخر على حسب التعلم‪ ,‬أي أن‬
‫البرنامج يضيف كود من عنده لمواجهة أمور و أحداث لم يبرمج لمواجهتها‪.‬‬
‫‪ ‬بعكس لغات مثل السي عدد سطور كودها لن يتغير مهما كان السبب و لو‬
‫صادفها شيء لم تبرمج عليه لتوقف البرنامج ‪Crush‬‬
‫‪‬‬
‫‪ ‬البرنامج المكتوب بلغة ‪Prolog‬هو بسيط للغاية و يتكون في األساس من‬
‫‪Facts‬و ‪Rules‬أي حقائق و مسلمات و قواعد‪.‬‬
‫‪‬‬
‫‪Professor (Mohammad, Ali) ‬‬
‫‪ ‬في هذه الجملة تسمى كلمة )‪ ) Professor‬بالمسند أو‬
‫المحمول )‪ ) Predicate‬وتمثل العالقة بين المعامالت‬
‫)‪ ) Mohammad‬هو أستاذ ( ‪) Ali‬‬
‫البرمجة بلغة البرولوج تنقسم إلى ثالثة مراحل هي‪:‬‬
‫‪‬‬
‫‪ -1 ‬إعالن الحقائق عن األشياء ) ‪ ) Objects‬والعالقات التي تربط بينها‪.‬‬
‫‪ -2‬تعريف القواعد ) ‪ ) Rules‬التي تحكم كال من األشياء والعالقات التي‬
‫تربط بينها ‪.‬‬
‫‪ -3‬السؤال عن األشياء والعالقات التي تربطها‪.‬‬
‫والمرحلة الثالثة يمكن أن تأتي بعد المرحلة األولى مباشرة حيث يمكن‬
‫السؤال عن األشياء دون تطبيق أي قواعد‬
‫مسألة آينشتاين‬
‫‪‬‬
‫‪ -1‬توجد خمس منازل لكل منها لون مختلف ‪.‬‬
‫‪ -2‬يسكن كل منزل شخص من جنسية مختلفه ‪.‬‬
‫‪ -3‬كل ساكن يفضل أن يشرب مشروبا معين ‪ ,‬ويدخن سجائر نوع معين منها‪,‬‬
‫ويحتفظ بحيوان أليف معين ‪.‬‬
‫‪ -4‬ال أحد من الجيران الخمسة يشرب نفس المشروب أو يدخن نفس النوع من‬
‫السجائر أو لديه نفس الحيوان األليف ‪.‬‬
‫معلومات الربط ‪:‬‬
‫‪‬‬
‫* يسكن البريطاني في المنزل األحمر ‪.‬‬
‫* لدى السويدي كلب‪.‬‬
‫* يحب الدنماركي شرب الشاي ‪.‬‬
‫* البيت األخضر على الجانب األيسر من البيت األبيض‪.‬‬
‫* مالك البيت األخضر يشرب القهوة‪.‬‬
‫* الشخص الذي يشرب سجائر نوع بال مال لديه طائر‪.‬‬
‫* الرجل الذي يسكن في البيت األوسط يشرب الحليب‪.‬‬
‫معلومات الربط ‪:‬‬
‫‪‬‬
‫‪ * ‬مالك المنزل األصفر يدخن سجائر نوع دانهيل ‪.‬‬
‫* يسكن النرويجي في المنزل األول ‪.‬‬
‫* يسكن مدخن سجائر نوع مارلبور مجاورا لمن لديه قطة‪.‬‬
‫* الرجل الذي لديه حصان يسكن مجاورا لمن يدخن سجائر نوع دانهيل‬
‫* مدخن سجائر نوع وينفيلد يحب شرب (شراب الشعير)‪.‬‬
‫* يسكن النرويجي مجاورا للبيت األزرق ‪.‬‬
‫* يدخن األلماني سجائر نوع روثمانز‪.‬‬
‫* مدخن سجائر نوع مارلبور لديه جار يحب شرب الماء‪.‬‬
‫المطلوب ‪:.-‬‬
‫‪‬‬
‫‪ ‬تحدد اللون ‪ /‬الجنسيه ‪ /‬الحيوان ‪ /‬المشروب ‪ /‬نوع السجائر لكل واحد مع‬
‫توضيح ‪ :‬من منهم لديه السمكة (أو أن حيوانه األليف سمكة)؟‬
‫ال توجد خدعه في حل هذا اللغز ‪ ,‬بل هو منطق صرف من يعرف اإلجابة‬
‫سيكون من ضمن أذكى أذكياء العالم (‪ %2‬األذكياء في العالم)‪.‬‬
‫‪‬‬
‫‪ ‬طبعا ً كما ترى ‪ ،‬فاللغز عبارة عن مجموعة من البيانات على غرار (يدخن‬
‫األلماني سجائر نوع روثمانز) ومجموعة من العالقات على غرار (مدخن‬
‫سجائر نوع مارلبور لديه جار يحب شرب الماء) ‪ ،‬وعندما تبدأ أنت بحل هذه‬
‫المشكلة ستبدأ في ترتيب البيانات ومن ثم ربط العالقات بها ‪ ،‬هذا ما يفعله‬
‫البرلوج تماما ً ‪ .‬ستجد نفسك تعطيه بعض المعلومات والقواعد ليقوم هو‬
‫باستنتاج الحل ‪.‬‬
‫‪prolog‬‬
‫‪‬‬
‫‪ http://www.swi-prolog.org/download/stable‬‬
‫‪ ‬اختبري وجود البرنامج في المعمل‬
‫‪ ‬اختاري المناسب لتحميله في جهازك‬
Facts, Rules, and Queries
Knowledge Base 1
woman(mia).
woman(jody).
woman(yolanda).
playsAirGuitar(jody).
We can ask Prolog whether Mia
is a woman by posing the query:
?- woman(mia).
we can ask whether Jody plays air
guitar by posing the following query:
?- playsAirGuitar(jody).
Ask you whether Mia plays air guitar?
suppose we pose the query:
?- tatooed(jody).
Knowledge Base 2
listensToMusic(mia).
happy(yolanda).
playsAirGuitar(mia) :- listensToMusic(mia).
playsAirGuitar(yolanda) :listensToMusic(yolanda).
listensToMusic(yolanda):- happy(yolanda).
RULE
• the :- should be
read as “if”, or “is implied by”.
• The part on the left hand side of the :- is
called the head of the rule,
• the part on the right hand side is called the
body
We will ask Prolog whether Mia plays
air guitar:
?- playsAirGuitar(mia).
if a knowledge base contains a rule head :- body,
and Prolog knows
that body follows from the information in the
knowledge base,
then Prolog can infer
head.
?- playsAirGuitar(yolanda).
• The facts and rules contained in a knowledge
base are called clauses
• KB2 contains five clauses, namely three rules
and two facts
• Another way of looking at KB2 is to say that it
consists of three predicates (or procedures).
The three predicates are:
• listensToMusic
• happy
• playsAirGuitar
‫اقتباسات و أقوال‬

 http://www.eqtibas.com/author/58
‫‪‬‬
‫‪ ‬سبحانك اللهم و بحمدك أشهد أن ال إله إال أنت أستغفرك و أتوب إليك‬
Download