Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon Programming in Logic Prolog Mehdi Ebady Manaa 1 Mouad Najam Abdullah 2 Master Student: Marwa Kadhim Ubeid يهزيت يقذيت اني قسى شبكاث انًعهوياث انًشحهت انثانثت يادة انزكاء االصطُاعي Assistance Lecturer in Department of Information Network at College of Information Technology 1 Assistance Lecturer in Department of Information Network at College of Information Technology 2 Page 1 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon 1. Introduction Can a computer be intelligent? What would it mean for a computer to be intelligent? John McCarthy, one of the founders of artificial intelligence research, once defined the field as “getting a computer to do things which, when done by people, are said to involve intelligence.” The point of the definition was that he felt perfectly comfortable about carrying on his research without first having to defend any particular philosophical view of what the word “intelligence” means 3 . انسؤال هُا ب ؟؟١رط شوٛ١ِجْٛ اٌىٛى٠ ْ اٟٕؼ٠ ِبشاٚ ب ؟؟؟١ْ شوٛى٠ ْرط اٛ١ِجٛغ اٌى١ؽزط٠ ً٘ بْٙٔ اٌٛٛم٠ اؼطخٛص٘ب ث١ب اشا لبَ ثأػّبي اشا ِب رُ رٕف١ْ شوٛى٠ ْرط اٛ١ِجٛغ اٌى١ؽزط٠ ... خ١اػّبي شو Several AI researchers had the idea that ambiguities in the meanings of words could be resolved by trying to understand English only in some limited context. ل حل اي مشكلة فً الذكاء االصطناعً ٌجب تعرٌفها بشكل جٌد ودقٌق بحٌث ٌمكن التعبٌر عنها ... باستخدام الحاسبة -: المثال االتً ٌوضح ذلك ? Student [The price of a radio is $69.70. If this price is 15 percent less than the marked price, find the marked price.] The marked price = 80.155 برهن ذلك الحل : ًالٌك المثال االت ؟The weight of a giant size detergent box is 69.70 ounces. If this weight is 15 percent less than the weight of an enormous size box, find the weight of an enormous size box. For Student, the problem same as above : -: ًام بالنسبة لحلول المشاكل فً الحاسبة سٌكون حل المثال االول كاالت The top-level procedure Student takes one input, a list containing the word problem. (The disk file that accompanies this project includes several variables containing sample problems. For example, ? student :radio The next step is to separate the problem into simple sentences ٗ١ٌخ اٌجحش اٌّطاز االشبضح ا١غِٕٙٚ عٛػّٛزُ ثٌٙىٓ رٚ بٍٙ رطعّخ ِب لجٟٕخ ٕ٘ب ال رؼ١ اٌغًّ اٌؼطث3 Page 2 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon The simple sentences are The price numof a radio is 69.70 dollars . This price is 15 perless the marked price . Find the marked price Example 3: Mary is 24 years old. It is translated to:Mary s age is 24 . الطرق االخرى... االمثلة اعاله هً احدى طرق حل المشكلة باستخدام المعادالت الرٌاضٌة ًهً بأستخدام لغات البرمجة ومن بٌن هذه اللغات المهمة المستخدمة فً الذكاء االصطناع Prolog : Programming in Logic لغة البرمجة باستخدام المنطق 2. What is Prolog? Prolog (Programming in Logic) is a programming language for AI and non-numerical programming in general. What is new? Conventional (well established, standard) languages are procedurally oriented, while Prolog introduces the declarative view. ك١ ػٕس رطج:ٕٝ ثّؼ,)declarative programming language( خ١طفٚ ٌغخProlog رؼزجط س وً ِٓ اٌحبٌخ٠َ ثزحسٕٛخ ٔم١ٓ ٌحبٌخ ِؼ١غبز ٘سف ِؼ٠خ ا١ف١س و٠ ثسال ِٓ رحس,حً ٌّشىٍخ ِب ًشزك اٌح٠ prolog ٔزطن ِفؽطٚ )goal( سفٌٙاٚ )facts and rules اػسٛلٚ ئخ حمبئك١ٙ(ث (Bart, Phuong-Lan, Tom, & Troncon, 2005) .ٌٕب ٟ٘ ٌُطف ٘صا اٌؼبٌٛ ًٙمخ االؼ٠اٌططٚ طف ػبٌُ أٌّشىٍخٚ ٟٕ رؼprolog َاٌجطِغخ ثبؼزرسا ٟاٌؼاللبد اٌزٚ ٌٗ ٔخٛبٔبد اٌّى١ػخ اٌىّٛطفٗ ثبؼزرساَ ِغٛشٌه ثٚ ٌٗ اػسٛاٌمٚ ػغ اٌحمبئكٚ .بٔبد ثؼؼب ً ثجؼغ١رطثؾ اٌى 3. Syntax of Prolog -: كاالتيProlog يمكن تعريف محتويات لغة (a) : Clauses الجمل o A Prolog program consists of clauses. o A Prolog clause is a Horn clause. o Each clause terminates with a full stop. o Prolog clauses are of three types: rules, facts, and questions. o Example1: rule { o_spring(X, Y) :- parent(Y, X). o Example2: fact { parent(tom, ann). o Example3: questions { parent(X, ann). ب ٔفػ اؼُ اٌؼاللخٌٙ ٟاػس اٌزٛاٌمٚ غ اٌحمبئك١ّش ع١اػس ثحٛاٌمٚ غ اٌحمبئك١ّٗ ع١رىزت ف شٌه ِجسأٟاْ ٔحمك فٚ ,ٜز ٌؼاللبد اذطٛحمبئك رؼٚ اػسْٛ اْ رزساذً ِغ لٚرزؽٍؽً ز Page 3 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon ْخ) ٌٕفػ اٌؼاللخ ال٠ اٌجساٟ رىزت فٍٝخ االػ٠ٌٛٚاػس شاد االٛاٌمٚ خ ( فبٌحمبئك٠ٌٛٚاال .ً االؼفٌٝ اٍٝ ِٓ االػٞغط٠ ٘صٖ اٌٍغخٟاالؼزٕزبط ف ___________ )1(ِضــــــــــبي :ًػح ثبٌشىٌّٛخ ا١ٕسؼٌٙػبٌُ االشىبي ا :ًّػخ ِٓ اٌغّٛؼجط ػٓ ٘صا اٌؼبٌُ ثّغ٠ٚ Circle color is gray. Square color is white. Triangle color is gray. Rectangle color is white. The square is inside the circle. The triangle is inside the rectangle. : بٔبد١وٚ ئخ ػاللبد١ٙٔفؽط اٌؼبٌُ ث }ٞ اٌطِبز,غ١ االث,ً١ اٌّؽزط, اٌّضٍش, اٌّطثغ, { اٌسائطحٟ٘ بٔبد١اٌى }لغٌّٛ ػاللخ ا,ٌٍْٛ{ ػاللخ اٟ٘ اٌؼاللبد color(circle,gray). color(square, white). color(triangle,gray). color(rectangle,white). inside(square,circle). inside(triangle,rectangle). اٌـٟؼطّف ف٠ ٞت اٌؼاللبد اٌص١ اِب رطوclauses ععء اٌـٟرىزت ٘صٖ اٌؼاللبد ف :ٛٙ فpredicates color(symbol,symbol). inside(symbol,symbol). symbol عٛٔ ِٓ بٙؼ١ّبٔبد ع١اع اٌىٛٔ الْ اdomains ال حبعخ الؼزرساَ ععء اٌـ .ط ِؼمس١ غٟبؼ١ع لٛٔ ٛ٘ٚ (b) : procedures االجراءات o A group of clauses which the head of each clause are the same is called a procedure. _ Example: connects(Baghdad, Hillah, Kerbala). Page 4 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon connects(Baghda, Al-Anbar, Diyala). connects(Diwanyah, Samiyah, Kut). (c) : rules القواعد A rule is a clause with one or more conditions. For a rule to be true, all of its conditions must also be true. o The right-hand side of the rule is a condition and the lefthand side of the rule is the conclusion. o The ':-' sign means 'if'. The clause in Example1 can be stated as X is an o_spring of Y if Y is a parent of X. o The left-hand side is called the head of the rule and the righthand side is called o The body of the rule. The body of a rule is a list of goals separated by commas. o Commas are understood as conjunctions. Example: p :- q, r, s, t. means p is true if q and r and s and t are true. (d) Facts الحقائق Facts are always unconditionally true. It only has a head part (the conclusion) with an empty body. Example: has(student, books). ٟؽ اٌزٚع اٌشطّٛ ِغٟٙ اِب اٌمبػسح ف, ٔؽزّس٘ب ِٓ اٌؼبٌُ رحذ أٌّؼبٌغخٟ اٌّؼطفخ اٌزٟ٘ مخ١اٌحم .بَ ِبٙاة الؼزفٛك ع١ رحمٚسح ا٠ اٌحمبئك الؼزٕزبط ِؼطفخ عسٍٝرطجك ػ ٓ٠ ععأٌٝ رٕمؽُ اٟ ػىػ اٌمبػسح اٌزٍٝطاد ػ١ ِٓ اٌّزغٌٟ صبثذ ذبclause ِٓ مخ١ْ اٌحمٛرزى : body ٚ head ّ٘ب Headbody ػخّٛ ِغٍٝ ٔحظً ػٚح ا١ طحhead ٔؽزٕزظ اْ اٌـbody ؽ اٌـٚ أٗ ثزحمك شطٟٕؼ٠ ٘صاٚ ْطارٗ فا١ ِزغٟب فٌٙ رُ احالٟبٔبد اٌز١ ثبٌىbody زحمك اٌـ٠ ٌُ اشاٚ ً حب١ رغؼٍٗ طحٟي اٌزٍٛاٌح .ٗطفٛ لّٕب ثٞ شٌه اٌؼبٌُ اٌصٟ ِّىٕخ فٚزح اٛعِٛ ط١ ِؼطفخ غhead اٌـ صاٙرىزت ثٚ ) :- ( بٌٙ ٔطِعٚ اٌٍغبدٟ ثبلٟ فif عٍّخprolog ٟمخ وزبثخ اٌمبػسح ف٠ ؽطٞاظٛر :ًاٌشى head :- body. . ِؼطفخ ِزحممخhead ٌ ِزحممب فاbody ٌ ارا كاٟٕ رؼٟ٘ٚ ػٕس٘بٚ head ٟ ٔفػ اٌؼاللخ فٞٛحز٠ اوضط وّب أٗ لسٚاحسح اٚ clause ِٓ body ْٛزى٠ .ب١ ٔفؽٗ شارٟؽزسػ٠ ٟ٘ٚ inference rules اػس االؼزساليٛ ثمprolog ثطٔبِظٟاػس فٛػخ اٌمّٛ ِغٌٝط ا١ٔش ٍٛر٠ غت اْ ال٠ prolog وّب اْ ثطٔبِظ, لبػسح أٌّؼطفخٟاؼبغ اؼزٕزبط اٌّؼطفخ ِٓ اٌحمبئك ف ٞ حمبئك صبثزخ رؽزّس٘ب ِٓ اٌؼبٌُ اٌصٌٝخ ا٠بٌٕٙ اٟغت اْ رؽزٕس ف٠ خ االؼزٕزبط١ٌِٓ اٌحمبئك الْ آ يٍٛخ اشزمبق اٌح١ٍّ ػىػ شٌه فاْ ػٍٝػٚ , ٌٗٛبَ اٌّؽزرسَ حٙي الؼزفٍٛغبز ح٠ اٍٝرؼًّ ػ .خ ِّىٕخ١ي ِٕطمٍٛش ال ح١ك اٌّغٍك ح٠ اٌططٚخ ا٠بٙٔ اٌالٌٝرص٘ت ا :)2(يثـــــــــــــال االؼزٕزبطٚ اػسٛاٌمٚ خ اٌحمبئك١٘ٗ ِب١ػح فٌٕٛ خ١ػزٕب اٌشّؽّٛ ِغٛ٘ٚ ؼٕأذص ِضبال ِٓ ػبٌّٕب Page 5 Date: Tuesday, March 04, 2014 3rd class – Department of Network College of IT- University of Babylon Sun mercury Artifical Intelligent venus earth اٌىٛاوت اٌضالصخ اال ِٓ ٌٝٚاٌساذً اٌ ٝاٌربضط ٘ ٟػطبضز ٚاٌع٘طح ٚاألضع ِٚطوع اٌّغّٛػخ ٘ ٛأٌشّػ ,ؼٕظف ٘صا اٌؼبٌُ اؼزٕبزا اٌ ٝرطر١ت ِٛالغ اٌىٛاوت ثبٌٕؽجخ ٌٍّطوع ِٓٚصُ ٔؽزٕزظ اٌّؼطفخ ِٓ ٘صٖ اٌحمبئك اٌضبثزخ: The sun order is 0. Mercury order is 1. Venus order is 2. Earth order is 3. اٌّؼطفخ اٌزٔ ٟط٠س اٌحظٛي ػٍٙ١ب ٘:ٟ ا ٞاٌىٛاوت ٘ ٛااللطة ٌٍشّػ؟ ثّؼٕ ٝػٕس ِمبضٔخ ا ٞوٛوج ٓ١و١ف ٔؼطف إِّٙ ٞب٘ ٛااللطة ٌٍشّػ ٚإِٔٙ ٞب ٘ ٛاالثؼس؟ و١ف رزطرت اٌىٛاوت رجؼب ٌسضعخ حطاضرٙب ؟ إِٙ ٞب ٘ ٛاالوضط حطاضح ٚإِٔٙ ٞب االوضطثطٚزح؟ ِبِ٘ٛ ٟالغ اٌىٛاوت ثبٌٕؽجخ ٌجؼؼٙب اٌجؼغ؟ .1رح ً٠ٛاٌٛطف اٌ ٝػاللبد: distance_order(sun,0). distance_order(mercury,1). distance_order(venus,2). distance_order(earth,3). ٘١ىً اٌؼاللخ ٘distance_order(symbol,integer). ٛ * تًشيٍ :اػف ثبل ٟاٌىٛاوت ثظ١غخ حمبئك ,اٌىٛاوت ِ٘ (ٟطرجخ ِٓ االلطة اٌ ٝاالثؼس): Mars, Jupiter, Saturn, Uranus, Neptune, Pluto .2ط١بغخ لٛاػس االؼزٕزبط: اشا وبْ رطر١ت ِٛلغ اٌىٛوت Xاطغط ِٓ رطر١ت ِٛلغ اٌىٛوت Yفبْ اٌىٛوت ٛ٘ Xااللطة nearer_to_sun(X,Y):distance_order(X,D1),distance_order(Y,D2),D1<D2. ٚاٌمبػسح رؼٕ :ٟاحظً ػٍ ٝرطر١ت اٌىٛوت ِٓ Xاٌحمبئك ٚاذعٔٗ ف D1 ٟصُ احظً ػٍٝ رطر١ت اٌىٛوت ٚYاذعٔٗ فٚ D2 ٟلبضْ ث ٓ١اٌزطر١ج ٓ١فبشا وبْ االٚي اطغط ِٓ اٌضبٔ ٟفبْ X الطة اٌ ٝاٌشّػ ِٓ . Y ٚالْ اٌشّػ ٠فزطع اْ ال رمبضْ ِغ ٔفؽٙب اش ال ّ٠ىٓ اْ ٠ى ْٛاٌى١بْ " الطة أٌ ٝفؽٗ ِٓ ٔفؽٗ" ٔؽزضٕ ٟاٌشّػ ِٓ اٌحٍٛي ٘ىصا: nearer_to_sun(X,Y):distance_order(X,D1),distance_order(Y,D2),D1<D2,X<>sun. ٚاّ٠ ْ٢ىٓ ٌٍّؽزرسَ اْ ٠ؽزفؽط ػٓ ا ٞوٛوج ٓ١ف ٟاٌّغّٛػخ ,وأْ ٠ؽأي ً٘ :االضع الطة اٌ ٝاٌشّػ ِٓ ػطبضز؟ Date: Tuesday, March 04, 2014 Page 6 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent nearer_to_sun(earth,mercury). ٠ٚمِ َٛفؽط prologثبشزمبق اٌحً ثٙصٖ اٌطط٠مخ: X=earth Y=venus ٠أذص اٌغعء االٚي ِٓ اٌمبػسح )٠ٚ distance_order(earth,D1جحش ػٓ ِغّٛػخ حً D1فٟ اٌحمبئك اٌضبثزخٚ ,ػٕس اٌجحش ال ٠زطبثك اٌّزؼٍك االٚي اال ف ٟاٌحم١مخ اٌطاثؼخ ) distance_order(earth,3ف١طعغ لّ١خ D1=3 صُ ٠ىًّ اٌ ٝاٌغعء اٌزبٌ ِٓ ٟاٌمبػسح ٠ٚ distance_order(venus,D2) ٛ٘ٚغطٔ ٞفػ اٌّمبضٔخ وّب ف ٟاٌؼاللخ اال ٌٝٚف١حظً ػٍ ٝاٌحً ف ٟاٌحم١مخ اٌضبٌضخ )ٚ distance_order(venus,2رى ْٛلّ١خ D2=2 اٌغعء اٌضبٌش ِٓ اٌؼاللخ ٘ ٛاٌّمبضٔخ ث ٓ١لّ١زٚ D1,D2 ٟثّب اْ اٌشطؽ غ١ط ِزحمك ( D1 ٌ١ؽذ اطغط ِٓ ٠ )D2م َٛاٌّفؽط ثمطغ االؼزٕزبط ٠ٚؼٍُ اٌّؽزرسَ اْ اٌّؼطفخ اٌّطٍٛة اٌحظٛي ػٍٙ١ب غ١ط ِٛعٛزح ف٘ ٟصا اٌؼبٌُ. ٠ؽزط١غ اٌّؽزرسَ االؼزفؽبض ثططق ِزٕٛػخِ ,ضال: ا ٞاٌىٛاوت الطة اٌ ٝاٌشّػ ِٓ االضع؟ nearer_to_sun(X,earth). فزىِ ْٛغّٛػخ حً اٌّزغ١ط :ٟ٘ X X=mercury X=venus ا ٞاْ اٌىٛوج ٓ١ػطبضز ٚاٌع٘طح الطة اٌ ٝاٌشّػ ِٓ االضع. *تًشيٍ :لُ ثظ١بغخ لبػسح ِٕبؼجخ إل٠غبز ِغّٛػخ اٌحً ػٕسِب ٠سٚض اٌزؽبؤي حٛي اٌجؼس ١ٌٚػ اٌمطة ?farther_from_sun(X,Y):- 2-2اشا وبْ اٌىٛوت Xالطة اٌ ٝاٌشّػ ِٓ اٌىٛوت Yفاْ اٌىٛوت ٛ٘ Xاالوضط حطاضح: hoter(X,Y):- nearer_to_sun(X,Y). *تًشيٍ :اوزت ط١غخ ِٕبؼجخ ٌمبػسح رؽزٕزظ اشا وبْ اٌىٛوت Xاثطز ِٓ اٌىٛوت Y ?colder(X,Y):- 3-2ا ٞاٌىٛاوت رمغ ث ٓ١اٌىٛوج X,Y ٓ١؟ between(X,Y,Z):distance_order(X,D1),distance_order(Y,D2),distance_order(Z,D3),D1<D 3,D2>D3. ِضال :ا ٞاٌىٛاوت رمغ ث ٓ١االضع ٚاٌشّػ؟ between(sun,earth,X). X=mercury X=venus (e) questions Questions are queries for retrieving facts through rules. It only has the body (the goals). _ Example: fly(penguin). Date: Tuesday, March 04, 2014 Page 7 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent (f) arguments Arguments can be an atom, a number, a variable, or a structure. (g) atoms o Atoms are concrete objects (but numbers are NOT atoms). o The _rst letter of an atom is always a small letter. o Strings of letters: tom, nil, x25, x 25AB, x , x y, top part o Strings of special characters: <|>, ===>, ..., .:. (with caution) o Quoted strings: 'Tom', 'South America' ايثهت نبعض انعًهياث االساسيت: :خ١بد اٌحؽبث١ٍّاٌؼ / + - * div mod :خ١اي اٌحؽبثٚاٌس abs(X) sin(X) log(X) :بد اٌّمبضٔخ١ٍّػ > < >= <= <> = :ك١ٍاٌزؼ % this is a comment :خ١بد إٌّطم١ٍّاٌؼ not() , (and) ; (or) :صٖ اٌحبٌخٙ و, ٔفػ اٌّؼبزٌخٟ عبٔجٍٝط ػ١ اؼزرساَ ٔفػ اٌّزغprolog ٟظ فٛغ٠ ال:ِالحظخ X=X+1 (h) numbers The syntax of integers is simple except one must remember that the range of integers is limited to an interval, in SICSTUS Prolog, between -16383 to 16383. Examples: 3.1416, -0.001, 22.223, 100 خ١م١ حمٚحخ ا١ اِب طح: numbers :ٟٙخ ف١بؼ١خ اٌم١ٔب١اع اٌجٛٔا ِّب اال Integer -3,-1, 0, 1, 4 Real 5.6, 0, -1.2, 8 Char 'a', 'b' String "a", "aaa", "***", "@1" Symbol ali, a, ab ي ِٓ اٌّفطزادٚع االٕٛؽ اٌـٚحمك شط٠ ْغت ا٠ عٌٕٛ٘صا ا :مخ٠صٖ اٌططٙ ثdomains ععء اٌـٟب فٙاع اٌّؼمسح وبٌمبئّخ ٔؼطفٛٔاالٚ x=integer* يٛط ِحسزح اٌط١حخ غ١ لبئّخ ِٓ االػساز اٌظحٟٕرؼ s=string* يٛط ِحسزح اٌط١خ غ٠ لبئّخ ِٓ اٌؽالؼً اٌطِعٟٕرؼ (i) variables o Variables are general objects. o The first letter of a variable is always a Capital letter. Page 8 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon o Example: X and Y in Example1. o Variables can be substituted by another object (becomes instantiated). o Variables are assumed to be universally quantified (for all). (j) recursive Recursive is one of the fundamental principles of programming in Prolog. Example: o predecessor (X, Z):- parent(X, Z). o predecessor (X, Z):- parent(X, Y), predecessor(Y, Z). .... سوف نتطرق الى االستدعاء الذاتً اكثر فً الملزمة تباعا (k) comments _ Example: /* this is a comment */ _ Example: % This is also a comment (l) predicates a functor that species some relationship existing in the problem domain. )بٔبد١ب (اٌىِٙزؼٍمبرٚ ْ ِٓ اؼُ اٌؼاللخٛرزىٚ اٌت اٌؼاللبدٛٗ ل١ٔؼطّف ف relation_name(object1,object2,…., object). :بِٕٙ ,ْ ثحبالد ِرزٍفخٛرىٚ )terms( بٔبد ثّفطزاد١رّضً اٌى , ) _ ( اٌطِع اٌربصٚ َاالضلبٚ طح١طغٚ طح١ف وجْٚ ِٓ ؼٍؽٍخ ِٓ اٌحطٛ رزى: atoms .1 :ً ِض,ط١شطؽ اْ رجسأ ثحطف طغ elephant, b, abcXYZ , x_Y, x123 .عٌٕٛغت اْ رحمك شطؽ ٘صا ا٠ اؼّبء اٌؼاللبد اٌطِع اٌربصٚ َاالضلبٚ طح١اٌظغٚ طح١ف اٌىجْٚ ِٓ ؼٍؽٍخ ِٓ اٌحطٛ رزى: variables .2 :ً ِض, _ ثبٌطِعٚط ا١ شطؽ اْ رجسأ ثحطف وج, ) _ ( Elephant, B, _abc, X_1, MyVariable, _ -: ًلناخذ مثاال بسٌطا كاالت The child eats coconut. ٕسٌٙظ اٛعٚ the child ً اٌطفٟ٘ اٌغٍّخٟزح فٛعٌّٛبٔبد ا١ اٌى, )ٕسٌٙظ اٛأوً ع٠ ً(اٌطف ً اْ اٌطفٟ٘ ٕسٌٙظ اٛ (ػاللخ اٌطفً ثغeats ّٟٙب فٕٙ١ رطثؾ ثٟ اِب اٌؼاللخ اٌزcoconut :ٌٟ وبٌزبprolog ٌٟخ فًٛ اٌغٍّخ ثؼجبضح ِمج١زُ رّض٠ ٗ١ٍػٚ )ٍٗأو٠ eats( the_child, coconut). : ِضال,ًب اٌطفٌٙٚزٕب٠ ٜبء اذط١ً اش١ّىٕٕب رّض٠ The child eats biscuit The child eats meat :٘ىصا eats( the_child, biscuit). eats(the_child, meat). Page 9 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon يٛبَ حٙبد االؼزف١ٍّّىٕٕب اعطاء ػ٠ , ب ثجؼغٙ رطثطٟاٌؼاللبد اٌزٚ بٔبد١ف اٌى١طٛثؼس ر .فٛطٌّٛاٌؼبٌُ ا :ٟ٘ خ ٌٍجطٔبِظ١بئٌٕٙغخ ا١اٌظ predicates distance_order(symbol,integer). nearer_to_sun(symbol,symbol). hoter(symbol,symbol). between(symbol,symbol,symbol). clauses distance_order(sun,0). distance_order(mercury,1). distance_order(venus,2). distance_order(earth,3). nearer_to_sun(X,Y):- distance_order(X,D1), distance_order(Y,D2), D1<D2,X<>sun. hoter(X,Y):- nearer_to_sun(X,Y). between(X,Y,Z):-distance_order(X,D1), distance_order(Y,D2), distance_order(Z,D3),D1<D3,D2>D3. ٕحظط٠ خ ال١بد إٌّطم١ٍّخ اْ اؼزرساَ اٌؼ١بؼ١بٔبد ل١غ اٌى١ّ الْ عdomains ** ال حبعخ ٌـ :بَ ِجبشطحٙ االؼزفٟب فِّٙىٓ اؼزرسا٠ أّب, اػسٛ اٌمٟف :يثـــــــــــــــال ُٙزضعبرٚ ُ ػٓ ٘إالء اٌطالةِٙٓ صُ ٔؽزفٚ ُ صالس زضعبدِٕٙ ًؼٕزحسس ػٓ صالس ؽالة ٌى :ػخٕٛثططق ِز Ali {50,40,60} Muna {70,65,80} Samir {90,70,75} ___________ predicates degree(symbol,integer). clauses degree(ali,50). degree(ali,40). degree(ali,60). degree(muna,70). degree(muna,65). degree(muna,80). degree(samir,90). degree(samir,70). degree(samir,75). :ٍٟغ زضعبد ػ١ّؽزطعغ ع٠ ْ اؽٍت ِٓ اٌّفؽط ا.1 Page 11 Date: Tuesday, March 04, 2014 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent (1) degree(ali,X). (2)degree(Y,X),Y=ali. X=50 X=40 X=60 ف ٟاٌحبٌخ اٌضبٔ١خ لّٕب ثبؼزطعبع عّ١غ اٌسضعبد ٌغّ١غ اٌطالة ِٓٚصُ اؼزجؼسٔب ِٓ ٘١ٌ ٛػ ػٍ.ٟ .2اؽٍت ِٓ اٌّفؽط اؼزطعبع زضعبد ػٍ ٟاٌز ٟرى ْٛاوجط ِٓ :55 اؼزرسَ احس ٜاٌظ١غز ٓ١اػالٖ ٚاػف اٌٙ١ب اٌشطؽ ٚX>50اضثطٗ ثـ (,( and (1) degree(ali,X),X>50. (2)degree(Y,X),Y=ali,X>50. X=60 .3اػطع االؼّبء ٚاٌسضعبد ثبؼزضٕبء ػٍٚ ٟزضعبرٗ: degree(X,Y),X< >ali. X=muna,Y=70 X=muna,Y=65 X=muna,Y=80 X=samir,Y=90 X=samir,Y=70 X=samir,Y=75 اكتب استفساس يُاسب نكم يٍ: .4اػطع االؼّبء اٌزٌ ٟسٙ٠ب زضعبد ِزؽب٠ٚخ .5اػطع االؼّبء اٌزٌ ٟسٙ٠ب زضعبد اوجط ِٓ ا ٚرؽبٚ 65 ٞٚال رؽب75 ٞٚ .6اػطع عّ١غ اٌسضعبد ثبؼزضٕبء حبٌز ٟاْ اٌسضعخ ضلُ ظٚع ٟا ٚاؼُ اٌطبٌت samir .7اػطع اؼّبء اٌطالة اٌصٌ ٓ٠س ُٙ٠زضعبد رمً ػٓ زضعبد ا٢ذط ٓ٠ة 35زضعخ ِضبي( :)4اوزت ثطٔبِظ ٠حمك ٘صٖ اال٘ساف: test(1,X). X=true test(0,X). X=false test(4,X). X=error اٌجطٔبِظ ٠م َٛثزظٕ١ف 1اٌٚ true ٝاٌـ 5اٌٚ false ٝغ١ط شٌه ِٓ االػساز اٌerror ٝ predicates test(integer,symbol). clauses test(1,error). test(0,false). test(X,error):-X<>0,X<>1. ----------------------------------------------------------------------------------------تًشيٍ :اوزت ثطٔبِظ ال٠غبز اٌؼسز االوجط ِٓ ث ٓ١ػسز:ٓ٠ max(X,Y,Z). max(2,5,Z). Date: Tuesday, March 04, 2014 Page 11 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent Z=5 عٍّخ اٌمطغ (!) Cut Statement رؽزرسَ ٌٛلف اٌجحش ػٓ حٍٛي اذط ٜػٕسِب ٠زحمك اٌشطؽ اٌّطافمخ ٌٗٚ ,ف٘ ٟصٖ اٌحبٌخ ٠غت اٌزطو١ع ػٍ ٝا٠ٌٛٚبد وزبثخ اٌحمبئك. ِضبي( :)5اػبزح وزبثخ اٌّضبي (ِ )4غ اؼزرساَ عٍّخ اٌمطغ predicates test(integer,symbol). clauses test(1,error):-!. test(0,false):-!. test( _ ,error). ٠م َٛاٌّفؽط ثمطغ اٌجحش ػٓ حٍٛي اذط ٜحبٌّب رزطبثك اٌحم١مخ اال ٌٝٚا ٚاٌضبٔ١خ ِغ اٌٙسف ٚفٟ حبي ٌُ رزحمك إِّٙ ٞب فبْ اٌّفؽط ٠ف ُٙاْ اٌؼسز اٌّسذً ٌ١ػ ٚاحسا ٚال طفطا ٌٚصٌه ٠طعغ errorوٕز١غخ ٌالؼزفؽبض. ------------------تًشيٍ: .1اكتب بشَايح نتصُيف االعذاد اني يوخبت وسانبت وصفش (اختش اَواع يُاسبت نهًتعهقاث) classify(X,Y). يثال :اوزت ثطٔبِظ ٌحؽبة ِغّٛع ػسز ِٓٚ ٓ٠صُ رظٕ١ف اٌّغّٛع اٌّحزؽت اٌِٛ ٝعت اٚ ؼبٌت (اػزجط اٌظفط ػّٓ االػساز اٌّٛعجخ). predicates sum_class(integer,integer,string). clauses sum_calss(X,Y,C):-Z=X+Y,Z>=0,C="positive". sum_class(X,Y,C):-Z=X+Y,Z<0,C="negative". ا ٚثبؼزرساَ عٍّخ اٌمطغ sum_class(X,Y,C):-Z=X+Y,Z>=0,C="positive",!. sum_class(_ ,_ ,"negative"). عطة ازذبي sum_class(-1,4,X). :وبؼزفٙبَ االستذعاء انزاتي Recursion ٠زُ االؼزسػبء اٌصار ِٓ ٟذالي اؼزرساَ ٔفػ اٌؼاللخ اٌز٠ ٟزىِٕٙ ْٛب اٌـ headوغعء ِٓ اٌـ ,bodyثغغ إٌظط ػٓ اٌزؽٍؽً اٌص ٞرطز ف.ٗ١ ٛ٠عس ٔٛػ ِٓ ٓ١االؼزسػبء اٌصار:ٟ ٠ : tail .1ى ْٛاؼزرساَ ػاللخ االؼزسػبء فٙٔ ٟب٠خ اٌمبػسح rel1( ):-rel2( ),rel3( ), …, rel1( ). :stack .2رؽزرسَ ػاللخ االؼزسػبء ف ٟاِٛ ٞلغ ػّٓ اٌمبػسح ػسا إٌٙب٠خ rel1( ):-rel1( ),rel2( ), …,rel3( ). rel1( ):-rel2( ),rel1( ),…,rel3( ). Date: Tuesday, March 04, 2014 Page 12 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent يثـــــــــال: ثطٔبِظ ال٠غبز اٌّؼطٚة ٌؼسز طح١ح predicates fact(integer,real). clauses fact(0,1):-!. !fact(1,1):- fact(X,Y):-X1=X-1,fact(X1,Y1),Y=Y1*X. ٘صا اٌجطٔبِظ ِضبي ٌالؼزسػبء اٌصارٛٔ ِٓ ٟع stackح١ش ٠إعً حؽبة لّ١خ Yحز٠ ٝظً X اٌ ٝاٌظفط ا ٚاٌٛاحس ِٓٚصُ ٠ؼٛز ٌؼطة اٌمّ١خ اٌطاعؼخ ػٍ ٝاٌزٛاٌ ٟثمّ١خ ١ٌ Xحظً ػٍٝ اٌمّ١خ إٌٙبئ١خ ٌٍّؼطٚة. ٕ٘ٚب ٠غت اْ ٔرزبض شطؽ اٌزٛلف ثحصض الْ اٌّفؽط ٠زٛلف ػٓ اشزمبق حٍٛي ثسٍ٠خ ِٓ اٌمٛاػس ػٕسِب ٠ؼضط ػٍ ٝحمبئك صبثزخ ٠ٚم َٛثزطو١جٙب ِغ ثؼؼٙب ٚفك اٌمٛاػس ٌ١ى ّ ْٛحً ٔٙبئ.ٟ ----------------يثــ ( )8ـــــــال: ثطٔبِظ ال٠غبز ٔبرظ ضفغ ػسز طح١ح اٌ ٝاغ طح١ح ِٛعت predicates power(integer,integer,real). clauses power(0, _ ,0):-!. power(1, _ ,1):-!. power( _, 0,1):-!. power( X,1,X):-!. power(X,Y,Z):-Y1=Y-1,power(X,Y1,Z1),Z=X*Z1. تًشيٍ :اوزت ثطٔبِظ ال٠غبز ٔبرظ ضفغ ػسز طح١ح اٌ ٝاغ طح١ح ؼبٌت *** عٍّخ اٌطجبػخ write رؽزرسَ ٌطجبػخ ل ُ١اٌّزغ١طاد ٚاٌضٛاثذ ِ ,ضال )"***"(write(X) ٚ write *** ؽجبػخ ؼطط عس٠س ثبؼزرساَ nl *** غبٌجب رؽزرسَ )( nlٚ writeؼ٠ٛخ ٌٍطجبػخ ف ٟؼطط عس٠س. يثـــــــــال: بشَايح نطباعت االسقاو ابتذاءا يٍ سقى يذخم َزوال اني 1 predicates count(integer). clauses count(1):-write(1),nl,!. count(X):-write(X),nl,X1=X-1,count(X1),!. count( _ ):-write("unable to count"),nl. Date: Tuesday, March 04, 2014 Page 13 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon :ٌٍٞطجبػخ ثشىً رظبػسٚ predicates count(integer). clauses count(1):-write(1),nl,!. count(X):-X>1,X1=X-1,count(X1),write(X),nl,!. count( _ ):-write("unable to count"),nl. :ٓ٠رّط :ب١ٌ رٕبظِٜطح اذطٚ ب٠بءا ثطلُ آذط رظبػسٙأزٚ ُاوزت ثطٔبِظ ٌٍؼس اثزساءا ِٓ ضل count(4,7). 4 5 6 7 count(7,4). 7 6 5 4 :ِضــــــــبي َْٛ ِٓ إٌغٛخ ِى٠ٚثطٔبِظ ٌطجبػخ ِضٍش لبئُ اٌعا draw(4) **** *** ** * predicates draw(integer). count(integer,integer) clauses draw(0):-!. draw(1):-count(1,1),!. draw(X):-X1=X-1,count(X1,0),draw(X1),!. count(X,Y):-X=Y,write("*"),nl,!. count(X,Y):-X>Y,X1=X-1,write("*"),count(X1,Y),!. count(X,Y):-X<Y,!. :ٓ٠رّط :ًصا اٌشىٙ ثٞ ا,ةٍٛط ِم١ط اٌّضٍش غٙظ٠ ش١اػس وزبثخ اٌجطٔبِظ اٌؽبثك ثح * ** *** **** Page 14 Date: Tuesday, March 04, 2014 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent شدشة انعائهت كًثال تطبيقي نالستُتاج واستخشاج حقائق باستخذاو انقواعذ اعتًادا: خايسا عهي حقائق اخشى ً االلٍٝاحس ػٚ ِضبيٍٝ ػٞٛ اْ رحزٍٝه ػ٠ػح شغطح ػبئٍزه اثزساءا ِٓ ع ّسٛ٠ اضؼُ ِرطؾ ) اٌد... ادٛاالذٚ حٛاثٕبء االذٚ ادٛاالذٚ حٛاالذٚ ايٛاالذٚ َِٓ وً طٍخ لطاثخ (االػّب :ٕب شغطح اٌؼبئٍخ٠ؼٕفزطع اْ ٌس Ali Reem Muna Mays Ahmed Salma Samir Majid Noor Ali2 Layla Tiba Saif Zaid : ػطف اعٕبغ وً االفطاز.1 male(ali). male(ahmed). male(samir). male(majid). male(ali2). male(saif). male(zaid). female(muna). female(mays). female(salma). female(noor). female(layla). female(reem). female(tiba). ػاللخ االضرجبؽٚ غ االفطاز١ّح ٌغٛ ػاللخ االث:خ١ ػطف اٌؼاللبد االؼبؼ.2 parent(ali,mays). parent(ali,ahmed). parent(ali,salma). parent(ali,samir). parent(muna,mays). parent(muna,ahmed). parent(muna,salma). parent(muna,samir). Page 15 Date: Tuesday, March 04, 2014 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon parent(mays,reem). parent(mays,saif). parent(majid,reem). parent(majid,saif). parent(ahmed,tiba). parent(noor,tiba). parent(salma,zaid). parent(ali2,zaid). married(ali,muna). married(majid,mays). married(ahmed,noor). married(salma,ali2). married(samir,layla). :ٜخ االذط١ٍاػس الؼزٕزبط اٌؼاللبد اٌؼبئٛ أشئ ل.3 شوطٛ٘ٚ Y اٌسٚX ْ اشا وبY اةX ْٛى٠ : ػاللخ االة1-3 father(X,Y):-parent(X,Y),male(X). ٝ أضٟ٘ٚ ٗاٌسرٚ اشا وبٔذY َ اX ْٛ رى:َ ػاللخ اال2-3 mother(X,Y):-parent(X,Y),female(X). شوطٛ٘ٚ )ٗاٌسرٚ ٚاٌسٖ (اٚ Y ْ اثٓ اشا وبX ْٛى٠ :ٓ االث3-3 son(X,Y):-parent(Y,X),male(X). شوطٛ٘ٚ ٗ١ اثْٚ اِٗ اٛى٠ Y ْ اشا وبY ٓ اثX ْٛى٠ ٚا son(X,Y):-mother(Y,X),male(X);father(Y,X),male(X). ٟ٘ٚ بٙ١ اثٚب اِٙ اٚ ا,ٝ أضٟ٘ٚ بٙاٌسرٚ ٚاٌس٘ب اٚ ْ اشا وبY اثٕخX ْٛ رى: ػاللخ اٌجٕذ4-3 ٝأض daughter(X,Y):-parent(Y,X),female(X). daughter(X,Y):-mother(Y,X),female(X);father(Y,X),female(X). ٗ١ اة اثٚ اشا وبْ اة اِٗ اY عسX ْٛى٠ : ػاللخ اٌغس5-3 grandfather(X,Y):-father(X,Z),father(Z,Y);father(X,Z),mother(Z,Y). .. ؟ فىطٜمخ اذط٠ّىٕه اْ رظفٗ ثطط٠ ً٘ ِٗ اَ اٚٗ ا١ اشا وبٔذ اَ اثY ع ّسحX ْٛ رى: ػاللخ اٌغ ّسح6-3 grandmother(X,Y):-mother(X,Z),father(Z,Y);mother(X,Z),mother(Z,Y). : اٌؼاللبدٟعس ثبلٚا grandson س١ ػاللخ اٌحف7-3 grand_daughter سح١ ػاللخ اٌحف8-3 brother ػاللخ االخ9-3 sister ػاللخ االذذ15-3 uncle ُ ػاللخ اٌؼ11-3 uncle2 ػاللخ اٌربي12-3 aunt ػاللخ اٌؼّخ13-3 aunt2 ػاللخ اٌربٌخ14-3 اثٓ اٌربٌخٚ اثٓ اٌؼّخٚ اثٓ اٌربيٚ ُ ػاللبد اثٓ اٌؼ15-3 ثٕذ اٌربٌخٚ ثٕذ اٌؼّخٚ ثٕذ اٌربيٚ ُ ػاللبد ثٕذ اٌؼ16-3 Page 16 Date: Tuesday, March 04, 2014 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent 17-3ػاللخ اثٓ االخ ٚاالذذ nephew 18-3ػاللخ ثٕذ االخ ٚاالذذ niece 19-3ػاللخ اٌعٚط husband 25-3ػاللخ اٌعٚعخ wife سادسا :انقوائى .1يا هي انقائًت في prolog؟ اٌمبئّخِ :غّٛػخ ِٓ اٌؼٕبطط اٌز ٟررعْ ثطط٠مخ ِزؽٍؽٍخ ٚال ّ٠ىٓ اٌٛطٛي ٌؼٕظط ِؼ ٓ١فٙ١ب ثطط٠مخ ِجبشطح ,ئّٔب ٠زُ شٌه ػٓ ؽط٠ك اٌمطاءح ٌغّ١غ اٌؼٕبطط اٌز ٟرؽجمٗ ثظٛضح ِزؽٍؽٍخ ٚثبٌززبثغ. ّ٠ىٓ ٌٍمبئّخ أْ رحز ٞٛػسز غ١ط ِحسز ِٓ اٌؼٕبطط ٚثس ْٚرحس٠س ِؽجك (١ٌٚػ وجبل ٟاٌٍغبد اٌز ٟرفطع رحس٠س ؽٛي اٌّظفٛفخ ػٕس اٌزؼط٠ف) رؼط٠ف اٌمبئّخ: ف ٟععء اٌـ ٔ domainsؽزرسَ اٌظ١غخ اٌزبٌ١خ *إٌٛع اٌج١بٔ=ٟاؼُ اٌمبئّخ ِضً: *x= integer ح١ش: اؼُ اٌمبئّخ ( ٛ٘ )xأ ٞؼٍؽٍخ ضِع٠خ رزى ِٓ ْٛضِع ٚاحس أ ٚأوضط ثشطؽ أْ رٕطجك ػٍٙ١ب شطٚؽ االؼُ ف ٟ٘ٚProlog ٟأْ ٠جسأ ثحطف ( )a-zال غ١ط. إٌٛع اٌج١بٔ ٛ٘ )integer(ٟاحس األٔٛاع اٌز ٟزضؼٕب٘ب ؼبثمب ثؼس رؼط٠ف اٌمبئّخٔ ,ؽزرسِٙب ف١٘ ٟىً اٌؼاللخ ثٕفػ ؽط٠مخ اؼزرساَ أٛٔ ٞع آذط ٚشٌه ثىزبثخ االؼُ اٌص ٞاؼزرسِٕبٖ ٌٍزؼط٠ف (,...اؼُ اٌمبئّخ)=اؼُ اٌؼاللخ ِضً: )sum( x, real .2كيف َتعايم يع انقائًت في prolog؟ ٔزؼبًِ ِغ اٌمبئّخ ػٓ ؽط٠ك لطاءح ػٕبطط٘ب ثبٌزؽٍؽً اٌٛاحس رٍ ٛا٢ذط ٚثؽحت (أ ٚحغع) ػسز ِحسز ِٓ رٍه اٌؼٕبطط ,وأْ ٔؽحت ػٕظط ٚاحس ,ػٕظط ,ٓ٠صالصخ ,أ ٚأ ٞػسز آذط ِحسز حؽت حبعخ اٌزطج١ك اٌصٔ ٞؼًّ ػٍ.ٗ١ أِب ػٍّ١خ اٌؽحت فززُ ػٓ ؽط٠ك رغعٞء اٌمبئّخ ئٌ ٝععأّ٘ ٓ٠ب اٌجسا٠خ ٚاٌّزجم ِٓ ٟاٌمبئّخ ثبؼزرساَ اٌظ١غخ اٌزبٌ١خ: ]اٌّزجم ِٓ ٟاٌمبئّخ | اٌجسا٠خ[ أٚ ][Head | Tail ح١ش ٛ٘ headػسز ِحسز ِٓ اٌؼٕبطط ٚ ,ئشا وبٔذ أوضط ِٓ ػٕظط ٚاحس ٔفظً ثٕٙ١ب ثفٛاطً ( ),أِب tailف ٛٙلبئّخ ٚاحسح ٚال ٠غٛظ اؼزرساَ اٌفٛاطً أ ٚؼحت ػٕبطط ِٕٙب ِجبشطحِ ,ضبي ػٍ ٝشٌه: ؼحت ػٕظط ٚاحس ِٓ اٌمبئّخ][X | T ؼحت ػٕظط ِٓ ٓ٠اٌمبئّخDate: Tuesday, March 04, 2014 Page 17 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent ][X1,X2 | T ؼحت صالس ػٕبطط][X1,X2,X3 |T ٚف ٟحبٌخ ئٕٔب ال ٔط٠س اٌٛطٛي ئٌ ٝػٕبطط اٌمبئّخ فبٔٗ ال رٛعس حبعخ ئٌ ٝػٍّ١خ اٌؽحت ٔٚىزت اؼُ اٌّزغ١ط اٌص٠ ٞحز ٞٛػٕبطط اٌمبئّخ عّ١ؼب ثس ْٚألٛاغ وّب ٌ ٛوبْ ِزغ١ط ِٓ ٔٛع ث١بٟٔ ثؽ١ؾ غ١ط ِطوت (….)integer, real, اَتبه: ال رىزت ]ٌ [Xزش١ط ئٌ ٝاٌمبئّخ Xألٔٙب رؼٕ ٟلبئّخ رحز ٞٛػٕظط ٚاحس , Xئّٔب اوزت Xثس ْٚاأللٛاغ ٌزش١ط ئٌ ٝاٌمبئّخ Xاٌز ٟلس رى ْٛئحس ٜاٌحبالد اٌزبٌ١خ: لبئّخ فبضغخ ] [ لبئّخ رحز ٞٛػٍ ٝػٕظط ٚاحس][X لبئّخ رحز ٞٛػٍ ٝػٕظط ٓ٠اصٕ[X,Y] ٓ١ لبئّخ رحز ِٓ n ٞٛاٌؼٕبطط ][X1,X2,…, Xn ؼحت اٌؼٕظط ثبٌطط٠مخ أػالٖ ال ٠ؼٕ ٟأه رم َٛثؽحت لّ١خ ِحسزح ِٓ اٌمبئّخ ,فٟثؼغ األح١بْ ٔؽزرسَ ٘صٖ اٌظ١غخ إلػبفخ ػٕظط ئٌ ٝاٌمبئّخ ,أ ٞئْ اٌؼالِخ ( | ) رؼٕٟ رحس٠س أ ٚػعي ِٛلغ ِٓ اٌمبئّخ ّ٠ىٓ لطاءرٗ ئشا وبْ ٠حز ٞٛػٍ ٝػٕظط أ ٚرحس٠ضٗ ئشا وبْ فبضغب. ػٕسِب رم َٛثؽحت أ ٚئػبفخ اٌؼٕظط ِٓ أ ٚئٌ ٝاٌمبئّخ فبٔه ثصٌه رغزبظ ِٛلؼٗ ٚرمفػٕس اٌّٛلغ اٌزبٌٚ ٌٗ ٟثبٌٕز١غخ ٌٓ رؽزط١غ اٌطعٛع ئٌ.ٗ١ َ . 3تعهى بعض األفكاس و١ف رمطأ اٌمبئّخ اٌجطٔبِظ اٌزبٌ ٟؼ١ؼًّ ػٍ ٝؽجبػخ ػٕبطط لبئّخ ,ضرت أفىبضن لجً أْ رجطِظ: -1حسز ٔٛع اٌج١بٔبد (ؼٕفزطع ئٔٙب أؼّبء ؽالة) *name=symbol -2حسز اؼُ اٌؼاللخ ٚػسز ِؼبِالرٙب ؼٕرزبض اؼُ ٌٕ printى ْٛلط٠ج٘ ِٓ ٓ١سف اٌجطٔبِظ ٌسٕ٠ب أؼّبء فمؾ ٌٙٚصا ٔحزبط ِؼبًِ ٚاحس ٛ٘ٚلبئّخ األؼّبء )print(name -3فىط ثٛػغ ئؼزطار١غ١خ اٌجطٔبِظ ,وأْ رمٛي ٌس ّ ٞلبئّخ ٚأض٠س أْ أؽجغ ػٕبطط٘ب ٘ٚصا ٠ؼٕ ٟئٔ ٟؼأحزبط ٌمطاءرٙب عّ١ؼب اثزساء ِٓ اٌؼٕظط األٚي ٚألٔ ٟال ّ٠ىٓ أْ احسز ػسز ػٕبطط اٌمبئّخ فبٔ ٟثحبعخ ئٌ ٝلطاءرٙب حزٔ ٝمطخ إٌٙب٠خ ٟ٘ٚػٕسِب احظً ػٍٝ لبئّخ فبضغخ ,ف ٟوً ِطح ػٍ ّ ٟأْ اؼحت ػٕظط ٚاحس ٚػٍّ١خ اٌؽحت ؼزإز ٞاٌغطع ِٓٚصُ أرؼبًِ ِغ اٌّزجم ِٓ ٟاٌمبئّخ ألػ١س اؼزرساِٗ حز ٝرٕز ٟٙاٌمبئّخ: )]1. print([X | T لّذ ثؽحت االؼُ األٚي ٚٚػؼزٗ ف ٟاٌّزغ١ط ٚ Xثبل ٟاألؼّبء ف ٟاٌّزغ١ط T )2. print([ X | T):-write(X Date: Tuesday, March 04, 2014 Page 18 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent ٚا ْ٢رّذ ؽجبػخ اٌؼٕظط األٚيٌٚ ,ىٓ ِب ظٌذ ثحبعخ ئٌ ٝؽجبػخ ثبل ٟاألؼّبء! 3. print ([X|T]):-write(X),print(T). اؼزرسِذ االؼزسػبء اٌصار ٟإلػبزح اٌؼٍّ١خ ػٍ ٝثم١خ اٌؼٕبطط ,ف ٟاالؼزسػبء اٌزبٌ ٟؼ١مَٛ اٌجطٔبِظ ثمطغ Xعس٠سح ٠ٚؼ١س ٔفػ اٌؼٍّ١خٌٚ ....ىٓ ِز ٝؼ١زٛلف اٌجطٔبِظ؟! )][(4. print اٌمبئّخ اٌفبضغخ ػٕسِب احظً ػٍ ٝلبئّخ فبضغخ ؼأل َٛثمطغ اٌزٕف١ص. -4اػس رطر١ت أفىبضن ٚاوزت اٌجطٔبِظ ثظ١غخ ِمجٌٛخٚ ,ػٍ٘ ٝصا األؼبغ فبْ ثطٔبِغٕب ؼ١ى:ْٛ domains *x=symbol predicates print(x). clauses print([]):-!. print([ X | T]):- write (X), nl, print (T). ثٙصٖ اٌطط٠مخ ؼزم َٛثطجبػخ اٌؼٕبطط ِٓ األٚي ئٌ ٝاألذ١ط ً٘ ,فىطد أْ رطجغ اٌؼٕبطط ثطط٠مخ ػىؽ١خ (أ ِٓ ٞاألذ١ط ئٌ ٝاألٚي)؟ ِب ضأ٠ه أْ رإعً ػٍّ١خ اٌطجبػخ ثؼس االؼزسػبء ٌزظً ئٌٝ إٌٙب٠خ صُ رطجغ اٌؼٕبطط ف ٟؽط٠مه ٌٍؼٛزح ئٌ ٝثسا٠خ االؼزسػبء ؟ عطة ٘صٖ print([X|T]):-print(T),write(X),nl. و١ف رٕؽد ثؼغ اٌؼٕبطط ِٓ لبئّخ ئٌ ٝلبئّخ أذط ٜ؟ ً٘ رزصوط ػٕسِب لٍٕب ئْ اٌؽحت ال ٠ؼٕ ٟثبٌؼطٚضح ؼحت ػٕظط ِٛعٛز فؼال ٌٚىٓ ٘ٛ ِغطز حغع ٌّٛلغ ف ٟاٌمبئّخ؟ ٘صا اٌّضبي ٠ؽبػسٔب ف ٟف ُٙفىطح ٔؽد ثؼغ اٌؼٕبطط ,ؼٕم َٛثىزبثخ ثطٔبِظ ثٕؽد األػساز اٌعٚع١خ ئٌ ٝلبئّخ أذطٜ .1حسز أٔٛاع اٌج١بٔبد :فطزٚ ٞظٚعٟ؟ ئشْ أػساز طح١حخ integer *x=integer .2حسز اؼُ اٌؼاللخ ٚػسز ِؼبِالرٙب :ؼٕم َٛثفطظ األػساز اٌعٚع١خ ٛ٘ even ..اؼُ اٌؼاللخ ٌٚ ,سٕ٠ب لبئّخ أطٍ١خ ٚلبئّخ ٔؼغ فٙ١ب اٌؼٕبطط اٌعٚع١خ ..ئشْ ٌسٕ٠ب ِؼبٍِٓ١ ٚوالّ٘ب لٛائُ ػٕبطط٘ب أػساز طح١حخ *integer even(x,x). .3لُ ثٛػغ ئؼزطار١غ١خ ٌٍجطٔبِظ ,رؼٍّٕب و١ف ٔؽحت ػٕبطط اٌمبئّخ ثبٌزؽٍؽً ِٓ اٌجطٔبِظ األٚي ٚ ,ا ْ٢ؼٕفىط ثى١ف١خ رطج١ك شطؽ أْ ٠ى ْٛاٌؼٕظط ظٚع ٟأَ فطز( ٞئشا وبْ ٠مجً اٌمؽّخ ػٍ 2 ٝأ ٚال) ٚػٍ ٝأؼبغ ٔز١غخ اٌشطؽ ٔمطض ئػبفخ اٌؼٕظط ئٌٝ اٌمبئّخ اٌغس٠سح أَ ال. ف ٟاٌرطٛح األ ٌٝٚاؼحت اٌؼٕظط ِٓ اٌمبئّخ األ . ٌٝٚئشا وبْ اٌؼٕظط ٠مجً اٌمؽّخ ػٍٝ 2احغع ػٕظط عس٠س ف ٟاٌمبئّخ اٌضبٔ١خ ٚأؽد اٌؼٕظط ئٌ ,ٗ١أِب ئشا وبْ ػىػ شٌه فمُ ثؼٍّ١خ اٌؽحت ػٍ ٝاٌمبئّخ األ ٌٝٚز ْٚأْ رؽحت ػٕظط ِٓ اٌمبئّخ اٌضبٔ١خ ..و١ف شٌه؟ )1. even([X|T],Y ٠ؼٕ ٟئْ اٌؼٕظط األٚي Xلس رُ ؼحجٗ ِٓ اٌمبئّخ األ, ٌٝٚثّٕ١ب اٌمبئّخ اٌضبٔ١خ Yثم١ذ ػٍ ٝحبٌٙب ز ْٚرغ١١ط. )]2. even([X|T],[Y1|T2 Date: Tuesday, March 04, 2014 Page 19 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent اٌؼٕظط األٚي Xالزطغ ِٓ اٌمبئّخ األٚ ٌٝٚرُ حغع اٌّٛلغ األٚي ِٓ اٌمبئّخ اٌضبٔ١خ فٟ .Y1 3. even([X|T],[Y1|T2]):-X mod 2=0 اذزجط , Xئشا وبْ ٠مجً اٌمؽّخ ػٍ 2 ٝلُ ثٕؽرٗ ئٌ Y1 ٝصُ وطض اٌؼٍّ١خ ػٍ ٝثم١خ اٌؼٕبطط ثبؼزسػبء ٔفػ اٌؼاللخ ٚئػطبء٘ب اٌّزجم ِٓ ٟاٌمبئّز.ٓ١ even([X|T],[Y1|T2]):-X mod 2=0,Y1=X, even(T,T2). ٌٚىٓ! ِبشا ٔفؼً ئشا وبْ اٌشطؽ ال ٕ٠طجك ػٍ ٝاٌؼٕظط؟ اٌغٛاة ثؽ١ؾ :الطغ اٌؼٕظط ِٓ اٌمبئّخ األٚ ٌٝٚارطن اٌمبئّخ اٌضبٔ١خ ػٍ ٝحبٌٙب ثس ْٚأٞ ؼحتٚ ,اؼزسػ ٟاٌؼاللخ ِٓ عس٠س ٌزفحض ثبل ٟاٌؼٕبطط. 4. even ([X|T],Y):-X mod 2<>0,even(T,Y). اعّغ أفىبضن ِٓ عس٠س ٚضرجٙب ثشىً ثطٔبِظ domains *x=integer predicates even(x,x). clauses even([],[]):-!. even([X|T],[Y|T2]):-X mod 2=0, Y=X, even(T,T2). even([X|T],Y):-X mod 2<>0, even(T,Y). ئشا وٕذ ِّٓ ٠حج ْٛاالذزظبض ,عطة ٘صا even([],[]):-!. even([X|T],[X|T2]):-X mod 2=0,even(T,T2),!. even([ _ |T],Y):-even(T,Y). ٘ٚصا ٠ؼٕ ٟأه ؼزّٕغ اٌجطٔبِظ ِٓ اٌص٘بة ئٌ ٝاٌمبػسح اٌضبٌضخ ػٕس رحمك اٌمبػسح اٌضبٔ١خ ٚفٙ١ب رٕؽد اٌؼٕظط األٚي ئٌ ٝاٌمبئّخ اٌضبٔ١خ ِجبشطح ٚ ,ف ٟحبٌخ ػسَ رحمك اٌمبػسح اٌضبٔ١خ فٙصا ٠ؼٕ ٟئْ اٌؼٕظط فطزٚ ٞػٕس٘ب ؼ١م َٛثمطؼٗ ف ٟاٌمبػسح اٌضبٌضخ ٠ٚزطن اٌمبئّخ اٌضبٔ١خ ز ْٚرغ١١ط. و١ف رزحىُ ثؼسز اٌؼٕبطط اٌّطٍٛثخ ٌزٕفص ٘سفه؟ افزطع أه رط٠س ئْ رحؽت ِؼسالد ؽالة ٌ ,ىً ؽبٌت صالس زضعبد ٌٚ ,ىٓ اٌسضعبد ٌ١ؽذ ِٛظػخ ثضالس لٛائُ ئّٔب ِزؽٍؽٍخ ف ٟلبئّخ ٚاحسح ثح١ش وً ؽبٌت ٌس ٗ٠صالس زضعبد ِززبثؼخ ف ٟاٌمبئّخ: اٌطبٌت األٚي ٌس ٗ٠اٌسضعبد األٚ ٌٝٚاٌضبٔ١خ ٚاٌضبٌضخ اٌطبٌت اٌضبٌٔ ٟس ٗ٠اٌسضعبد اٌطاثؼخ ٚاٌربِؽخ ٚاٌؽبزؼخ اٌطبٌت اٌضبٌش ٌس ٗ٠اٌسضعبد اٌؽبثؼخ ٚاٌضبِٕخ ٚاٌزبؼؼخ ٘ٚ ...ىصا .1حسز أٔٛاع اٌج١بٔبدٌ :س٠ه أؼّبء *ٚ symbolزضعبد *integer *x=integer *s=symbol .2حسز اؼُ اٌؼاللخ ٚػسز ٛٔٚع ِؼبِالرٙب )average ( s,x .3ذطؾ ٌٍزٕف١ص ,صالس زضعبد ِزؽٍؽٍخ؟ ئشْ: Date: Tuesday, March 04, 2014 Page 21 3rd class – Department of Network College of IT- University of Babylon Artifical Intelligent ]ٚ [X1,X2,X3|Tاؼُ ٚاحس ] [Y|T2أٔذ ا ْ٢رؽحت صالس ػٕبطط ِٓ لبئّخ اٌسضعبد ٚػٕظط ٚاحس ِٓ لبئّخ األؼّبء ِٚ ,بشا ثؼس؟ ػٍ١ه حؽبة اٌّؼسي :اؼزرسَ ِزغ١طا ٚؼط١ب ٚاحؽت اٌّؼسي: Av=(X1+X2+X3)/3 average([Y|T1],[X1,X2,X3|T2]):Av=(X1+X2+X3)/3,write("name=",Y,"av=",Av), average(T1,T2). فىط ِٓ عس٠سِ ..بشا ٌ ٌُ ٛرىٓ اٌسضعبد رىف١ٌ ٟزُ رٛظ٠ؼٙب ػٍ ٝاٌطالة ثح١ش ٠حظً اٌغّ١غ ػٍ ٝصالس زضعبد؟ ا ْ٢ػٍ١ه أْ رؼ١س حؽبة عّ١غ االحزّبالد .1أْ رٕز ٟٙلبئّخ اٌسضعبد لجً لبئّخ األؼّبء! (ٔمض ف ٟػسز اٌسضعبد) .2أْ ٠زجم ٝزضعخ ٚاحسح ,ف ٟح ٓ١أٔذ رط٠س 3زضعبد! .3أْ ٠زجم ٝزضعزبْ ٚ ,أٔذ رط٠س 3زضعبد! .4أْ رٕز ٟٙلبئّخ األؼّبء لجً لبئّخ اٌسضعبد! (ظ٠بزح ف ٟػسز اٌسضعبد) ف ٟوً ِٓ ٘صٖ اٌحبالد ٠غت ئ٠مبف اٌزٕف١ص فٛضا . ٟ٘ٚرىزشف ثبٌمٛاػس اٌزبٌ١خ ٚحؽت اٌزؽٍؽً: 1. average( _, []). 2. average( _, [X]). 3. average( _, [X,Y]). 4. average( [],_). ٚال رٕؽ ٝأ٠ؼب ,ف ٟعّ١غ األحٛاي ػٍ١ه ئ٠مبف اٌزٕف١ص ,فؼٕس أزٙبء اٌمبئّزِ ٓ١ؼب ٟ٘ٚ أفؼً اٌحبالد ػٍ١ه ئ٠مبف اٌجطٔبِظ: average([],[]). فٍٕطرت األفىبض ٌزى ْٛثطٔبِظ ِمجٛي: domains *x=integer *s=symbol predicates average(s,x). clauses average([],[]):-!. average( _, []):-!. average( _, [_]):-!. average( _, [_,_]):-!. average( [],_):-!. average([Y|T1],[X1,X2,X3|T2]):-Av=(X1+X2+X3)/3, write("name=",Y,"av=",Av),nl, average(T1,T2). رصوط زائّب: Date: Tuesday, March 04, 2014 Page 21 Artifical Intelligent 3rd class – Department of Network College of IT- University of Babylon خ١ٔب١اع اٌجٛٔ األٟ٘ حسادٌٛ٘صٖ اٚ حساد اطغطٚ ِٓ ْٛزى٠ ًى١٘ ٟ٘ ُائٛئْ اٌم ػٕظط رمزطؼٗ ِٓ اٌمبئّخّٞىٕه أْ رؽزرسَ أ٠ ٘صا األؼبغٍٝػٚ , زضؼٕب٘ب ؼبثمبٟخ اٌز١األؼبؼ .ٗزٕبؼت ِغ ذظبئظ٠ ّْىٓ أ٠ ْ ِىبٞ أٟف عٛٔ ِٓ بٍِٙ ِؼبٜ ػاللخ أذطّٟىٕه أْ رسذٍٗ ف٠ Integer عٛٔ ِٓ اٌؼٕظط,ِضال . أؼبغ ٘صٖ اٌفىطحٍٝش ثطٔبِغٕب اٌؽبثك ػ٠َ ثزحسٛ ؼٕم.خ اٌؼٕبطط١وصا ثبٌٕؽجخ ٌجمٚ integer ٖ لبػسح ٘صٟفٚ real ذط٢اٚ symbol احسّ٘ب, ْب ِؼبِالٌٙ ٕب ػاللخ٠افزطع ئْ ٌس : ٘ىصا,ٓ١ٍِٓ اٌّؼب٠َ ثطجبػخ ٘صٛب ٔمٙ٠ رإزٟفخ اٌز١ظٌٛ اٟ٘ٚ اٌؼاللخ domains x=integer* s=symbol* predicates average(s,x). print(symbol,real). Clauses print(X,Y):-write("name=",X,"Av=",Y),nl. average([],[]):-!. average( _, []):-!. average( _, [_]):-!. average( _, [_,_]):-!. average( [],_):-!. average([Y|T1],[X1,X2,X3|T2]):-Av=(X1+X2+X3)/3, print(Y,Av), average(T1,T2). انًشاخع Bart, D., Phuong-Lan, N., Tom, S., & Troncon, R. (2005). The First 10 Prolog Programming Contests. Belgium: ISBN. Page 22 Date: Tuesday, March 04, 2014