الذكاء الاصطناعي1 - الوحدة الثانية [70-130].pdf
Document Details
Uploaded by DedicatedSilver
الحكم بن هشام بالمهد - مسارات
Tags
Related
- Unit 1 - Introduction to Machine Learning PDF
- Artificial Intelligence Lec2 PDF
- Introduzione all'Intelligenza Artificiale e Machine Learning PDF
- CS 312 Introduction to Artificial Intelligence - Clustering Algorithms PDF
- Artificial Intelligence for Business MIS 272 Lecture Notes PDF
- Machine Learning Algorithms to Detect Patient-Ventilator Asynchrony (PDF)
Full Transcript
.2خوارزميات ال��ذكاء اال�صطناعي �س ��يتعرف الطال ��ب يف ه ��ذه الوح ��دة عل ��ى بع� ��ض اخلوارزمي ��ات األأ�سا�س ��ية املُ�س ��تخدَ مة يف ال��ذكاء اال�صطناع��ي ( .)AIكم��ا �س��يتعلم كي��ف ُينْ�شِ ��ئ نظ��ام ت�ش��خي�ص طبي ب�س��يط مُ�س��ت ِند �إىل القواع��د بِطُ ��رق برجمي��ة مُتع��ددة ث��...
.2خوارزميات ال��ذكاء اال�صطناعي �س ��يتعرف الطال ��ب يف ه ��ذه الوح ��دة عل ��ى بع� ��ض اخلوارزمي ��ات األأ�سا�س ��ية املُ�س ��تخدَ مة يف ال��ذكاء اال�صطناع��ي ( .)AIكم��ا �س��يتعلم كي��ف ُينْ�شِ ��ئ نظ��ام ت�ش��خي�ص طبي ب�س��يط مُ�س��ت ِند �إىل القواع��د بِطُ ��رق برجمي��ة مُتع��ددة ث��م يق��ارن النتائ��ج .ويف اخلتام �س��يتعلّم خوارزميات البحث وطرق حل �ألغاز املتاهة مع �أخذ معايري معيّنة يف االعتبار. �أهداف التعلُّم بنهاية هذه الوحدة �سيكون الطالب قادرًا على �أن: >يُن�شئ مقطعًا برجميًّا تكراريًّا. >يُق��ارِن ب�ني�ن خوارزمي��ة البح��ث ب�أولوية االت�س��اع وخوارزمية البح��ث ب�أولوية العُمق. >ي َِ�صف خوارزميات البحث وتطبيقاتها. >يُقارِن بني خوارزميات البحث. >ي َِ�صف النظام القائم على القواعد. >يُدرِّب مناذج الذكاء اال�صطناعي حتى تتعلّم حل امل�شكالت املُعقدة. >يُقيِّم نتائج املقطع الربجمي وكفاءة الربنامج الذي �أن�ش�أه. >يُطوِّر الربامج ملحاكاة حلّ م�شكالت احلياة الواقعية. >يُقارِن بني خوارزميات البحث. األأدوات >مفكرة جوبيرت ()Jupyter Notebook 70 الدر�س األأول اال�ستدعاء الذاتي تق�سيم املُ�شكلة Dividing the Problem يف هذا الدر�س� ،ستتعلّم ا�ستخدام الدوال التكرارية لتب�سيط الربنامج وزيادة كفاءته. لك هديّة ،وكنت ُمتلهفًا ملعرفتها ،ولكن عندما فتحت ال�صندوق ،وجدت �صندوقًا جديدً ا بداخله ،وعندما والداك قد �أح�ضرا َ َ تخيّل �أن وجدت �آخ َر بداخله ،وهكذا حتى عجزت �أن تعرف يف �أي �صندوق توجد الهدية. فتحته، َ اال�ستدعاء الذاتي Recursion اال�س��تدعاء الذاتي هو �أحد طُ ُرق حل امل�ش��كالت يف علوم احلا�س��ب ،ويتم عن طريق تق�س��يم امل�ش��كلة �إىل جمموعة من امل�ش��كالت �تخدم اال�س��تدعاء ال�صغ�ريرة املُ�ش��ابهة للم�ش��كلة األأ�صلي��ة حت��ى ُمُيكن��ك ا�س��تخدام اخلوارزمي��ة نف�س��ها حل��ل تل��ك امل�ش��كالتُ .ي�س� َ الذاتي بوا�سطة �أنظمة الت�شغيل والتطبيقات األأخرى ،كما تدعمه معظم لغات الربجمة. يحدث اال�ستدعاء الذاتي عندما تتكرر التعليمات نف�سها ،ولكن مع بيانات خمتلفة و�أقل تعقيدًا. افتح ال�صندوق نعم هل هناك �صندوق بالداخل؟ ال وجدت الهدية وانتهى اال�ستدعاء الذاتي �شكل :2.1مثال على اال�ستدعاء الذاتي 71 .ل ُتُلقِ نظرة على مثال لدالة ت�ستدعي دالة �أخرى def mySumGrade (gradesList): sumGrade=0 l=len(gradesList) for i in range(l): sumGrade=sumGrade+gradesList[i] return sumGrade def avgFunc (gradesList): s=mySumGrade(gradesList) l=len(gradesList) avg=s/l return avg ا�ستدعاء الدالة .mySumGrade قائمةlen() ت�ستخدم دالة ِ كم حل�ساب وحتديد،ُعامل مُدخَ ل .عدد العنا�صر يف القائمة # program section grades=[89,88,98,95] averageGrade=avgFunc(grades) print ("The average grade is: ",averageGrade) The average grade is: 92.5 Recursive Function دالة اال�ستدعاء التكرارية يف بع���ض احل��االت ت�س��تدعي الدّال� ُة نف�سَ ��ها وه��ذه اخلا�صي��ة تُ�س��مى .)Recursive Calls( اال�ستدعاءات التكرارية يك��ون ِبن��اء اجلمل��ة الع��ام لدال��ة اال�س��تدعاء التكراري��ة عل��ى النح��و :التايل الربنامج الرئي�س # recursive function recurseFunction() خاطئ ال�شرط def recurseFunction(): if (condition): # base case statement else: #recursive call recurseFunction() # main program ....... �صحيح # normal function call recurseFunction() ......... األأمر متثيل اال�ستدعاء التكراري:2.2 �شكل اال�ستدعاء التكراري هو عملية .ا�ستدعاء الدالة لنف�سها 72 تتكون دالة اال�ستدعاء التكرارية من حالتني: احلالة األأ�سا�سية Base Case ويف ه��ذه احلال��ة تتوق��ف الدال��ة ع��ن ا�س��تدعاء نف�س��ها ،ويت�أ ّك��د الو�صول �إىل ه��ذه احلالة من خالل األأمر امل�ش��روط .بدون احلالة األأ�سا�سية� ،س َتتَكرَّر عملية اال�ستدعاء الذاتي �إىل ما ال نهاية. حالة اال�ستدعاء التكرارية Recursive Case ويف ه��ذه احلال��ة ت�س��تدعي الدال� ُة نف�سَ ��ها عندم��ا ال ُحُتق��ق �ش��رط التوق��ف ،وتظ��ل الدال��ة يف حالة اال�س��تدعاء الذاتي حتى ت�صل �إىل احلالة األأ�سا�سية. �أمثلة �شائعة على اال�ستدعاء الذاتي Recursion Common Examples �أح��د األأمثل��ة األأك�رثر �ش��يوعً ا عل��ى ا�س��تخدام اال�س��تدعاء الذات��ي ه��و عملي��ة ح�س��اب م�ضروب رقم ُمع� ّنّين .م�ض��روب الرقم هو عرَّب ع��ن امل�ضروب بالرق��م متبو ًع��ا بالعالمة "!"، ن��اجت �ض��رب جمي��ع األأع��داد الطبيعي��ة األأق��ل م��ن �أو ت�س��اوي ذل��ك الرق��مُ .ي َّ على �سبيل املثال ،م�ضروب الرقم 5هو ! 5وي�ساوي .1*2*3*4*5 جدول :2.1م�ضروب األأرقام من � 0إىل 5 !0!=1 0 !1!=1*1=1 1 !2!=2*1=2 2 !3!=3*2*1=6 3 !4!=4*3*2*1=24 4 !5!=5*4*3*2*1=120 5 �أو �أو �أو �أو �أو �س��تالحظ �أن عملي��ة ح�س��اب امل�ض��روب ت�س��تند �إىل القاعدة �أدناه: 1!= 0! *1 2!= 1! *2 الحالة األأ�سا�سية 4!=3! * 4 حالة اال�ستدعاء التكرارية 3!= 2! *3 5!=4! * 5 ,if n=0 if n>0 1 (n-1)! * n = !n �شكل :2.3قاعدة ح�ساب امل�ضروب إلإن�شاء برنامج يقوم باحت�ساب م�ضروب العدد با�ستخدام حلقة التكرار ،forاتّبع ما يلي: # calculate the factorial of an integer using iteration def factorialLoop(n): result = 1 for i in range(2,n+1): result = result * i return result # main program ))" num = int(input("Type a number: )f=factorialLoop(num )print("The factorial of ", num, " is:", f Type a number: 3 The factorial of 3 is:6 73 اآلآن ِ اح�سب م�ضروب العدد با�ستخدام دالة امل�ضروب. م�ضروب ()3 # calculate the factorial of an integer using a # recursive function حالة اال�ستدعاء التكرارية. def factorial(x): الحالة األأ�سا�سية. if x == 0: return 1 else: ))return (x * factorial(x-1 # main program ))" num = int(input("Type a number: )f=factorial(num )print("The factorial of ", num, " is: ", f Type a number: 3 The factorial of 3 is: 6 •تقل��ل دوال اال�س��تدعاء التكراري��ة م��ن ع��دد التعليم��ات يف املقطع الربجمي. •ميك��ن تق�س��يم املهم��ة �إىل جمموع��ة م��ن امل�ش��كالت الفرعي��ة با�ستخدام اال�ستدعاء الذاتي. •يف بع���ض األأحي��ان ،يَ�س �هُل ا�س��تخدام اال�س��تدعاء الذات��ي ال�ستبدال التكرارات املُتداخلة. م�ضروب ()2 2 م�ضروب ()1 م�ضروب ()0 1 1 3! = 3*2*1 = 6 �شكل � :2.4شجرة اال�ستدعاء الذاتي جدول :2.2مزايا اال�ستدعاء ّ الذاتي ،وعيوبه املزايا 3 العيوب •يف بع���ض األأحي��انَ ،ي�ص ُع��ب تَت ُّب��ع منط��ق دوال اال�ستدعاء التكرارية. •يتطل��ب اال�س��تدعاء الذات��ي مزي��دً ا م��ن الذاك��رة والوقت. •ال ي�س��هل حتدي��د احل��االت الت��ي ميك��ن فيه��ا ا�ستخدام دوال اال�ستدعاء التكرارية. اال�ستدعاء الذاتي والتكرار Recursion and Iteration ُي�س��تخدم ك ٌّل م��ن اال�س��تدعاء الذات��ي والتك��رار يف تنفي��ذ جمموع��ة م��ن التعليم��ات لع��دة م��رات ،والف��ارق الرئي���س ب�نين اال�ستدعاء الذاتي والتكرار هو طريقة �إنهاء الدالة التكرارية .دالة اال�ستدعاء التكرارية ت�ستدعي نف�سها وتُنهي التنفيذ عندم��ا ت�ص��ل �إىل احلال��ة األأ�سا�س��ية� .أم��ا التك��رار فيُن ِّف��ذ ل ِب َن� َة املقط��ع الربجم��ي با�س��تمرارحتى يتحق��ق �ش��رط ُحُم� َّدد �أو ينق�ضي عدد ُحُم َّدد من التكرارات. اجلدول التايل يعر�ض بع�ض االختالفات بني اال�ستدعاء الذاتي والتكرار. جدول :2.3التكرار واال�ستدعاء الذاتي التكرار اال�ستدعاء الذاتي بطيء التنفيذ مقارن ًة بالتكرار. يتطلب حجم ذاكرة �أكرب. حجم املقطع الربجمي �أ�صغر. �سريع التنفيذ. يتطلب حجم ذاكرة �أقل. حجم املقطع الربجمي �أكرب. ينته��ي با�س� عنَّي�.تكمال الع��دد املُح � َّدد م��ن التك��رارات �أو حتقي��ق ينتهي مبجرد الو�صول �إىل احلالة األأ�سا�سية. �شرط ُم َّ 74 متى ت ِ َ�ستخدم اال�ستدعاء الذاتي؟ •يُع ُّد اال�ستدعاء الذاتي الطريقة األأكرث مالئمة للتعامل مع امل�شكلة يف العديد من احلاالت. •يَ�س ُهل ا�ستك�شاف بع�ض هياكل البيانات با�ستخدام اال�ستدعاء الذاتي. •بع���ض خوارزمي��ات الت�صني��ف ( ،)Sorting Algorithmsتَ�س� ِ �تخدم اال�س��تدعاء الذات��ي ،مث��ل :الت�صني��ف ال�س��ريع (.)Quick Sort يف املثال التايل� ،ست�ستخرج �أكرب رقم موجود يف قائمة مكونة من األأرقام با�ستخدام دالة اال�ستدعاء التكرارية. كما يظهر يف ال�سطر األأخري من املثال دالة �أخرى للتكرار لغر�ض املقارنة. def findMaxRecursion(A,n): if n==1: ]m = A[n-1 else: ))m = max(A[n-1],findMaxRecursion(A,n-1 return m def findMaxIteration(A,n): ]m = A[0 for i in range(1,n): )]m = max(m,A[i return m ت�ستخرج الدالة )( maxالعن�صر ذا القيمة األأكرب (العن�صر ذو القيمة األأكرب يف .)myList # main program ]myList = [3,73,-5,42 )l = len(myList )myMaxRecursion = findMaxRecursion(myList,l )print("Max with recursion is: ", myMaxRecursion )myMaxIteration = findMaxIteration(myList,l )print("Max with iteration is: ", myMaxIteration 73 73 Max with recursion is: Max with iteration is: ))max(A[3], findMaxRecursion(A, 3 ))max(A[2], findMaxRecursion(A, 2 ))max(A[1], findMaxRecursion(A, 1 3 > > > 42 -5 73 �شكل � :2.5شجرة اال�ستدعاء الذاتي لدالة ا�ستخراج �أكرب رقم يف قائمة مكونة من األأرقام 75 . �ستُن�شئ دالة ا�ستدعاء تكرارية حل�ساب مُ�ضاعَ ف الرقم،يف الربنامج التايل ِ � وم��ن َث��مَّ �ستَ�س،�س��تقوم ب�إدخ��ال رق ًم��ا (األأ�سا���س) وفهر�سً ��ا (األأُ���س �أو ال ُق� ّوَّة) يقبلهم��ا الربنام��ج �تخدم دال��ة اال�س��تدعاء ِ � الت��ي �ستَ�سpowerFunRecursive() التكراري��ة ميكن حتقيق األأمر.�ضاعف الرق��م َ �تخدم هذي��ن املدخَ لَ�نين حل�س��اب ُم :يو�ضح ذلك ّ واملثال التايل،نف�سه با�ستخدام التكرار def powerFunRecursive(baseNum,expNum): if(expNum==1): return(baseNum) else: return(baseNum*powerFunRecursive(baseNum,expNum-1)) def powerFunIteration(baseNum,expNum): numPower = 1 for i in range(exp): numPower = numPower*base return numPower # main program base = int(input("Enter number: ")) exp = int(input("Enter exponent: ")) numPowerRecursion = powerFunRecursive(base,exp) print( "Recursion: ", base, " raised to ", exp, " = ",numPowerRecursion) numPowerIteration = powerFunIteration(base,exp) print( "Iteration: ", base, " raised to ", exp, " = ",numPowerIteration) Enter number: 10 Enter exponent: 3 Recursion: 10 raised to 3 = 1000 Iteration: 10 raised to 3 = 1000 Infinite Recursive Function دالة اال�ستدعاء التكرارية الالنهائية كما يجب عليك ا�س��تخدام طريقة معين��ة إلإيقاف التكرار،يج��ب �أن تك��ون ح��ذرًا للغاي��ة عن��د تنفي��ذ اال�س��تدعاء التك��راري ال��ذي ي�س� ّبب تو َّق��ف النظ��ام عن اال�س��تجابة،عن��د حتقي��ق �ش��رط ُحُم� َّدد لتجن��ب ح��دوث اال�س��تدعاء التك��راريّ الالنهائ� ّ�ي .) و�إنهاء التطبيقMemory Overflow( مما ي�ؤدي �إىل َفيْ�ض الذاكرة،ب�سبب كرثة ا�ستدعاءات الدالة 76 الدر�س الثاين خوارزمية البحث ب�أولوية العمق والبحث ب�أولوية االت�ساع البحث يف املُخطَّ طات Searching in Graphs تفح���ص كل ُعق��دة يف املُخطَّ ��ط إلإج��راء هن��اك بع���ض احل��االت الت��ي حتت��اج فيه��ا �إىل البح��ث ع��ن عُ ق��دة ُحُم� َّددة يف املُخطَّ ��ط� ،أو ُّ عملي��ة بعينه��ا مث��ل طباع��ة ُعق��د املُخطَّ ��ط ،فتك��ون حالت� َ�ك ك�ش��خ� ٍص يبح��ث ع��ن املدين��ة الت��ي يري��د ال�سّ ��فر �إليه��ا؛ و ليتحقق هذا، حتتاج �إىل فح�ص كل ُعقدة يف املُخطَّ ط حتى جتد تلك التي حتتاج �إليهاُ .يطلق على هذا اإلإجراء :البحث يف املُخطَّ ط �أو م�س��ح ُخطط ،وهناك العديد من خوارزميات البحث التي ت�ساعد على تنفيذه ،مثل: امل َّ •خوارزمية البحث ب�أولوية االت�ساع (.)Breadth-First Search - BFS •خوارزمية البحث ب�أولوية العمق (.)Depth-First Search - DFS عُ قدة البث العُقد المجاورة ل ُعقدة البث العُقد األأخرى مثال على خوارزمية البحث ب�أولوية االت�ساع ( :)BFSالبث ال�شبكي خوارزمية البحث ب�أولوية االت�ساع Breadth-First Search (BFS) Algorithm مثال على خوارزمية البحث ب�أولوية العمق ( :)DFSحل املتاهة امل�ستوى 0 ت�ستك�ش��ف خوارزمي��ة البح��ث ب�أولوي��ة االت�س��اع ( )BFSاملُخطَّ ��ط بح�س��ب امل�ستوى ً واحدا تلو اآلآخر ،حيث تبد�أ بفح�ص عُ قدة اجلذر (عُ قدة البداية) ،امل�ستوى 1 ثم تفح�ص جميع العُقد املرتبطة بها ب�شكل مبا�شر واحدة تلو األأخرى. بع��د االنته��اء م��ن فح���ص كل ال ُعق��د يف امل�س��توى ،تنتق��ل �إىل امل�س��توى الت��ايل، ُو�ضحة يف ال�شكل .2.6 وتتبع اإلإجراءات نف�سها امل ّ امل�ستوى 2 �ستخدم الطّ ابور لتت ّبع العُقد التي ّمت فح�صها ،ومبج ّرد ا�ستك�شاف العُقدة، ُي َ �ستتم �إ�ضافة ال ُع َقد الفرعية �إىل الطابور ،ثم حتذف ال ُعقدة التالية املوجودة يف �أول الطابور التي مت ا�ستك�شافها �سابقًا. A 2 C G 1 B 3 F E D 4 5 6 �شكل :2.6خوارزمية البحث ب�أولوية االت�ساع ()BFS 79 املث��ال الت��ايل يو�ض��ح طريق��ة عم��ل خوارزمي��ة البح��ث ب�أولوية االت�س��اع ( .)BFSبا�س��تخدام املُخطَّ ط الت��ايل ،حدِّ د العُقد التي يجب فح�صها لالنتقال من عُ قدة اجلذر � Aإىل ال ُعقدة :F ِ ا�ستخدم هيكل البيانات املُنا�سب. مالحظة: A C F B D E عليك فح�ص كل العُقد يف امل�ستوى 1 قبل االنتقال �إىل العُقد يف امل�ستوى .2 2 املُخطَّ ط 1 0 1 الطابور البداي��ة م��ن ال ُعق��دة اجلذرية (ال ُعق��دة � .)Aأ�ض��ف ال ُعق��دة اجلذريّة �إىل الطابور. 2 اح��ذف ال ُعق��دة اجلذر ّي��ة م��ن الطاب��ور ملعاجلته��ا ،ث��م �أ�ض��ف ف��روع ه��ذه ال ُعق��دة �إىل الطاب��ور (العُقدتني Bو.)C A C F 80 B E فُحِ َ�صت A C D 3ا ح��ذف ال ُعق��دة م��ن مقد م��ة الطاب��ور (ال ُعق��دة )Bملعاجلته��ا، ث��م �أ�ض��ف ف��روع ه��ذه ال ُعق��دة �إىل الطابور (العُقدتني Dو.)E A B F C E A C B 0 1 0 D A F B E C D B 0 C B A E D C 2 1 0 2 1 0 4اح��ذف ال ُعق��دة Cوعاجله��ا، ثم �أ�ضف فرعها �إليها. 5احذف العُقدة Dملعاجلتها. (لي�س لديها فروع). A C A B F C E E D 1 0 6احذف العُقدة Eملعاجلتها. (لي�س لديها فروع). D C F E D 2 1 0 A B F C E F E 1 0 D F E D D E F 0 7اح��ذف ال ُعق��دة Fملعاجلته��ا ،وبذل��ك �أ�صب��ح الطابور اآلآن فارغً ا وانتهت عملية البحث. العُقد التي فُحِ �صَ ت با�ستخدام خوارزمية البحث ب�أولوية االت�ساع ( )BFSهي.F ،E ،D ،C ،B ،A : B A C F F B D E الحظ كيف ُمُيكنك تطبيق خوارزمية البحث ب�أولوية االت�ساع ( )BFSبلغة البايثون ( )Pythonيف املثال التايل: { = graph "A" : ["B","C"], "B" : ["D","E"], "C" : ["F"], "D" : [], "E" : [], ][ "F" : } visitedBFS = [] # List to keep track of visited nodes # Initialize a queue ][ = queue # bfs function def bfs(visited, graph, node): )visited.append(node 81 )queue.append(node while queue: )n = queue.pop(0 )" " = print (n, end for neighbor in graph[n]: if neighbor not in visited: )visited.append(neighbor )queue.append(neighbor # main program )"bfs(visitedBFS, graph, "A A B C D E F التطبيقات العملية خلوارزمية البحث ب�أولوية االت�ساع Practical Applications of the BFS Algorithm تُ�س��تخدَ م يف �ش��بكات ال ّنظ�رير لل ّنظ�رير ( )Peer-to-Peer Networksللعث��ور عل��ى كل ال ُعقد املجاورة من �أجل ت�أ�سي�س االت�صال. تُ�س��تخدَ م يف و�س��ائل التوا�ص��ل االجتماع��ي ( )Social Mediaلرب��ط عُ ق��د امُلُ�س� ِ �تخدمني املُرتبطني ،مثل �أولئك الذين لهم االهتمامات نف�سها �أو املوقع نف�سه. تُ�س��تخدَ م يف ُنظ��م املالح��ة با�س��تخدام ُحُم �دِّد املواق��ع العامل��ي (GPS Navigation )Systemsللبحث عن األأماكن املتجاورة حتى ُحُت ِّدد االجتاهات التي يتبعها املُ�ستخدِ م. تُ�ستخدَ م للح�صول على البث ال�شبكي ( )Network Broadcastingلبع�ض احلُزم. معلومة ُمُيكن تطوير خوارزمية البحث ب�أولوية االت�ساع ( )BFSبتحديد نقطة البداية (احلالة األأوليّة) ونقطة الهدف (احلالة امل ُ�سته َدفة) إلإيجاد امل�سار بينهما. 82 خوارزمية البحث ب�أولوية العمق امل�ستوى 0 Depth-First Search (DFS) Algorithm يف البح�ث ب�أولوي�ة العم�ق (� ،)DFSس�تقوم باتب�اع احلواف ،وتتعمق �أكرث و�أكرث يف املُخطَّ طَ .ي ِ �ستخدم البحث ب�أولوية العمق �إجراء ا�ستدعاء تكراري للتنقل عرب ال ُعقد .عند الو�صول �إىل ُعقدة ال حتتوي على حواف ألأي ُعقدة جديدة� ،س�تعود �إىل ال ُعقدة ال�س�ابقة وت�س�تمر العملية .ت ِ َ�ستخدم خوارزمية البح�ث ب�أولوي�ة العم�ق هي�كل بيان�ات املُك ّد��س لتتب�ع م�س�ار اال�ستك�ش�اف. مبجرد ا�ستك�شاف ُعقدة� ،س ُت�ضاف �إىل املُكدّ�س .عندما ترغب يف العودة، �ستحذف ال ُعقدة من املُكدّ�س كما هو مو�ضح يف ال�شكل .2.7 A امل�ستوى 1 1 C امل�ستوى 2 B 6 5 G F 4 3 E 2 D �شكل :2.7خوارزمية البحث ب�أولوية العمق ()DFS املثال التايل يو�ضح طريقة عمل خوارزمية البحث ب�أولوية العمق ( ،)DFSبا�ستخدام املُخطَّ ط التايلَ ،ت َتبّع ترتيب ا�ستك�شاف العُقد ( )Traversalبح�سب خوارزمية البحث ب�أولوية العمق. ِ ا�ستخدم هيكل البيانات املُنا�سب. مالحظة: 1عا ِلج اجلذر Aثم �أ�ضفه �إىل املُكدّ�س. A C F املُكدّ�س 2 A B E C D A املُخطَّ ط D E 3عا ِلج العُقدة Dثم �أ�ضفها �إىل املُكدّ�س� .ستُحذَ ف ال ُعق��دة الت��ي ف ُِح َ�ص��ت ولي���س له��ا ف��روع م��ن املُكدّ�س(.احذف العُقدة .)D عا ِلج العُقدة Bثم �أ�ضفها �إىل املُكدّ�س. فُحِ َ�صت F B A D C B A F B E A D D B B A A C F B E D 4عا ِل��ج ال ُعق��دة Eثم �أ�ضفها �إىل املُك ّد���س� .س�تُحذَ ف العُقدة التي ف ُِح َ�صت ولي�س لها فروع من املُكدّ�س(.احذف العُقدة .)E ملحة تاريخية A E E B B A A C F B E D طُ ورّت الن�سخة األأوىل من خوارزمية البحث ب�أولوية العمق ( )DFSيف القرن التا�سع ع�شر بوا�سطة عامل ريا�ضيات فرن�سي كا�سرتاتيجية حلل املتاهات. 83 5 6عا ِلج العُقدة Cثم �أ�ضفها �إىل املُكدّ�س. احذف العُقدة .B A B C A F A C B E A D A C C A A C F A C B E E F A F F D 8املُك ّد���س خ��ايل وبالت��ايل �س��تتوقف خوارزمي��ة البح��ث ب�أولوية العمق (.)DFS 7عا ِلج العُقدة Fثم �أ�ضفها �إىل املُكدّ�س. F C C B C C D A واآلآن �س��تتعلّم طريق��ة تنفي��ذ خوارزمي��ة البح��ث ب�أولوي��ة العم��ق ( )DFSيف لغة البايثون. A A F B E العُقد التي فُحِ �صَ ت با�ستخدام خوارزمية البحث ب�أولوية العمق ( )DFSهي.F ،C ،E ،D ،B ،A : ["B","C"], ["D","E"], ["F"], [], [], ][ { : : : : : : = graph ""A ""B ""C ""D ""E ""F } visitedDFS = [] # list to keep track of visited nodes # dfs function يُ�ستخدم المُكدّ�س ب�صورة غير مبا�شرة عبر مُكدّ�س �أثناء الت�شغيل ( )Runtime Stackلتت ُّبع اال�ستدعاءات التكرارية. def dfs(visited, graph, node): if node not in visited: )" " = print(node, end )visited.append(node for neighbor in graph[node]: )dfs(visited, graph, neighbor # main program )"dfs(visitedDFS, graph, "A A B D E C F 84 D التطبيقات العملية خلوارزمية البحث ب�أولوية العمق Practical Applications of the DFS Algorithm تُ�س��تخدَ م خوارزمي��ة البح��ث ب�أولوي��ة العم��ق يف �إيج��اد امل�س��ارات ()Path Finding ال�ستك�شاف امل�سارات املختلفة يف العمق للخرائط والطرقات والبحث عن امل�سار األأف�ضل. تُ�س��تخدَ م خوارزمي��ة البح��ث ب�أولوي��ة العم��ق يف حل املتاه��ات ( )Solve Mazesمن خالل اجتياز كل الطُ ُرق املمكنة. ُمُي ِك��ن حتدي��د ال��دورات ( )Cyclesيف املُخطَّ ��ط با�س��تخدام خوارزمي��ة البح��ث ب�أولوي��ة العم��ق م��ن خ�الال وج��ود حاف��ة خلفي��ة (ُ ،)Back Edgeمت��ر م��ن خ�الال ال ُعق��دة نف�س��ها مرتني. جدول :2.4مقارنة بني خوارزمية البحث ب�أولوية االت�ساع ( )BFSو خوارزمية البحث ب�أولوية العمق ()DFS خوارزمية البحث ب�أولوية االت�ساع ( )BFSخوارزمية البحث ب�أولوية العمق ()DFS معايري املقارنة طريقة التنفيذ التنقّل ح�سب م�ستوى ال�شجرة. التنقّل ح�سب ُعمق ال�شجرة. هيكل البيانات تَ�س� ِ �تخدم هيكل بيانات الطابور لتت ُّبع املوقع التايل لفح�صه. تَ�س��تخدِ م هي��كل بيان��ات املُك ّد���س لتت ُّب��ع املوقع التايل لفح�صه. اال�ستخدام ُف�ض��ل ا�س��تخدامها عندم��ا يك��ون هي��كل ي َّ املُخطَّ ط وا�سعًا وق�صريًا. ُف�ض��ل ا�س��تخدامها عندم��ا يك��ون هي��كل ي َّ وطوياًل. ً املُخطَّ ط �ضيقًا طريقة البحث تبح��ث ع��ن م�س��ار الوجه��ة با�س��تخدام �أق��ل عدد من احلواف. يتج��ة البح��ث �إىل قاع ال�ش��جرة الفرعية، ثم يرتاجع. فح�ص عُ قد األأ�شقاء قبل الفروع. فح�ص عُ قد الفروع قبل األأ�شقاء. العُقد التي تُفح�ص يف البداية 85 الدر�س الثالث اتخاذ القرار القائم على القواعد األأنظمة القائمة على القواعد Rule-Based Systems تُر ِّك��ز �أنظم��ة ال��ذكاء اال�صطناع��ي القائم��ة على القواعد على ا�س��تخدام جمموعة من القواعد املُح َّددة ُم�س��بقًا التخاذ القرارات وح��ل امل�ش��كالت .األأنظم��ة اخلب�ريرة ( )Expert Systemsه��ي املث��ال األأك�رثر �ش��هرة لل��ذكاء اال�صطناع��ي القائ��م عل��ى القواعد، وهي �إحدى �صور الذكاء اال�صطناعي األأوىل التي طُ وِّرت وانت�شرت يف فرتة الثمانينيات والت�سعينيات من القرن املا�ضي .وغالبًا �تخدم ألأمتت��ة امله��ام الت��ي تتطلب عاد ًة خربات ب�ش��رية مثل :ت�ش��خي�ص احل��االت الطبية �أو حتديد امل�ش��كالت التقنية م��ا كان��ت ُت�س� َ و�إ�صالحها .واليوم مل َتعُد األأنظمة القائمة على القواعد التقنية هي األأحدث ،حيث تف ّوقت عليها منهجيات الذكاء اال�صطناعي احلديث��ة .وم��ع ذل��ك ،ال ت��زال األأنظم��ة اخلب�ريرة �ش��ائعة اال�س��تخدام يف العديد من املجاالت نظرًا لقدرته��ا على اجلمع بني األأداء املعقول وعملية اتخاذ القرار البديهية والقابلة للتف�سري. قاعدة املعرِ فة Knowledge Base �أح��د املكون��ات الرئي�س��ة ألأنظم��ة ال��ذكاء اال�صطناع��ي القائم��ة عل��ى القواع��د ه��ي قاع��دة املعرِ ف��ة ،وه��ي جمموع��ة م��ن احلقائ��ق والقواع��د الت��ي َي�س� ِ �تخدمها النظ��ام دخ��ل ه��ذه احلقائ��ق والقواع��د يف النظ��ام بوا�س��طة اخل�ربراء التخ��اذ الق��راراتُ .ت َ الب�ش��ريني امل�س��ؤولني ع��ن حتدي��د املعلوم��ات األأك�رثر �أهمي��ة وحتدي��د القواع��د الت��ي يتَّبعه��ا النظ��ام .التخ��اذ الق��رار �أو ح��ل املُ�ش��كلة ،يبد�أ النظام اخلب�رير بالتحقق من احلقائ��ق والقواع��د يف قاع��دة البيان��ات و تطبيقه��ا عل��ى املوق��ف احل��ايل� .إن مل يتمك��ن النظ��ام م��ن العث��ور عل��ى تطاب��ق بني احلقائ��ق والقواعد يف قاع��دة املعرِ فة، فق��د يطل��ب م��ن املُ�س� ِ �تخدم معلوم��ات �إ�ضافي��ة �أو �إحال��ة امل�ش��كلة �إىل خب�رير ب�ش��ري ملزي��د م��ن امل�س��اعدة ،و�إلي� َ�ك بع���ض مزاي��ا وعي��وب األأنظم��ة القائم��ة عل��ى القواع��د مو�ضحة يف جدول :2.5 األأنظمة اخلبرية (:)Expert systems النظ��ام اخلب�رير ه��و �أحد �أن��واع الذكاء اال�صطناع��ي ال��ذي ُيحاك��ي ق��درة اتخ��اذ الق��رار ل��دى اخلب�رير الب�ش��ري. َي�س� ِ �تخد م النظ��ام قا ع��دة املعرِ ف��ة املُك َّون��ة من قواعد وحقائق وحمركات اال�س��تدالل لتق��دمي امل�ش��ورة �أو ح��ل امل�شكالت يف جمال معريف ُحُم َّدد. جدول :2.5املزايا والعيوب الرئي�سة لألأنظمة القائمة على القواعد املزايا • ُمُيكنه��ا اتخ��اذ الق��رارات وح��ل امل�ش��كالت ب�س��رعة وبدق��ة �أف�ض��ل م��ن الب�ش��ر ،خا�ص ًة عندم��ا يتعلق األأمر بامله��ام الت��ي تتطل��ب ق��درًا كب�ريرًا م��ن املعرِ ف��ة �أو البيانات. •تَعم��ل ه��ذه األأنظم��ة با�س��تمرار ،دون حت ُّي��ز �أو �أخط��اء ق��د ت�ؤث��ر يف بع���ض األأحي��ان عل��ى اتخ��اذ الق��رار الب�شري. العيوب •تَعم��ل ه��ذه األأنظم��ة بكف��اءة طامل��ا كان��ت مُدخَ �الات املعرِ ف��ة والقواع��د جي��دة ،وق��د ال ت�س��تطيع التعام��ل م��ع املواق��ف الت��ي تقع خارج نطاق خرباتها. •ال ُمُيكنه��ا التعلُّ��م �أو التك ُّي��ف بالطريق��ة نف�س��ها مث��ل الب�ش��ر، وه��ذا يجعله��ا �أق��ل قابلي��ة للتطبي��ق عل��ى األأح��داث املُتغ� ِّرِّيرة دخالت البيانات واملنطق كثريًا مبرور الوقت. حيث تتغري ُم َ 89 يف ه��ذا الدر���س �س��تتعلّم املزي��د ح��ول األأنظم��ة القائم��ة عل��ى القواع��د يف �س��ياق �أح��د تطبيقاته��ا �خي�صا طب ًي��ا وف ًق��ا لألأعرا���ض الت��ي الرئي�س��ة ،وه��و :الت�ش��خي�ص الطب��ي� .س��يعر�ض النظ��ام ت�ش� ً و�ض��ح يف ال�ش��كل .2.8ب��دءًا بنظ��ام ت�ش��خي�ص ب�س��يط ُم�س��ت ِند تظه��ر عل��ى املري���ض ،كم��ا ه��و ُم ّ �إىل القواعد ،و�ستكت�شف بع�ض األأنظمة األأكرث ذكا ًء وكيف ُيحقِّق كل تكرار نتائج �أف�ضل. نظام ذكاء ا�صطناعي قائم على القواعد قاعدة املعرِفة مر�ض 1 �أعرا�ض مر�ض 2 1 اإلإ�صدار يف اإلإ�ص��دار األأول �س��تبني نظامً ��ا ب�س��يطً ا قائ ًم��ا عل��ى القواع��د ميكن��ه ت�ش��خي�ص ثالث��ة �أمرا���ض ُحُمتمل��ة( KidneyStones :ح�ص��ى ال ُكل��ى) ،و( Appendicitisالته��اب الزائ��دة الدودي��ة)، و( Food Poisoningالت�س�مُم الغذائ��ي)� .س��تكون املُدخَ �الات �إىل النظ��ام ه��ي قاع��دة معرف��ة ب�س��يطة ترب��ط كل مر���ض بقائم��ة م��ن األأعرا���ض املُحتمل��ة .يتو ّف��ر ذل��ك يف ملف بتن�س��يق JSON و�ضح باألأ�سفل. (جي�سون) ُمُيكنك حتميله وعر�ضه كما هو ُم َّ �أعرا�ض 'symptom_mapping_file='symptom_mapping_v1.json h g f e l k j i مر�ض 3 �أعرا�ض import json # a library used to save and load JSON files # the file with the symptom mapping d c b a مري�ض 1 j �أعرا�ض a d مري�ض 2 b k �أعرا�ض e g f # open the mapping JSON file and load it into a dictionary with open(symptom_mapping_file) as f: )mapping=json.load(f # print the JSON file ))print(json.dumps(mapping, indent=2 { "diseases": [ "food poisoning": "vomiting", "abdominal pain", "diarrhea", ""fever ], [ "kidney stones": "lower back pain", "vomiting", ""fever ], [ "appendicitis": "abdominal pain", "vomiting", ""fever ] } 90 { } مر�ض 1 مر�ض 2 مر�ض 3 الت�شخي�صات �شكل :2.8الت�شخي�ص الطبي بوا�سطة نظام الذكاء اال�صطناعي القائم على القواعد �س��يتَّبع اإلإ�ص��دار األأول القائ��م عل��ى القواع��د قاع��دة ب�س��يطة �أال وه��ي� :إذا كان ل��دى املري���ض عل��ى األأق��ل ثالثً��ا م��ن جمي��ع األأعرا���ض املحتمل��ة للمر���ض ،فيج��ب �إ�ضاف��ة املر���ض كت�ش��خي�ص ُحُم َتم��ل .ميكن��ك العث��ور �أدن��اه عل��ى دال��ة Python (البايث��ون) الت��ي تَ�س� ِ �تخدم ه��ذه القاع��دة إلإج��راء الت�ش��خي�ص ،باال�س��تناد �إىل قاع��دة املعرِ ف��ة املذك��ورة �أع�الاه و�أعرا���ض املر�ض الظاهرة على املري�ض. def diagnose_v1(patient_symptoms:list): diagnosis=[] # the list of possible diseases if "vomiting" in patient_symptoms: if "abdominal pain" in patient_symptoms: if "diarrhea" in patient_symptoms: # 1:vomiting, 2:abdominal pain, 3:diarrhea )'diagnosis.append('food poisoning elif 'fever' in patient_symptoms: # 1:vomiting, 2:abdominal pain, 3:fever )'diagnosis.append('food poisoning )'diagnosis.append('appendicitis elif "lower back pain" in patient_symptoms and 'fever' in patient_symptoms: # 1:vomiting, 2:lower back pain, 3:fever )'diagnosis.append('kidney stones \patient_symptoms and elif "abdominal pain" in \"diarrhea" in patient_symptoms and \"fever" in patient_symptoms: # 1:abdominal pain, 2:diarrhea, 3:fever )'diagnosis.append('food poisoning return diagnosis يف ه��ذه احلال��ة ،تك��ون قاع��دة املعرِ ف��ة حم��دد ًة بتعليم��اتٍ برجمي � ٍة ثابت��ة ( )Hard-Codedداخ��ل الدال��ة يف �ش��كل عبارات .IFت ِ َ�ستخدم هذه العبارات األأعرا�ض ال�شائعة بني األأمرا�ض الثالثة للتو�صل تدريجيًا �إىل الت�شخي�ص يف �أ�سرع وق��ت ممك��ن .عل��ى �س��بيل املث��ال ،عَ ر���ض ( Vomitingالق��يء) م�ش�رترك بني جمي��ع األأمرا�ض .لذل��ك� ،إذا كانت عبارة IF األأوىل �صحيح��ة فق��د مت بالفع��ل ح�س��اب �أح��د األأعرا���ض الثالث��ة املطلوب��ة جلمي��ع األأمرا���ض .بع��د ذل��ك� ،س��وف تب��د�أ يف البح��ث ع��ن �( Abdominal Painأمل البط��ن) املرتب��ط مبر�ض�نين وت�س��تمر بالطريق��ة نف�س��هاحتى يت��م النظ��ر يف جمي��ع جمموعات األأعرا�ض املمكنة. 91 ُمُيكنك بعد ذلك اختبار هذه الدالة على ثالثة مر�ضى خمتلفني: # Patient 1 ]'my_symptoms=['abdominal pain', 'fever', 'vomiting )diagnosis=diagnose_v1(my_symptoms )print('Most likely diagnosis:',diagnosis # Patient 2 ] 'my_symptoms=['vomiting', 'lower back pain', 'fever )diagnosis=diagnose_v1(my_symptoms )print('Most likely diagnosis:',diagnosis # Patient 3 ]'my_symptoms=['fever', 'cough', 'vomiting )diagnosis=diagnose_v1(my_symptoms )print('Most likely diagnosis:',diagnosis ]'Most likely diagnosis: ['food poisoning', 'appendicitis ]'Most likely diagnosis: ['kidney stones ][ Most likely diagnosis: املري�ض 1 املري�ض 2 املري�ض 3 األأعرا�ض: األأعرا�ض: األأعرا�ض: •Abdominal pain (�أمل يف البطن) •( Feverاحلُمى) •( Vomitingالقيء) •( Vomitingالقيء) •Lower back pain (�أمل ب�أ�سفل الظهر) •( Feverاحلُمى) •( Feverاحلُمى) •( Coughال�سُ عال) •( Vomitingالقيء) الت�شخي�ص الطبي با�ستخدام نظام الذكاء اال�صطناعي القائم على القواعد | symptom_mapping_v1.json Food poisoning or Appendicitis (الت�س ُمم الغذائي �أو التهاب الزائدة الدودية) 92 ( Kidney stonesح�صى ال ُكلى) �شكل :2.9متثيل اإلإ�صدار األأول ؟ يت�ضم��ن الت�ش��خي�ص الطب��ي للمري���ض األأول الت�س� ُمم الغذائ��ي والتهاب الزائدة الدودي��ة ألأن األأعرا�ض الثالثة التي تظهر عل��ى املري���ض ترتب��ط ب��كال املر�ض�نين .يُ�ش� َّ�خ�ص املري���ض الث��اين بح�ص��ى ال ُكل��ى ،فه��و املر���ض الوحي��د ال��ذي جتتم��ع في��ه األأعرا���ض الثالث��ة .يف النهاي��ة ،ال ُمُيك��ن ت�ش��خي�ص احلال��ة الطبي��ة للمري���ض الثال��ث؛ ألأن األأعرا���ض الثالث��ة الت��ي ظهرت على املري�ض ال جتتمع يف � ٍأي من األأمرا�ض الثالثة. يتميز اإلإ�صدار األأول القائم على القواعد بالبديهية والقابلية للتف�س�رير ،كما يت�ضمن ا�س��تخدام قاعدة املعرِ فة والقواعد يف الت�ش��خي�ص الطب��ي دون َحَت ُّي��ز �أو انح��راف ع��ن اخل��ط املعي��اري .وم��ع ذلك ،ي�ش��وب ه��ذا اإلإ�صدار العدي��د من العيوب: ب�س��ط للغاي��ة لكيفية الت�ش��خي�ص الطبي على يد اخلبري الب�ش��ري. � ًأواًل� ،أن قاع��دة ثالث��ة �أعرا���ض عل��ى األأق��ل ه��ي متثي��ل ُم َّ بتعليمات برجمي ٍة ثابتة ،وعلى الرغم من �أنه ي�س� ُهل �إن�ش��اء عبارات ٍ ثان ًي��ا� ،أن قاع��دة املعرِ ف��ة داخ��ل الدال��ة تك��ون حم��دد ًة طوياًل عند ت�شخي�ص احلاالت تعقيدا وت�ستغرق وقتًا ً �شَ رط َّية ب�سيطة لقواعد املعرِ فة ال�صغرية� ،إال �أن املهمة ت�صبح �أكرث ً التي تعاين من العديد من األأمرا�ض واألأعرا�ض املر�ضية. اإلإ�صدار 2 يف اإلإ�صدار الثاين� ،ستُعزِّ ز مرونة وقابلية تطبيق النظام القائم على القواعد بتمكينه من قراءة قاعدة ِ ُتغرِّية املعرفة امل ِّ مبا�ش��ر ًة م��ن مل��ف ( JSONج�س��ون)� .س��ي�ؤدي ه��ذا �إىل احل��د م��ن عملي��ة الهند�س��ة اليدوي��ة لعبارات IFال�شَ ��رطيَّة ح�س��ب قاباًل للتطبيق على قواعد املعرِ فة األأكرب حجمًا مع تزايد حت�س ًنا كبريًا يجعل النظام ً األأعرا�ض �ضمن الدالة .وهذا ُيع ُّد ُّ يو�ضح قاعدة املعرِ فة. عدد األأمرا�ض واألأعرا�ض .ويف األأ�سفل ،مثال ّ 'symptom_mapping_file='symptom_mapping_v2.json with open(symptom_mapping_file) as f: )mapping=json.load(f ))print(json.dumps(mapping, indent=2 "headache", "tiredness", "stuffy nose", "sneezing", "sore throat", "cough", ""runny nose ], [ "allergies": "headache", "tiredness", "stuffy nose", "sneezing", "cough", ""runny nose ] } } { "diseases": [ "covid19": "fever", "headache", "tiredness", "sore throat", ""cough ], [ "common cold": "stuffy nose", "runny nose", "sneezing", "sore throat", ""cough ], [ "flu": "fever", قاع��دة املعرِ ف��ة اجلدي��دة ه��ذه �أك�ربر قلي� ًاًلا م��ن �س��ابقتها .وم��ع ذل��ك ،يتَّ�ض��ح �أن حماول��ة �إن�ش��اء عب��ارات IFال�شَ ��رطيَّة يف ه��ذه احلال��ة �س��تكون �أ�صعب بكثري .على �س��بيل املث��ال ،ت�ضمنت قاعدة املعرِ ف��ة ال�س��ابقة رب��ط �أح��د األأمرا���ض ب�أربعة �أعرا�ض ،ومر�ضني بثالث��ة �أعرا�ض .وعند تطبيق قاع��دة ثالث��ة �أعرا���ض عل��ى األأق��ل املُط َّبق��ة يف اإلإ�ص��دار األأول ،حت�ص��ل عل��ى 6جمموع��ات ثالثي��ة م��ن األأعرا���ض املحتمل��ة الت��ي ت�ؤخَ ��ذ يف االعتب��ار .يف قاع��دة املعرِ ف��ة اجلدي��دة باألأعل��ى، تك��ون لألأمرا���ض األأربع��ة 5و 5و 8و� 6أعرا���ض ،عل��ى الت��وايل .وبه��ذا ،حت�ص��ل عل��ى 96 جمموع��ة ثالثي��ة م��ن األأعرا���ض املحتمل��ة .ويف ح��ال التعامل م��ع مئات �أو حت��ى �آالف األأمرا�ض، �ستج ُد �أنّه من امل�ستحيل �إن�شاء نظام مثل املوجود يف اإلإ�صدار األأول. وكذل��ك ،ال يوج��د �س��بب طب��ي وجي��ه ل ِق َ�ص��ر الت�ش��خي�ص الطب��ي عل��ى جمموع��ات ثالثي��ة م��ن األأعرا�