بسم الله الرحمن الرحيم اليوم ان شاء الله بدنا
نستكمل في section تلاتة خمسة اللي هو بتكلم عن ال
tool و قبل ما انا اروح على ال tool بدي اذاكرك كمان
مرة ان احنا أخدنا regular definition ليش؟عشان نوصف
الـ token الآن ال tool .. إيش نسوي في ال tool؟
بدنا باختصار نكتب فيه regular definitions نعرف
فيها ال tokens و هو لحاله يصير يطلعلي code بيتعرف
على ال token اللي في الملاف و بقوللي هايهم، هاي ال
token فلانة و هاي ال token فلانةبس عشان أقدر
أتعامل مع هذا ال tool بدي أفهم كيف شكله إيش
المقاطع اللي فيه إيش الأجزاء اللي فيه كيف بنكتب
إيش بنكتب عشان نعرف طبعا هذا ال tool اللي هنتكلم
عنه tool خاص بال C يعني معناته أنه فيه tool لل
Java فيه tool لل C++ فيه tools كتيرة لغات مختلفة
إحنا هذا المثال اللي موجود هنا ال tool الخاص بال C
اللي هو Lex طبعا بيجي بعرفك إيش اللي هيصير أنا
بكتبفى ال editor تبع ال Lex ايش بكتب؟ بتوقع فى
الغالب هكتب regular definitions و أكيد هكتب بعض ال
functions اللى بال C بس هشوف هذا الكلام بالتفصيل
كمان شوية بعد ما انا اكتب التعريفات و اخلص خلاص
لحاله ال compiler تبع ال Lex بيروح بيحولى ل code C
وcodec ما انت عارفه إله compiler بيحاوله ل
executeه بال file و يتنفذ و يطلعلي ال tokens احنا
قبل هيك ديري بيرك عملنا برنامج بال Java كتبناه
احنا الآن مين اللي هيكتب البرنامج و يجهزه ال tool
يعني أنا بس جوا ال tool هعمل شوية definitionهعمل
شوية functions بالـ C وخلاص و هو لحاله هيطلع code
الـ C كامل اللي بيتعرف على مين؟ اللي على ال token
و بيسوي ال action المطلوب عند هذا ال token طيب
خلونا الأن ندخل شوية بتفاصيل ال editor هذا إيش
جواته؟ إيش بكتب جواته؟ وين بالظبط بكتب؟ تعالوا
نطلع نشوف الأن أول ما بنبدأ بقوللي هذه الصفحة اللي
بنفتحها عبارة عن تلت أجزاءالجزء مخصص لحاجة اسمها
ال declarations وال declarations هنا عبارة عن ايه؟
عبارة عن اي declaration انا بديها بال C تتحول
مباشرة للغة ال C يعني مسموح لك تكتب سطور C مثلا
تعريفات بال C هذه التعريفات في التحويل هياخدها زي
ما هي مش هم بيحول ل Cفهياخدها copy paste زي ما هي
مش هيلعب فيها ويوديها وين على الملف اللي بيصير C
في الآخر اللي هو ال declarations تمام طبعا نفس
الفكرة لو جابها لو أي language تانية الآن أنا مش
مهم عندك كتير اللي بيدكتب بال C أنا بهمن اللي بعده
ايش اللي بعده يكتب ال declarations اللي هي تعريفات
ال tokenيعني انت بعد ال declarations الخاصة بالـ C
اللي بدك إياها بدك تكتبي تعريفات ال token كيف أكتب
تعريفات ال token اللي هو regular definition كيف
أعمل ID؟ إيش تعريفه؟ كيف أعمل number؟ إيش تعريفه؟
المعادلة تكون أنا أخدها باختصار، تمام؟ طيب بعد ما
بنخلص ال declarations إيش بيجي في النص؟ جال بيجي
ال actions أو ال rules كيف يعني؟ يعني مثلا أنا
عرفتلهال ID خلاص يعني هو دور و لاجى ID الان بسألني
سؤال في الجزء التانى لما لاجيلك ال ID هذا ايش
اعمل؟ ايش اسوي؟ فانت حرة عاد بدك تقولي له رجع ID
برجع ID بدك تقولي له لأ روح على ال symbol table
اعمل 1,2,3,4 انت حرة الان انت هنا في خانة action
ايش المطلوب تسوي لما تلاقي ال ID طبعا مانساش
معلومات القديمة انا لما بلاقي ID ايش كنت اسوي؟مش
بدور في ال symbol table إذا موجود و لا مش موجود
إذا مش موجود حطيه و إذا موجود رجعيه pointer مش كنت
بتعملي كلام زي هيك فانت لازم في ال action تقول إنه
بدنا نعمل هيك طب كيف بده أقول إنه بده أعمل هيك؟
بقول بال language اللي بده أحول إلها يعني أنا قاعد
شغال language C بتوقع أكتب اسم function بال C
وعملها تعريف الـ function كمان شوية هنشوف و انا
هعرفها الـ function طب ايه فرضي انا مابديش اعمل اي
action خلاص بس مجرد return للقيمة خلاص مش داعة
تكتب ال function C ولا داعة تستدعي ال function ولا
مايحزنوه خلاص return ID فهذا برجعلك انت هو بديكي
ال option انت عارف ال token عرفتيه بعدين بديكي
option تاني لما لاجيلك هذا ال token في الملفة بتحب
تعمل شيء معين خاص بي فانت حرة عاد و هنشوف التفاصيل
هذه كمان شويةالمهم ان نص التان عبارة عن ايش عبارة
عن ان ال actions لما بلاقي انا هات ال tokens طبعا
ديري بالك احيانا انا مابحتاج اعمل اي اشي يعني مثلا
لما لاجي F condition لما لاجي ال F مابدى اعمله ولا
شي بس بدي اعمل return F صح ولا لأ فخلاص بقوله
return F وخلصنا واضحة كيف؟ طيب ايش الجزء التالت
بيتكلم الجزء التالت بيتكلم بيقولك اي function انت
بتكتبيها بال CAutomatic بياخدها copy paste زي ما
هي وبوديلك إياها على الملف الأخير بتاع ال C مش هو
احنا قلنا ال tool هيروح يحول كل إش ل C فهياخد منك
حاجات انت كانت بقى بال C جاهزة زي إيش الحاجات اللي
بال C جاهزة؟التعريفات اللي فوق بتاعة الـ C هيخدها
على الـ C و أي function تحت انت كتبها بدكيها زي ما
هي بتتاخد و بيحول لحاله و بيطلع الأكواد الخاصة
بالتعرف على ال token كام بيحول بعدين هنشوف بس أنا
قاعد بديكي الآن إيش مكونات ال tool إيش بدك توفيه
ال tool طب تعالي أديكي مثال عشان الرؤية تتضح و
المثال يتضح أكتر جالك تعالي ندفع ده المثال
ثواني بس خلنا نخلص المثال و بعدين هجيبك عليك كل
الأسئلة بس ثواني صغير تمام أول ما بدأ شايفه طبعا
هذا اللي اللي يا بنات وينه اللي هو شايفه الشارتين
هدول هذا أي مقطع اللي بتكلم فيه المقطع الأول صح
قالك المقطع الأول ممكن يكون فيه حاجات خاصة بال C
زي ايش مثلا زي لما بدأ أقوله returnID مش ال ID
لازم اعطيها tag و اعطيها اسم التفاجر اللي انا
جابلك عشان أسهل العملية فممكن تعملي بالـ C define
مثلا لإنه less than هي عبارة عن 270 مثلا يعني
الفكرة انه لما بدك تعملي return if ولا return then
طب إيش بيبدوا يفهموا إيش الف و إيش then في
البرنامج فلازم أعملهم tag الكلام كله نحكي زمان
عشان أقولك أي declarations أو أي definitions أنت
بدك تحطيها بالـ C في الأول مسموح ليش لأن automatic
هذه هتتاخدعلى برنامج الـ C زي ما هي مش هيلعب فيها
فبتحطي دايما التعريفات للكلمات اللي بديك إياها
يعني أنا مانقوله return F طب شو F؟ مش لازم انا
أديله code إلها زي ما اتفاجنا أو tag إلها زي ما
عملنا بال Java أو بال C أو الاخرين؟ صلا لأ فانت
مضطر تكتبي سطر أو سطرين C أو Java في الأول فهدول
السطر أو السطرين بنقولهم زي ما هم وين على ال code
النهائي تاع ال C اللي بدو طلعه طيب بعد هداشفي قالك
هنا بتحطي شو؟ طلع أيش محطوط؟تعريفات الـ tokens
يعني أنا بدي أعرف ال ID، هاي حط ال letter، حط ال
digit، حط ال ID، هاي طلعبدي أعرف الـ number، هذه
الـ number هذه كل التعريفات اللي احنا أخدناها يعني
تلاحظ في الجزء هذا إيش بتسوي بتعرفي ال tokens اللي
بدك إياهم اللي بدك البرنامج يتعرف عليهم فهنا عرف
ID وعرف number طبعا عرف ال white space إيش ال
white space؟ ال tabs و ال new lines و ال spaces
فعرفهم كلهم طيب إذا الجزء هذا اتفقنا عبارة عن إيش؟
تعريفات لأن وين هينتقل هوللجزء التاني ليش ننتقل
للجزء التاني؟ عشان يقوللي لما لاجيلك ال I دي إيش
أعمل أنا بدي أقوله إيش يعمل لأمن نشوف كيف تعالوا
نبدأ تحت الجزء التاني يبقى انا زي ما شايفين عارف
إيش أنا لما بحط القصين هدول إيش بقصد؟ بقصد أن
تعريف ال white space تطلع بتلاقي فوق فال I دي
بتلاقي بيحطو إيش؟ بين القصين ليش؟ لأنه عرفوا وين؟
فوق فبقولي خد تعريفه من فوق لكن تعالي تطلعي على ال
Fمش معرفة فوق قال لي مسموح إذا تعريفه سهل تكتب
وتعرفه على طول عندك يعني خلاص قول هو I ورا F يعني
هذا إيش معناه يا بنات تكتب I F بدون قوسين يعني
بقوله للطول إنه إذا أجى I F سوي كذا يعني إذا أجى
ال keyword F سوي كذا أو إذا أجى ال keyword then
سوي كذا يعني مسموحإذا كان تعريف الـ F سهل أو لأي
تعريف token سهل أكتبه مباشرة إذا كان عبارة عن حروف
طب واحدة بتقول أنا مديش أعمله هيك بدي أروح أعرفه
فوق و أنزل تحت أعمله F بن جوسين صح يعني زي ما
أعرفنا ال ID و أنزلنا كتبنا ال ID بن جوسين أنه
تعريفه فوق بقدر أعمل نفس الكلام ل F أن أعمل تعريف
ال F فوق و أرجع أعمله بن جوسين أقول هاي تعريفه فوق
بس بقولك ليش نعمل حركة هاي طالما ال F هي خلاص I
وراها F على طولفعشان هيك بتلاحظ ان بعضهم عرفوا
مباشر هنا و بعضهم عرفوا اللي بده شغل كتير في النص
الفجاني الخلاصة ان احنا كتبنا ال definitions لكل
ال tokens اللي عندى ال ID و ال number و ال reload
اللي اشتغلنا عليهم قبل هيك طب واحدة ممكن تسأل سؤال
طب شو قصةالـ quotation هدول يعني ليش ماحطها لحال؟
ليش ماحط الأصغر يسوي لحال بدون ال quotation هدول؟
ليش عمل هيك؟ لأنه في ال language هاي في التول هاي
الأصغر إلها معنى والأصغر يسوي لها معنى operator
موجودة في التول فعشان نميز أنه أنا بقصدش التول
اللي عندك بقصدش ال operator اللي عندك أنا بقصد
المكتوبة هذه بميزها بال quotation زي قصة الطباعة
Cout في الجابالما بدي أطبع ال quotation بحط جنبها
لإيش أنا أقول مش ال .. مش ال operator تبعتنا هذه،
هذه لأ لأ الطبعة وهذه نفس الفكرة ال operators هدول
الأصغر و الأكبر و الأكبر و الأسوأ موجودين من ضمن
ال language في ال metadata تحت ال language فعشان
أنا لما أقول هنا لأ بقصدش أنه قصة operator بدي
أصغر ولا أكبر، لأ بدي ك character بروحش بسوي بحطله
بس هدول تمييز، فلو هدول مش موجودينبحطولهمش مش
بمميزهمش خلاص بكتبهم مباشرة المهم الخلاصة إيش اللي
صار عندى في الجزء التانى صار عندى إنه أنا قاعد
بقول إنه لما يجيني هذا ال token إيش ال action اللي
أسوي طبعا بين قوسين بحط ال action وهيه طالع كيف
التعريف فوق بقولك
شايفة؟ بيقولك في الجزء التاني بتحط بين الجثين ع
جباله ال action اللي انت بدك إياه لما يلاجيلك هذا
ال battle يعني أنا بدي لاجيه ال ID لاجأه دور في ال
buffer و لاجأه هنا إيش هتحط بين الجثين؟ إيش يعمل
لما يلاجيه؟ إذا بدك يعمل إيش بتسجلي، بدك إيش يعمل
إيش؟ بقى و لا شيء شوفتي كده؟ يعني هذا option عندك
تستخدميه إذا بدك عشان هيك لما هو تحت اشتغلشايفها
إيش عمل؟ حاجة يحط ال action قالك بالنسبة لأول
واحدة ال white space مافيش action بده أسوي عشان
كله يروح له skip لما نلاقي if إيش ال action بدك
تسوي انتي؟return F صح طيب كيف بده يفهم ان ال I و
ال F اللي بتقصد فيها ممنوع نعمل في ال C مثلا
return F هيك مش صح ساعات انت هتضطر تعمل ال define
ان ال F رجم 300 ساعتين انت هتضطر تطلع فوق في جزء
تاع ال declaration تكتب code C سطر C يعمل define
لل F وانا مطمئن ليش لأن لما بيحول لل C اوتوماتيك
هياخدهاعلى كودة C فأصبح بقدر استخدم return if لا
مالاك if شوفتي كيف باختصار عارف لو بده أعمل action
تاني يعني ممكن واحدة تقولي أنا جاية على بالي لما
يلاقي الكلمة هذي بديش بس يرجع if بدي أعمل كذا وكذا
وكذا وكذا مثلا ساعة تاشر بقولك بقولك خلاص قولي بدي
function F1 مثلا و تعالي في الجزء الأخير عارفي F1
ما هو حينه يقول copy pasteعلى كودك الأخير فلما
بيلاقي في ال action أنه بدك أفضل بروح بيجيبه و
بنفذه هذا لو بدك يعني مسموح فهو رايحك أعطاك مجال
تكتب بلغة ال C جد ما بدك functionات تحت و هينجلها
زي ما هي ال copy paste والله أنا مش محتاج بكتبشهذا
على حسب انت كيف تستخدم ال tool على حسب ايش ال task
المطلوبة طبعا احنا في return F بدناهاش اشي احنا بس
return F و خلاص عشاني أنا مش حاكته قبلها ولا اي
حاجة لأنه لما بلاجي F مش بقوله return F و خلاصنا
للاستدعاني اللي لاجيت ال token F و خلاصنا ففيش
داعي تعمل اي اشي هنا بس بقولك لو بدك متاح okay طيب
الان لما لاجي thenreturn كلمة then عشان كلمة then
تصير معرفة لازم في ال declaration فوق أقوله define
إيش هي ال then طبعا أكيد لو شغال Java مش C كنا
هنعمل نفس الحركة اللي عملناها تحت ال tag class tag
و عرفت فيه الحروف زي ما اتعلمنا قبل هيك لو كنت
شغال لأنه هياخدها ال copy paste زي ما هي على
البرنامج اللي هيطلع تحت ال Java okay بس عشان
تكونوا فاهمين طيب تعالي واقفي هنا شوية لما بلاقي
ID طبعالما بتلاقي ID هنا لأ مطلوب أعمل شغل مش أنا
كده إيش الشغل اللي بدي أعمله مش بدي أروح أدور عليه
في ال symbol table و إذا ما لجيتهوش في ال symbol
table بدي أحطه و أرجع قيمة عليه و إذا لجيته بدي
أرجعه يعني أنا أناوي أعمل شوية شغلات فإيش بيقوللي؟
بيقوللي باختصار أنت بدك تستدعي function install ..
sorry وينها؟ install ID إيش وظيفة ال function هاي؟
هتروح تدور إن لجته رجعته مالجتوششهتضيفه طبعا وين
ال code ال install ID بتكتبه بكتبه تحت لإن هو
هياخده زي ما هو طيب اختصار طب واحدة هتسألني تقولي
إيش هدول ال parameters الحلو في ال tool بيوفر عنده
شوية parameters بيحط عليها معلومات مهمة لهذا ال
token وانت حر اذا بتستخدميها ولا لأ يعني ع سبيل
المثالالـ tool دورت لجت ال ID مش أنا بهمني كمبرمج
أعرف شو ال extremes المكونات له يعني أعرف وين
بدايته ايش ال size تبعه عشان لو بدي اخده اخزنه ولا
اعمل اي عملية عليه صال ده عشان هيك هو لحاله انا
حطتله بس تعريفهي ال ID letter followed by letter
or digit صح ولا لأ هو automatic أول ما هيلاقيه
هيروح يحطلي في internal parameter خاصة فيه يقول
هاي ني لاجيت الحروف كذا وكذا وكذا وإذا بدك الطول
تاع الكلمة كذا وكذا وكذا أنت حر فبيسيبلي المجال إن
أنا محتاج أعرف الحروفي بلاقيها مخزنة عنده وينفي
variable مخصص ل string لو بدى اعرف مثلا قداش طوله
برضه مخصص عندى فى string فخلاص بريحني يعنى هو
automatic مش بس بتعرف على تعريف اللى انا كتبته و
بسجلى ملاحظات على اللاجئة بدك الملاحظات تستفيد
منها اتفضل بدكش بلاش زى فكرة لما انا عرفتله جابلى
شوية number الان هو ضال ماشي ماشي ماشي ماشي لاجى
number صح؟لازم يخزنني قيمته في variable يقول لي
هاي قيمته لو بدك ايها موجودة هان هاي حروفه لو بدك
ايها هي موجودة هان وخلاص انا حر بعد هيك ان انا بدي
اعمل حسبة بدي اسويش بعمل function بستفيد من ال
parameters هذه مابلزمونيش بلزمونيش لكن هو ايش
بيسوي بزودني فيهم لانه tool automatic هذا خلاص
فمانستغربلما بلاقي YYLVAL هذا بكون اسمه هيك جوا
عنده يعني من الأول لما بفتح أنا ال manual تبع ال
language أو تبع ال tool بيقوللي إيش ال parameters
اللي عنده و بيقوللي والله في عندي parameter بيخزن
كذا و في عندي parameter بيخزن طول و في عندي
parameter بيخزن الكلمة و في عندي كذا و بيديني
أسماءهم و خلاص و يعطيني العافية محتاجهم باستخدمهم
مش محتاجهم بلاش أما هو لازم يديليهم باختصار واضحة
ال parameters اللي عنده طيب الآن
لما بيلاقي أصغر إيش نسوي؟ إيش ال action ديك
تعمليه؟ return؟ reload مش هو reload؟ مش هو معرف
reload؟ طيب لازم أحطله parameter صح؟لازم ال
parameter تبعه أدّله value فلازم أقوله less than
عشان كل حظة إيش سويت جيت لل parameter اللي عنده
المخصص ليه حطيته نقيمته less than و قولتله خلاص
رجع reload فلما بيرجع reload خلاص لو بده يعرف
الناس شو هذا ال reload بتطلع وين؟ في ال parameter
المخصص أو ال variable المخصص هذا less than طبعا
عشان كلمة lt تصير مفهومة لازم فوق في ال
declaration أعمل define لل lt أو في ال tag أعمل
define لل ltباختصار طيب وخلاص نفس الفكرة أصغر
يساوي يساوي لا يساوي أكبر هذا طبعا عمله لمين للي
اشتغلناها المرة اللي فاتت مش أخدنا ال number و ال
ID و ال relop فوراني ال tool كيف بكتبهم طيب إيش
أخر جزء بتتوقع ايه؟ أخر جزء بس بتحط فيه ال
functionات اللي بدكي إياها يعني انت طلبت في ال
action تعملي function اسمه install ID بتيجي تحت
تشتغلي طبعا إيش بتوقع هيكون كاتب في install ID؟دور
في الـ symbol table إن لجيته برجعليه مالجيتوش خزنه
و رجعه في function اسمه install number وهنا برضه
فرض ان ال number رح نحطه في symbol tableفي المثال
هذا لكن طول شغلنا في الكتاب هفترض انه بدوش .. بدوش
اشي بس خلاص return number و ال value تبعته لكن هنا
فرض انه تحط في symbol table فالموضوع يا بنات سهل
خالص مافيش فيه ايش ال tool ال tool زي ما انت شايفه
ال definitions ايش المطلوب اللي اعمله لما ألاقي كل
واحد فيهم ويعطيلي العافية لكن هذا ممكن يجرني
لتعريفات لل functions باختصار كيف عاد هو هيحول
بالنسبة لجزء ال declaration اللي فوق الخاص بال C و
بالنسبة لل functionality اللي تحت اللي خاصة بال C
copy & paste زي ما هما اللي في النص هم اللي هيلعب
فيهم على كيف يحولهم و كيف هنسويهم هذا هنتكلم فيه
لاحقا في محاضرتنا كمان شوية كيف هيحولهم لكن أنا هي
استخدام ال tool ببساطة هيك بستخدم ال tool و بس
واضحة بس الآن في ملاحظة صغيرة
لو كاتبين احنا كلمة F تمام؟
للأسف هذا هيعمل انه لجأت token اسمه F لأن I و F
مكتوبين وهذا حسب تعريفه هيقول لجأت ID السؤال الآن
انفذ ال action هذاوالله ينفذ ال action هذا لأنه
لجأ ال F هاي هي ID letter fourth by letter or
digit وهي F فلجأ تعريفين انطبق على IF مش ال IF هي
هذا التعريفوالـ IF هي letter followed by letter or
digit مش هي تعريفنا قبل شوية بيعرفينه فهو لما شاف
ال I letter or digit وراها F letter or digit صح
ولا لأ ففي اتنين جالوا لجينا token هذا جال لجيه ال
token ك ID و هذا جال لجيه ال token ك F لما كانت
كلمة F في الحالة هذه من اللي لازم يتنفذ اللي فوق
ولا اللي تحتعلى أي مبدأ لأن نفس الطول على ال
priority اذا كنت كاتب في ال tool مثلًا يا بنات
سينفذ ال action الأول عارف لو كنت كاتب هدهان في ال
tool كان لن ينفذ ال action بتاع ال F كان لن ينفذ
ال action بتاع ال I D عشان أقولك انتبهي عند كتابة
في ال tool لازم تضع ال priority الأعلى في الأول
عندك F قبل ال ID عندك then قبل ال ID عشان هيك
ارتبهم مش ترتيب اعتباطي انه جال بخلص من كل هدول
قبل ال ID عشان لما يتساوى اميز ال F لو انت عاد كنت
.. لما بتساوى و كنت مايزي ال ID ساعتها بس ايش
هتسوي لو برنامجك هيك هتجلب ال ID فوق هذا حسب انت
ايش بدك لكن انا في ال language معروفة ال IF هي F
مش ID عشان انا كتبت ال F قبل ال ID طب واحدة هتقول
طب F رضي اجيب I F Tهذا سيذمر أنه لجأ F وهذا ال ID
سيذمر أنه لجأ IFT في الحالة هذه من الأطول ال IFT
إذا مش هياخد اللي فوق إذا لما بيكون فيه longest
بياخده عشان هيك الطول مهم لكن في حالة التساوي
بياخد اللي قبله ونفس الكلام ينطبق يا بنات على
الأصغر و الأصغر يساوي هو لما لجأ أصغر لو أنا كاتب
أصغر ويساوي
هذا جال لجيت أصغر و هذا لجيت أصغر و يساوي، هياخد
الأطول اللي هو مين؟ أصغر و يساوي طب لو أنا كاتب
أصغر و ساكتت؟ هياخد هي، على طول، لأن هي اللي حتى
عملها بس recognition شفت كيف؟ هي القصة باختصار،
فبس خد بالك من الملاحظات هذه أكتر من هيك مافيش
مشاكل في الطول، الطول سهلةهذه كل قصة الطول باختصار
وطبعا كل طول لكل language بتختلف من language ل
language بدك تشوف ايش تفاصيل او ايش كيف اكتم يعني
هنا ال structure زي ما انت شايفها جاسم جزء جزء جزء
باختصار تمام؟ في اي سؤال لحد هنا في الطول هاي؟ في
حد مش واضح عشان اللي سويناه او اللي قولناه؟ تكمل؟
طيب الان بس في ملاحظة اخرى عشان نختم الدارس هنا
بعض ال languagesزي ال Fortran بتسمح انه يكون
الكلمة keyword و identifier او اسم array و keyword
صح ولا لأ فكيف كنا نميز اذا بتذكر ايه؟ كنا نميز
انه بضطر امشي كتير لقدام صح؟ عشان اقدر اعرف يعني
مثلا اديكي مثال نشتغل عليه يعني
مثلا هذا المثال ها فلنشتغل عليه ايش بيقولك؟ بيقولك
ال F هنا عبارة عن اسم ال Ray تمام؟ بينما ال F هنا
عبارة عن إيش؟ ال F condition ال keyword الآن كيف
بدك تعرف إيه أن هذه ال F هي ال .. ال keyword ولا
لأ؟ أجالك سهلة جدا ما ال F في ال language هذه
مقترنة بthen فجالك لما بلاجي F بامشي امشي امشي
امشي امشي امشي امشي لما يخلصوا الأقواس أشوف إيش
بعد القوس اللي جيت حرف Tمعناه هذه خلاص هذه ال F
condition مادجيتش غيرك بتكونش ال F condition الأن
طب السؤال كيف أعمل التعريف يعني أنا قبل شوية ال F
كانت سهلة تعريف ال F I F يعطيني العافية طب هذه لأ
هذه الجثة أنه بيقعد يمشي ويمشي ويمشي بعد ال F عشان
لسه يعرف أن هذه F ولا مش F قال ال tool بتعطيك
operator تساعدك كيف؟ قال ال tool
بتعطيك الإشارة هذه هذه شو معناها الإشارة؟ معناها
إذا تحقق كل ما يليه ال token تبعك هو بس اللي
جابلها يعني الآن الفاصل هذا إيش معناه؟ إنه عشان
هذا يكون token ال I F لازم يجي كل اللي ورا إن أجى
كل اللي ورا خلاص ال token تبع مين؟ هو I F و
Automatic لازم يرجع ال Xين بيجي لوين؟على كل اللي
مشيهم صح ولا لأ يعني F ده الauthenticate بقى F
وعاملة أشياء وأجواس ومافيش T وصار ماشي .. ماشي ..
ماشي .. ماشي .. ماشي .. ماشي واكتشف في الآخر يا
ستة أنها T مثلا أنها F لازم ال extreme begin واني
واني واني واني واني واني واني واني واني واني واني
واني
مش هيمشي كتير طب بعد ما ماشي meet character لاجأ
كل اللي بيقول انها F ايش يعمل؟ بيقول رجعتلك F طب
من ون كمل فحص؟ بيرجع لل F تاني فبس فهذه ال
operator بتشتغل automatic انه لما بتحط الإشارة هيك
معناها إنه هذا بيكون token إذا أجى كل لبعدي لكن
لازم يرجع عنهم بعد هيك فبس هي كل القصة طب تعالى
تشوف كيف عرف ال F قالك ال F عبارة عن إيش عشان تيجي
ال F؟ بديجي قوس طبعا ليش حط ال slash عشان يحكي عن
القوس ك character لأن هذا برضه في ال tool و بعدين
هذه إشارة معناها characters ال dot نجمة character
زي في الدوس و زي في ال unix و مش عارف أين ال dot
نجمة يعني characters يعني كله skip skip skip امشي
عنهوبعدين بيقول لازم ألاقي ايش تذكيرة قص هذا عشان
نعرف إنها F ولا مش F وبعد تذكيرة القص إيش لازم
ألاقي letter إذا صار هذا كله اتحقق معناه إيش احنا
لاجينا F يعني هذه الشروط اللي لازم تيجي عشان هذا
يكون إيش token F شفت كيف؟ فإيش اللي حاول .. ال
slash معناها إنه هذه F لحالها إذا أجا كل هدولهذه
.. هذه .. هذه .. هذا لأ إن الـ cost ما هو المستخدم
بدي أميزه إن لأ بقصد ال cost character زي ما كنا
نقول ال metadata بدي أميزها فبس هي القصة يعني ..
هنا مافيش .. يعني مافيش إيش صعب هنا كل اللي بدي
أقوله إنه يا جماعة إن ال F هي slash هذه معناها إن
كل اللي بدي بس هذا للفحص هيك اللي بدي أقوله يعني
الآن لو بدي أرجع على ال code يفوق بدي أفهمك الآن
لو بدي أرجع على ال F اللي كتبتهاشايفة أنا F وخلصت
طب افرضي بدي ال F بتاعة ال Fortran بقوله ماشي شرط
شحطه و بحط كل التفاصيل اللي لازم تيجي عشان اعتبر
بس هي هذا ال F مش يروح يرجع كل التفاصيل مش ياخد كل
اللي مشيه و يرجع و يقول هي ال token مش هيك فهذه بس
هي ال operator هو مديكي هيها option انه هذه معناها
لما تحطيها الشرطة بعد الحرفين انه باعتبرلك هدول
الحرفينToken إذا تقرر كل التالي و برجعلك automatic
عنهم عشان تكملي فحص من جديد هذه باختصار ال
operator مش لازماني زي ال sim يا بلى يا بلى منها
بس ممكن تسأل في بعض ال languages بس okay اللي بدأت
تسأل تتفضل انا ماشي على طول اللي بدأت تسأل بعيد اه
في سؤال مافيش أسئلة خلصناانتوا حرين انا هاجي وقتي
اسأل زي ما بدي براحتكم انتوا كنتي
بدك تسأل ولا بطلتي هنا؟ هنا بدك تسأل ولا خلاص؟
تمام؟ طيب فيش
أسئلة اه؟ انتوا حرين براحتكم طيب
كيف حالكم؟ تمام؟خلّوني الآن في الدرس الجديد تلاتة
ستة finite automata بس
قبل بدي أذكرك بشغلتين رئيسيات إحنا إيش تعلمنا حتى
الآن في الsecration السابقة؟ شغلتين شو هما ال
regular definition اللي بيوصف ال tokenو ليش
اتعلمته؟ علشان اكتب فيه tool صح؟ مش هي ال tool
ماطلبش مني حاجة تانية غير بس اكتب لل definition و
اعطيك العافية بس في درس انا برضه اتعلمته المحاضرة
السابقة مش عارف ليش اتعلمته اللي هو state diagram
يعني ليش احنا خدنا ال state diagram احنا .. اذا
بذاكر .. احنا بذاكرك احولنا اللي هو ال regular
definition ل state diagram ليش؟أيوة لأن ال state
diagram أسهل في عملية ال simulation أسهل في عملية
البرمجة باختصار طيب تتوقعي ال tool اللي اشتغلتها
قبل شوية اللي حطيت ال definition وين هتكون مرحلة
ال state diagram فيها؟ وين بتبين؟ والله بيحولش
تتوقع ال state diagram؟ إيش توقعاتك؟ ال tool مش
أنا كتبت ال toolهل هيحول اللي تتوقع الى state
diagram ولا مالعيله علاقة ولا حد لأ لازم يحول ايش
رأيك المنطق بيقول ان ال tool لازم يحول ل state
diagram ولا ليش أخدته مش احنا قولنا بشكل human ال
definition بتحول ل state diagram لان برمجته بتصير
سهلةطب انا كتبت في ال tool بس definition و خلصت
ايش تتوقع هتسوي ال tool في لحظة ما بتتحول اكيد
هيحول كل ال definitions اللي انا عملتهم ل state
diagram ليش؟ عشان يعملوا simulation بال C و يخلصوا
و يتعرفوا على ال tokens مش هيقوله لأ او الا ليش
انا اتعلمت ال state diagram لان هذه خطوة هبتنعمل
ال tool لحاله بيعملها internallysystematic بيجلب
كل ال definitions اذا انا كتبته جواته سواء في النص
التاني او في الاول كلهم بيجلبهم لشو؟ ل state,
diagram و بعدين بيعمله ايش؟ simulation و بيعرف
حاله اذا جت token او لا جتش token فهي باختصار بس
طبعا انا اتعلمت هذا الكلام كله ك human لسه مااخدتش
بشكل systematic عشان هيك السكاشن تلاتة ستة و تلاتة
سبعة و تلاتة تمانية و اللي جايات هدول بيوريكي كيف
العملية بتشيل systematic بتصير systematicكيف ال
tool هذه بتحول كل اللي عندها ل finite automata و
هذه ال finite automata اللي أنا طلعتها كيف بنعملها
simulation بشكل automatic عشان تقوللي هذا token
ولا مش token هاي اللي بناخده في ال succession اللي
جاية تمام؟ طيب ال finite automata عبارة عن إيش؟ هي
باختصار عبارة عن الدوائريعني زي ال transition
diagram دوائر و من كل دائرة في عليها edges وين
اروح عند A وين اروح عند B وين اروح عند C تمام؟
وبتوقع أول دوائرة فيهم تكون هي ال start state
وبتوقع يكون فيه دوائر acceptance على أساس يقوللي
هذي في ال language ولا مش في ال language ودوائر ال
acceptance كيف بنميزها؟ بدائرتين مع بعض ومانساش
أنه ممكن يكون أكتر من دوارتين في بعض يعني أكتر من
acceptance state في الحالات إيش بنسوي؟ بناخدالـ
longest path وفي حال التساوي بناخد اللي رقمه أقل
أو ال priority تبعه اللي ذكر قبل التانية ماننساش
المعلومات هذه طيب الآن بالنسبة للـ finite automata
في نوعين في نوع بنسميه non-deterministic finite
automata اللي هو الـ NFAو نوعه ما نسميه
deterministic في نهاية التماتة اللي هو DFA إيش
الفرق بيناتهم بالنسبة يا بنات لل NFA ممكن ألاجي من
ال 0 عند ال A بتروح ل 5 و ألاجي عند ال A كمان مرة
بتروح ل 7 و عند ال A كمان مرة بتروح ل 9يعني جالك
ال NFA وارد جدا يكون نفس ال label طالع أكتر من مرة
وهذا طبعا بحيّر في ال process يعني افترض ان انا
واجب في دائرة Zero و ال input A و اين بدي اروح؟
المشكلة أنك عندك أكتر من خيارعندك خمسة و عندك سبعة
و عندك تسعة و بدك تعمل ال test أكتر من مرة صح ولا
لأ و تخيلي كمان خمسة طالعة من بيه و عند بيه و عند
بيه و كل دائرة طالعة مرتين تلاتة عند نفس الاسم
بتوقع هتكون أصعب من لو كانت مباشرة اسم واحد صح ولا
لأ عشان الكلب يسميها ال non-deterministic يعني أنا
مش عارف من هذه الدائرة أين بدي أروح بالظبط بدي أ
process زيادة فهذا أحد الشروط اللي موجودة اللي
بتعرفني أن هذه أنا في انه تكرار ال label اللي طالع
من ال edge اللي طالع من الدائرة تكرار اسمه طب في
حاجة تانية في اللي انا فيه اه انه ممكن للأسف
الشديد اطلع من دائرة 0 اروح دائرة 10 عند حاجة
اسمها epsilon و عند epsilon كمان اروح عند 15 يعني
اروح من 0 ل 15 بدون inputs هيك معناه epsilon اروح
من 0 ل 10 بدون inputsيعني فجأة أكون واقف في Zero
ألاقي حالة وقفت في 15 عشان أجرب بدون أي character
فهذا بصعب الأمور أكثر أن أنت مسموح من Zero تعيد
شغلك من 15 بدون شيء مسموح من Zero تعيد شغلك مثلا
من عشرة لأنه كاتبك يسمح الانتقال عند ال epsilon
شفت كيف؟ فهذه شغلتين بعرفوك أن اللي عندك أنا في
ايه و لا مش أنا في ايه إذا لجيتي تكرار ال edges ال
labels أو إذا لجيتيالإبسلون عادة DFA التي اسمها
Deterministic لا تسمح لا بإبسلون ولا بتسمح بتكرار
اللابن اللي طالع من الدويرة يعني بالعربي لو أنا في
Zero و لجيت A رايحة على خمسة مستحيل ألاجي ال A
كمان مرة خلاص مايكون إشي تاني بي مستحيل ألاجي
إبسلون موجودة طالعين على مكان عشان هيك إيش سموها
Deterministic يعني سهلة إن بصولها أعرف النتاج و
أروح و أين بدي أروحتتوقعي من رسمتين التنين اللي
أنا رسمتهم مين efficient؟ مين أسرع؟ أكيد الـDFA
لأن الـDFA مافيش فيها خيلة انا في دقيقة لزيره، اجي
ايه روح على كذا، اجي كذا روح على كذا، اجي كذا روح
على كذا، مافيش فيها خيلة واضحة الأمور فيها، معروفة
الأمور فيها، deterministic أما الـNFA هي اللي إيش؟
اللي بتتعبوين أروح؟ طب إذا جات A؟ طب إذا جات
Epsilon؟ طب ما فيها خيارات؟ يعني بدأ شغل كتير
فواضح إنه ال DFA أكثر efficiency من من ال .. من ال
NFA ال DFA تمام؟ طيب السؤال المهم طب ليش أنا أتعلم
ال NFA ماكان خلاص وديتنا ع ال DFA وخلصنا؟ يعني ليش
أنا أروح لل NFA؟
كيف يعني؟ كويس بيتجاوب بس بدنا .. كويس بس جاوب
أوضح هي كويس كلامك بس كيف؟ كلمك
صح بس يمكن مش واضح للبنات إيه؟ ماشي بس السؤال ليش
أنا أتعلم ال أنا في إيه ما خلاص ماروح أدي أف إيه
وخلاص أو أعلمكوا دي أف إيه وليش أتعبكوا في الأنا
في إيه وإحنا شايفين ال دي أف إيه أحسن صح ولا لأ؟
ليش؟ إيش؟أجابكم عشان نختصر الوقت زي ما قالت هي لأن
الحصول على ال NFA من ال regular أسهل بكثير مش احنا
اتفجنا أنه بدنا نروح من ال regular نحول ل state
قالت فيه طرق systematic سهلة تطلعني ال NFA لكن صعب
لو بدي أروح ال DFAوتتذكر أيام ما شغلنا في الشباتر
الأولى وقلنا في الـ compiler بيحاول للوهلة الأولى
يكتب ال code صح و بعد ما يكتبوا صح بيعملوا
optimization و بيظبطوا بيكون تفكيره أني بس أكتبه
صح هذا نفس الفكرة أنه أنا في regular definition
موجود عندى تحويله إلى NFA systematic وسهل و 1 زاد
1 يساوي 2 لكن أنه أروح لدي NFA بتعب مش سهلفجاله
طالما انه تحويله ل NFA سهل و Automatic وعلى بناء
على ال algorithm اللي ممكن ناخده صرت أنا مش برأعرف
ال NFA بس واحدة هتجاوبني طب و ال DFA عادل حلو في
الموضوع أنه كل NFA في إلها أيضا طريقة Systematic
تتحول ل DFA هي كالصورة تملتيعني كل القصة اللي
هتصير أن الـ Regular Definition بتحول
Automatically إلى NFA اللي هو سهل الحصول عليه و
بعدين هستخدم ألغوريثمات أخرى هتعلمها تتحول من NFA
ل DFA و بعدين هعمل simulation لل DFA و يعطينا
العافية هي كل جثتنا هي كل جثتنا اللي هتصير في ال
toolأنا قعدت في ال tool يعطيني العافية كتبت
definition ال tool لحاله مش هيكمل يحول NFA يحول
DFA يعمل simulation ويديني الجواب هذا ال token
موجود ولا مش موجود شوفتي كيف طبعا كيف العملية هتتم
بشكل systematic هنتكلم فيه طبعا احنا بس الآن
قاعديني نحط الخطوط العريضة ايش ال NFA ايش ال DFA
ايش سبب وجود ال NFA ليش ال DFA مهم فهذه الخطوط
العامة بدنا نعرفها لكن لحدت الآنفي غموط كيف انا
احول مباشر هذا هنشوفه كيف احول من الان أف إلى دي
أف ايه هذا هنشوفه طيب خلونا الآن برضه نتكلم شوية
نوضح اكثر الان أف ايه تمام تعالوا نشوف ايش مرتبط
نمشي في الأمثلة تحت الكتاب طبعا .. طبعا يا بنات زي
ما تشايفين هذا الكلام كله ذكرته جال الان أف ايه
عبارة عن Asian non deterministic جال عبارة عن
مجموعة من ال statesواحدة منهم بدا تكون طبعا ال
start تمام ومش بس هيك الان كل state عشان تطلع لل
state اللي وراها لازم inputsأنت كنت تنتقل من دا
إلى دا عبر input فلازم يكون لل language هذه في
inputs يعني مثلا لما نتكلم عن لغة الجابة أنت لما
تقعد تبرمجي بالجابة مسموح لك تستخدم ال small
letters و ال capital letters و مش عارف ال
underscore و الأرقام يعني في characters مسموح
تستخدمهم هدول كلهم اسمه inputs لكن في المقابل في
characters أخرى ممنوع تستخدميهم بلزموي زي الدولار
ليش تحطيلي دولار في الملف غلط؟ففي دائما مجموعة من
ال input اللي أنت مسموح تستخدميهم وفي input مش
مسموح تستخدميهم لكل مكان بدك إياه لكل دوائر بدك
إياها صح ولا لأ طبعا الآن أنا لما أجي أقولك طيب
افترضي أنا عندي دوائر ال input اللي ممكن أشوفه
بالكتير A,B,C وسألتك شو ال input للدوائر هذه
هتقولي بس يا A يا B يا C لأن أنا هيك فارض أن ال
language تبعت مافيش فيه غير A,B,Cلكن لو أعمل دوائر
للغة الـ Java و أرى طالع من دائرة لدائرة محتمل أن
تشوف small letter محتمل أن تشوف capital letter
محتمل أن تشوف الأرقام محتمل أن تشوف الفاصلة
الفاصلة المنقوطة كل الحاجات اللي ممكن تستخدميها
جوا وارد يكون input عشان تنتقل من دائرة لدائرة
الحاجات اللي ممنوعة تستخدميها جوا ما بتلاقيهاش على
ال input شمت إيش يعني ال input ما نقصدها يعني كيف
أنا أنتقل من دائرة لأخرى لازم يكون في input اللي
ينقلني أجى حاجة غير هذا ال input errorشوفتي كيف؟
فالانش بقولك .. بقولك أي NFA إلها states وإلها
inputs عشان ننتقل بين الدوائر وإضافة لل inputs
إلها epsilon لأنه مسموح جناف ال NFA ننتقل من دي
على الأخر عبر ال epsilon ومسموح ال input يتكرراللي
تنتبهي في الان اف ايه مش جونا ممكن ال input يتكرر
بنفس الدائرة ما تنسيش المعلومات فيها ايه و بعدين
ايش بقولك a state is not اللي هي mean ال start
symbol لازم يكون فيه دائرة بداية و لازم يكون فيه
دوائر نهاية acceptance اللي هم دورتين في بعض بس هي
باختصار بقولك اللي طبعا شايفها ايش قالك a set of
states يعني قاللي ان ال acceptance مش ال state
واحدة ممكن يكون اكتر من دورة acceptance
ماشي بس انا هتبطل عن ال star خلاص هي اللي اللي
بيكفينا ال 2010 acceptance في بعض لإنه هنعرف
نتعامل معاها بطريقة تانية تمام طيب we can
represent طيب خلاص هذا تمام تعالى ناخد أمثلة طبعا
بنات هنا إيش
تتوقعي ال NFAطبعا this graph is very much similar
to Lansing's diagram except يعني ال NFA هو شبه ال
DFA بالاستثناء ايش؟ شغلتن ايوة 100% خلاص أيوة
ذكرهم هنا كويسجال إنه ممكن نفس ال label نفس الاسم
يطلع من نفس الدويرة أكتر من مرة وإن ال epsilon
ممكن يكون موجود على ال edges هيك لو طلعت وجدت هدول
موجودين هتسميها على طول انت ايش NFA ماجدتش هذا
متحقق هتصير ايش DFA طيب تعالوا ناخد أمثلة الان قبل
ما أشوف المثال لحظة نلحظ كل regular definition له
NFA هذه معلومة أخدها كل regular definition له NFA
يعني كل token له NFA لأن كل token أنا بوصفه ب
definition و ال definition بجلبه ل NFA إذا أنا صار
عندي القدرة الآن أحصل على NFA تحكي لي الكلمة هذه
اللي أجت هي token أو لابحيث لو أنا .. ليش؟ لأنه
إيش فكرتنا؟ بنمشي على ال input الأول و بنمشي على
الدوال و ندلنا ماشيين مع بعض خلصنا ال string هاي
اللي بدا أفحصها إذا وصلت دائرتين في بعض إيش بقول
هذه؟ هذه token ماوصلتش ولا دائرتين في بعض و خلصت
الكلمة بقول هذه مش token لإن أنا مش في ال language
إذا واضح إن ال NFA تصف ال language اللي بتلعمل بال
regular definition مالكوا؟ إيش فيه؟ مالكوا؟ إيش
مالكوا هذا؟في إيش؟ طيب بنكمل دقيقة
واحدة دقيقة واحدة و break طيب بس هذا المثال و
بعدين دقيقتين طيب .. طيب بس هم هذا المثال شوفي هاي
.. شوفي هاي .. هاد عبارة عن إيش؟ إيش ال language
اللي بتطلع؟ كل اللي هاد مستوى المثالكل الكلمات
المكوّنة من a و b تنتهي ب a b b صح؟ طيب سؤالي طبعا
هذه الرسمة هي n of a لهيه هذه الرسمة n of a لهيه
إيش يعني؟ يعني أنت مش هتوصلي تلاتة إلا إذا كانت
الكلمة في ال language لو الكلمة مش في ال language
مابتوصليش تلاتة باختصار طب ناخد مثال لو واحد كاتب
a a aو سألنا سؤال هل هاي في ال language ولا مش في
ال language؟ إيش مطلوب منك تسوي؟ بدك تستكشفي هل
ممكن أوصل من خلال هذه الكلمة؟ ممكن أمشي بطريقة ما
أني أوصل لتلاتة؟إذا لقيت path يوصلني لتلاتة يبقى
هذه الكلمة في ال language إذا لقيت ولا path يوصلني
لتلاتة مش في ال language طبعا الناس الشاطرين الناس
النايمين في الأول ناسانين بيصيروش يقولوا ايه؟ ايه؟
ايه؟ بيه؟ بيه؟ و بعدين بقول مش في ال language
بقولوا غلط مافي طريق تاني لو انت مشيتها بتلاقيها و
اين الطريق التاني يعني؟ انه أول a بده يلف وين هنا
أول aو تاني A ألف هنا بينما تالت A أروح هنااروح
هنا بعدين بيه اروح هنا في الحالة هذه انا وصلت
لتلاتة من خلال path معين انا دورت عليه اذا هذه في
ال language طبعا لحظة انه هنا في شوية صعوبة وين
انه لازم ادور trail and error اني بقدر اوصل و لا
بقدرش اوصل لان للأسف الشديد عند اول ايه انا محتار
يعني في كتير بنات عند اول ايه محتارين الف هيك ولا
امشي هيكلأن في خيارين فالمطلوب منك تجرب الحالين
تجرب لو أخدتيها هيك بتوصلي ولا توصليش طب لو روحت
هيك بتوصل ولا توصليش هفتك تعمل أكتر من تجربة تشوف
حالك هادي بتوصلك لتلاتة ولا لأ إذا لجيتي بتوصلك
لتلاتة إذا هادي في ال languageإيش يعني هذه يا بنات
في ال language؟ يعني هذه token لأن انت أساسا حاطة
تعريفات ال tokens يعني هذا مش تعريف token لكن انت
في الأساس عاملة definition ل tokens فإذا وصلت ل
acceptance فهذا ال token اللي انت لجيتيه ساعتها
هتروح تنفذ ال action اللي جبالها لهذا ال token طيب
افترضي كاتبين a a a b للصبح دوري مش هتوصل ل 3 إذا
على طول هتقوللي هذا مالهمش في ال language لأنه
مافيش ال path شفتي كيف؟ يعني الخلاصة أن هذه عبارة
عن NFA بتوصف ال language كلها فهذه وهذه equivalent
لكن هذه على شكل معادلة وهذه على شكل finite
automata NFAالان كيف هذه طلعت من هذه مش موضوعي هذا
هناخده بعدين بشكل سيستماتيك هنتعلمه كيف هذه بتطلع
هذه لكن اليوم هو لسه قاعد بشرح ايش ال NFA كيف ال
NFA توصف ال language او توصفش ال language ودخلت
دقيقة واحدة break طيب الآن زي ما في حاجة اسمها
finite automata أو transition diagram في حاجة
اسمها ال transition tables وهي equivalent لل
diagram وصف بطريقة table كيف يعني؟ يعني مثلا كم
state انت عندك هنا؟ صفر واحد اتنين تلاتة اربعة
states صح؟ فراح عمل في ال table ايش تحت؟ قالك هي
عنديسفر واحد اتنين تلاتة لان نروح للدقرة الاولى
سفر عند a و اين بتروح و عند b و اين بتروح و عند
ابسل و اين بتروح روح تطلعي فيها هاي اول واحدة عند
zero بتروح على a او بي عند zero عند a بتروح على
zero او واحد و عند b بتروح على zero و عند ابسلون
بتروحش على مكان مافيش epsilon عشان هيك بتلاحظ انه
كتبها زيك ال zero عند a بتروح على zero او واحد و
عند b بتروح على zero و عند epsilon مافيش epsilon
طب تعالى لدائرة واحد طلع اطلع ايه فوق شوفيها بس
بتروح على اتنين عند b لكن عند a بتروحش على مكان و
عند epsilon بتروحش على مكان عشان هيك اطلع كيف
وصفها باختصارجال in B بتروح اتنين ومافيش مافيش
وخلاص فبروح إيش بعملها على شكل table مش أكتر يعني
ليش؟ لأن ممكن الكمبيوتر يستثن هذه الطريقة أكتر بدل
ما يعمل nodes و edges و labels ومش عارف إيش خلاص
يعمل table ويشتغل عليه أنه أنا في A و أجه Zero و
أين بروح أنا مش كل قصتنا كانت if else في ال .. في
ال set دي كانت في برمجتها فهو بيقدر يعرف وين بروح
و وين مبروحش من وينمن ال state table فهذا شكل آخر
على شكل table غير الرسم والاتنين واحد في النهاية
equivalent لبعض تمام؟ طيب الان ايش بقصد acceptance
of input strings by automata الكلام اللي انا شرحته
قبل شوية في المثالين هدول هيه هنا بتتكلم فيه ان
انت كيف تعرفي ان هذه ال string في ال language ولا
مش في ال language قالك سهل جدا ابدأ من أول دويرة
وشوفي هذا ال path بيوصلك لتلاتة ولا ما بيوصلك إذا
بيوصلك لتلاتة دي معناها إيش؟ في ال language إذا ما
بيوصلك لتلاتة معناها إيش؟ مش في ال language فبس في
نفس المثال أنا شرحته قبل شوية شرحه قالك مثلا a a b
b في لها اتنين path ال path الأول أنه يضلك في
state zero a b .. الحل اللي في الأول اللي بيوصل
نيش لكن في حل تانيبوصلني فانت مين هتعتمدي الحل
اللي وصلك فبس بيقولك ان خدي بالك ممكن تعملي
process أكتر من مرة و تدوري على ال path أكتر من
مرة لغاية ما تكتشفي انه بوصل او لا فوداكي هنا و
اراكي مثالين ان مثال بوصلش و مثال بوصل يعني الكلام
اللي انا شرحته موجود في المثال هذا اللي انا قلته
قبل ال break تمام؟ طيب هذا برضه مثال اخر بيقولك
هاي a a نجمة or b b نجمةإيش ال أنا في a تبعتها؟
طبعا هذا إيش ال language؟ one or more a's أو بي or
more b's طب وين ال أنا في a تبعتها؟ هيا إيش رأيك
في ال أنا في a تبعتها؟ هيا إنه لو أنا كتبت a تمام؟
بيروح مباشرة على وين؟ ليش؟ لأن هذا ال epsilon
مالهاش دعوة صح ولا؟ بيروح على acceptance اللي هي
اتنين ال أنا جت كمان ايه؟هياخد الأطول صار في
acceptance تاني، كمان ايه؟ ففي الآخر مين هياخد آخر
acceptance لأنه أطول واحد فالخلاصة أن انت لن تصل
اتنين ولا تصل اربعة إلا في ال language ا ا ا ا ا ا
ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا
ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا ا اصح ولا
لأ؟ طيب فهذه في النهاية أنا في إيه accepting ال
language A plus or P plus هاي باختصار فبس المطلوب
منك أن تشوفي لأي string عندك هل في path يوصّلني ال
acceptance ولا لأ إذا لجيتي في path يوصّلني معناها
على طول هذه في ال language طب سؤالي للناس الشاطرين
افترض أنا ماكتبتش ولا إشي epsilon هل بتوصّلنيليش؟
لأن الـ Epsilon أساساً مش موجودة عارف لو هذه ما
كانت الشهان بعمل هيك لأ لازم أعمل هيك أنه عند ال
Epsilon acceptance لكن بعملهاش لل Bلأن ال B لازم
يكون ايش؟ B واحدة فدائما انتبهي لكل regular
definition أنا فيه خاصة فيها تتغير بتغير اللي أنا
فيه المهم الخلاصة أن اللي لازم اللي أنا فيه اللي
اعمله في الآخر تعملي بس acceptance للحاجات اللي في
ال language وما تعمليش acceptance للحاجات اللي برا
ال language ليش أنا بقول هذا الكلام اليوم لأن هذه
هتصير ال tokenوبالتالي أنا هحط تعريفات token مش
هيك و هطلع أنا في إيه لل token مش هيك وبالتالي أي
كلمة أو مجموعة من ال characters بجربهم في أنا في
إيه هاي والله إن هدول ال characters وصلوا ل
acceptance معناه دول ل token ولا كيف وصلوا ماوصلوش
ل acceptance معناه دول مش token مش هيك ولا لأ بس
طبعا بشرط لازم أكون حاطب كل أنا في إيه تعريفات
لمين ل tokens هو أنا لأ بس بدي علمك الفكرة فبجرب ل
a, b, a or b, a, b نجمة ايه نجمة زيك المهم خلاصته
كل regular definition له NFA متطابق معاه يقول لي
هل يقبل الكلمة هذه في هذه ال language أو لا يقبلها
باختصار تمام؟ طيب إيش
رأيك في السطر هذا؟ اجري فوق إيش كاتب؟ a de
-deterministic finite automata لأنه بدأت بيقولي
شرحتيها عن ال DFA و أنا شرحته alreadyis a special
case of what؟ of an fa where؟ إيش تتوقع هيكتب تحت؟
مافي إبسلون ومافي تكرار 100% يعني دي fa هي an fa
بدون التكرار والإبسلون طلعي هاي إيش كاتب؟ إي
agree؟ كاتب إيش؟ there are no moves on input
epsilon مافي .. مانتقلش مع ال epsilon يعني مافيش
label epsilon مش بسيكfor each state S and input
symbol A there is exactly one edge بطلع من S لكن
بلاجيش يطلع مرتين مرة واحدة maximum عند ال A
الواحدة فهيك بيصير DFA طيب كيف
نعمل يا بنات ال simulation تبع ال DFAتعالوا نطرح
كيف نعمل ال simulation تبع ال DFA و القصة simple
خالص جالك إيش ال input؟ هيكون عندك دوائر ال DFA و
هيكون عندك ال input اللي بدك تفحصيه في ال language
ولا لأ امشيك simulation أنا عشان أعمل simulation و
أقول هذا token ولا مش token ولا هذا في ال language
ولا مش في ال language إيش بالزمن؟ طرفين الطرف
الأول اللي هي الدوائرأو الـ finite automata أو الـ
DFA التي تمثل ال language أو تمثل ال token، مش
هيك؟ والطرف التاني الكلمة أو ال inputs المراد
فحصهماللي بنتي مثلا بإشارة انه خلاص بنتي ب end of
file او end of character او اي حاجة اللي انا بده
افحص كيف تفحصيه؟ ايش هتسوي عشان تفحصيه؟ هتقوليلي
هبدأ في ال start symbol في ال start state و هبدأ
في أول character موجود في ال buffer و منه هعرف وين
الدوائر اللي هروح و همشي ال character اللي وراه و
منه هعرف وين هروح و أمشي في الدوائر و أمشي في ال
character خلصت ال string هشوف حالي و أنا وقفت في
الدوائر انه وقفت على دائرتين مع بعضhead في ال
language ماوقفتيش حتى تقول ال term مع بعض head مش
في ال language يعني القصة simple خالص تحت ال
simulation ومافيش هانة زي ال NFA لخبطة أنه ألاقي
ال a مرتين و أصير اتحارب .. و أصير مش عارف هانة ال
DFA سهلة زي ال code .. شوفتوا ال code المجنر المرة
اللي فاتتزي الـ DFA الـ if else انا في state 0 و
اجا a روح على state 5 انا في state 5 اجا b روح على
state 9 كان سهل فهيو تعالى نشوف كيف مكتوب ايش
بقولك ال input عبارة عن string x المراد فحصها و
ايش كمان و ال DFA الدوائر اللي هتقوللي في ال
language ولا مش في ال language هذا ال input ايش ال
output تتوقعيyes or no هل هذه الكلمة في ال
language ولا مش في ال language طب كيف بيقول yes
ولا no إذا وقع في دورتين في الآخر yes ماوقعش في
دورتين no الآن طب إيش ال method كيف بدأ نشتغل
هايها ال method تعالى شوفيها هايها هايها ال method
تعالى اتطلعيه أول ما بيفدأ بناته دو لو سمحته أول
ما بيفدأ
أيش بيقولك؟ بيقولك هتبدأ .. من وين هتبدأ؟ من أي ..
من أي state؟ ال S الأصلية ال start صح؟ و هتمسكي
ايش؟ character من اللي وين؟ من ال buffer اللي بدك
تدور فيه token ولا مش token أو الكلمة اللي بدك
تعملها، مظبوط؟ الآن إيش هتعملي؟ صار عندك C ال
character أو ال input ودورت البدايةالان ايش
هتعملي؟ طب هنضل اللي في إيش هنقول؟ إيش ال move
معناها يا بنات؟ يعني من ال S هذه لما بيجي ال C هذه
وين ال دائرة اللي هروح عليها؟ هروح دائرة خمسة مثلا
إيش ال S هذه هتصير؟ دائرة خمسة تتوقع ال function
move إيش جواتها؟ if elseأنا في الاسهاي و أجى A روح
على 9 أجى B روح على 10 أجى D روح على 11 مش هيك if
else في الآخر يعني ال S الجديدة تبعتك إيش هتكون
على حسب هذا ال input و على حسب الدورة اللي أنا
فيها فإذا مثلا الدورة اللي أنا فيها عند ال A بتروح
على 90 إيش ده تصير ال S دي 90 و بدي أكمل من عندها
كده كم من عندها بدي أمشي ال input اللي ورا فإيش
بقوله هتليالـ character اللي ورا و عيد شوف ال S
وين بدها تروح قول طب لما يبقى هتضلنا عيد لما تظل
ماشي لما توصلي لنهاية الكلمة خلاص خلصت الكلمة كلها
مشيت عليها كل ال character اللي شفتهم خلصتي إيش
هتسوي هتفحص الأسهال الأخيرة اللي وجفت عندها هل هي
من دوائر ال acceptance يعني هل هي دورتين في بعض أه
دورتين في بعضخلاص yes هذه في ال language مش من
دواء ال acceptance بطلع يعني ال simulation بتاع ال
DFA سهل جدا و مرة واحدة بيخلص بدوش زي ال أنا FA
مرة اطلع فوق مرة اروح تحت مرة عيد مرة يجرب و
يخيلني مرة بقبصي و مرة بتكرار ال A و تكرار ال
inputs مافيش هذا الكلام موجود فجلد DFA simple خالص
خلاص خد الدائرة البداية و خد ال character وشوف وين
هتروحي وامشي ال character اللي ورا وين هتروحي ال
character اللي وين هتروحي خلصت شوفي حالك وين وقفتي
وقفت في acceptance خلصنا yes بقى وقفت في
acceptance no باختصار واضحة ال simulation تبعتها؟
طيب الآن بس بدي أكد على المعلومة هذه من
خلال الرسم هذه يا بنات الرسم هذه تتوقعي إيه؟ اجري
تحت شايفة
هاي؟ إيش ال language؟ A or B نجمة يعني كل الكلمات
اللي زي مثلا aabb أو aabbb مش زي هيك اللي توفح
صناعهم هذه قبل شوية أخدناها على إيه يا بنات NFA مش
أول ما بدينا المثال تبعنا أخدنا NFA لل language
اللي تحت طب سؤالي لإلكوا هذه NFA ولا DFA متأكدة
NFA ليش؟ مافيش إبسلون ومافيش من دائرة بطلع A أكتر
من مرةالسفينة إذا بتطلع لإيه من الدوائر التانية
مافيش مشكلة لكن من نفس الدائرة بيطلعش نفس الاسم
مرتين إذا هذه DFA بس بشكل آخر طبعا كيف جابها مش
موضوعي الآن كيف حول أنا في ال DFA مش موضوعي الآن
هناخده كمان شوية الآن الفكرة أن هاي DFAطب هل هذه
أريح من الانف A ولا مش أريح تعالي نجرب كيف بدك
تعرفي هذي في ال language ولا لأ هنا الحلو مش هتقعد
يتحذري زي في الانف A خلاص هتمشي بالترتيب عندك أول
A وانت في ال zero ايش بيقولك روحي مافيشش مجلة
اللخبطة الآن وراها جايش A وين هتروحي على واحد اجا
كمان ايه وين هتروحي على واحد شايفة ماتلخبطش مافيش
إشي بعدين روحي وين على B وين هيروحبعدين أجت ال B
الأخير وين هيروح؟ acceptance ولا مش acceptance؟
شايفة؟ ماقعدش أتوه وماقعدش أجرب إشي زي قبل شوية
وشوف كام bath و وين ال bath كنا نتعرف اللي أنا فيه
طب تعالي جرب اللي تحت AAB أول A وين بيروح؟ هنا
بعدين ال A التانية؟ هنا بعدين ال B وين بيروح؟هنا
خلصت في acceptance إذا واضح أن ال simulation تاع
ال DFA أريح خلاص مرة واحدة بمشي فيه لا بأتعاب ولا
غيره اللي أنا فكرا لأ في أكتر من A و أكتر من Y و
كان متعب و دوري و مش اللي بدنا فيه يبقى أحنا دايما
طموحنا نوصل لمين لل DFA إذا الأن الصورة بقدر أقول
هيك التضحيات هيك اللي طبعا خلصت ال section بس
أحنا ماخلصناش أكيد يعني عشان أطمنكوا يعني
أه طيب مهمش لازم ناخد مثال و نجف عنده المثال بده
خمس دقائق لازم ناخده بنات هدوء لو سمحتوا اللي
بتنام اتنام هي مسجلة اللي بتحضر براحتها طيب طيب
الان الان احنا أسسنا أنفسنا ليش ليش لشغلتين أحيانا
بس ضال علي غمض في شغلتين و أخلصإيش الشغلة الأولى؟
هاي الشغلة الأولى from ايش regular لوين ل automata
فالمفروض الخطوة الأولى أحول من وين من ال
definition ل DFA الخطوة اتنين ل DFA أنا أشهدكم في
الخمس دقائق من أنا في DFA و أوقف و المرة الجاية
نعمل الأولى كمان عشان نخلص كل قصتناتعالوا الآن
نشوف كيف بدنا نعمل من أنا أفعى وانا دي أفعى وهنا
راجزوا ان انا بدأ شوية تركيز عشان تعرفي .. قالك
لازم تعرفي التعريفات التلاتة هدول ماذا يقصد بـY
closure S وماذا يقصد بـY closure T وماذا يقصد بال
move عشان نفهم معناهم هدولجالك هاي معناها اجريها
انت يعني انا في دائرة zero و رايح على ايه عن دائرة
خمسين و رايح على ايه عن دائرة عشرين و رايح على ايه
عن دائرة تلاتين الان السؤال بيقولك من هذه الدويرة
عند ايه وين بتوصل ايه ايش الجواب خمسين و عشرينيعني
بالعربي من الدويرة المستهدفة عند الـ epsilon وين
الدوائر اللي بوصلها سجليها بتكون ان انت طلعتي
epsilon closure للدويرة طبعا مع نفسها وهنا تنسيش
sorry بتضيفي كمان نفسها لأن هي نفسها أنا واقف فيها
بدون حاجة فما تخلطيش أول حاجة بتقولي نفسها و
بتضيفي عليهم مين طب افترضي ولا واحدة بتروح على
epsilonخلاص نفسه يعطيني العافية إذا وضحت إيش الـ
Epsilon closure لدائرة طيب اللي وراها يا بنات
Epsilon closure لمجموعة مش لدائرة يعني بيقولك إيه
فرضي بدي للدائرة Zero و للدائرة اتنين بدي ال
Epsilon closure إيش الحل قالك جيبي بتاعت ال Zero
طبعا Zero مع الأخرين وضيفي عليهماللي هي 2 و تشوف 2
طبعا وين بتروح على الـ Epsilon يعني لما يكون عنده
أكتر من دائرة جالك بتعمل اللي عملتيه للدائرة
الواحدة و بتلميهم كلهم في مجموعة يعني لو بدي
Epsilon closure ل 0,1,2 بامسك الـ 0 وين بتروح عند
Epsilon؟ 0 ومين ومين ومين بسجلهم و عند 1 Epsilon
وين بيروح؟ بسجلهم مع الواحد و عند 2 وين بيروح؟
بسجلهم كلهم بلمهم في مجموعة هذه بسميها Epsilon
closure للمجموعةهذه is the closure لل estate الان
اخر واحدة دلت ال move ايش ال move TA ايوة هذه ال
move يا بنات للمجموعة يعنيبفترضي كنا بدنا نقول ال
T عبارة عن ايش؟ سفر و واحد و هاي دورة سفر عند ال A
رايحة على عشرين و عند ال A رايحة على خمسة و عشرين
و بعدين نقول رايحة عند ال B مثلا على واحد و ال
واحد عند ال A رايحة على تلاتة الآن ال move عند ال
A بتمسكيهم بالدور زي ما عملناه أول دورة Zero وين
بتروح ال Zero عند ال A؟ عند عشرين و خمسة و عشرين
ممنوعة تحط نفسك مثل الـ Epsilon إلا إذا راجعت على
نفسك هتضيف مين معاهم؟ تلاتة لماذا؟ لأنك تمسكت الـ
Zero شفت وين برو عند الـ A، سجلتيهمهتمسكي مين
وراه؟ الواحد وبرواند الـA وسجليهم، خلاص، باختصار
يعني نفس قصة الـEpsilon بس اللهم أصيب تتطلع على
الانبوت الفعلي وهنا بختلف عن الـEpsilon أنه
باعتبرش نفسه موجود إلا إذا كان بلف فعليًا على نفسه
الـEpsilon أنا already بدون إشي بكون موجود واضحة
كيف الـMove بتاعة المجموعة التلات معلومات هدول
بعلموك كيف تحولي من NFA لDFA والآن دي أخد المثال
واختم فيه
هي السؤال بقولك حوالي هاي .. هذي شايفينها بناءت
بتاعتش هذي؟ هذي اللي خدناها قبل شوية بس خدناها
مبسطة هذي unfolding ولا دي unfolding على اللوح؟
لأنه فيها epsilon خلاص طالما فيها epsilon حتى بدون
ما تكمل بحث طالما فيها epsilon إيش صارت؟راجزي الآن
عشان اختم فيه المثال كيف بدنا نحول هذا الان اف اه
ل دي اف اه قالك بدك تبدأ أول خطوة بدك تحسبيها
إبسلون إكلوجر لمين لنقطة البداية اللي هي مين Zero
إيش تساوي يالا يا بنات إيش تساوي بدك تشوفي من Zero
وين بيروح على إبسلون هتقولي ليه Zero تنسيش نفسه
بنسوك تبصي الغلط واحد واحداستنى و اتنين لانه حق مش
ابسلون واصلني بدون ايش على اتنين يعني بدون حاجة
ممكن نوصل على اتنين و ايش كمان و اربعة و سبعةفي
غيرها؟ لأ مظبوط مش هيك قال لي هاي اللي طلعت معايا
هي أول estate رسمية في ال DFA واسمها A هاي أول
دويرة في ال DFA واسمها إيش إذا بدك Zero واحد اتنين
أربع سبعة طيب الأن كيف أكمل؟ إذا انت عرفتي كيف
تعرفي أول دائرة؟ قالك epsilon closureالبداية
المجموعة اللي طلعت هذه اللي بنسميها دقرة الأولى A
الارش دي بتعمل ايه لسه صبر معايا الان كام input
موجود في شغل الكهنة ممكن احتمالات هتقول يا A يا B
سيبني من ال Epsilon ال DFA مافيش فيها Epsilon
هتقولي ايه ايه مرات بيكون في ايه و مرات بيكون في
بيه عارف لو فيه C كنت هتقول ايه او بيه او C طب ايه
فاداتك معلومة A و B؟ الان تحاول تفكري هاد ال A عند
A وين هتروح و عند B وين هتروح و عارف لو فيه C بيجي
تجربي فالحين أشوف كيف بدي أحسب هذا لسه مش عارف و
بعدين هتعمل ايه؟ هاي عند A وين هتروح و عند B وين
هتروح و هاي عند A وين هتروح و عند B وين هتروح و كل
دويرة جديدةهتعملها عند a عند b عند a عند b لما
تتسكل على حالها و تبطل تزيد طبعا الواحدة الأولى
بتتوقع ان عمركيش هتخلص ايه ان كل واحدة تظل تتفرق
صح؟ لأ لحسن الحظ بتخلص بسرعة اربع خمس دوار اللي هي
بتجيب ضبضبط حالها و خلص بسرعة زي ما هشوف في هذا
المثال الان كيف احسب الدويرة هاي؟ كيف احسب الدويرة
هاي؟ جالي انتبه ابسلون closure ل moveT التي من الـ
T التي من الـ A احسبيها
تعرفين أين سنذهب سأخبرك كيف نحسبها و ستحسبين
Epsilon لـ move A و B سنحسبها تنتهي عيب لو كان
هناك C و D input كان جربتهم كلهم ماعرفش غير ايه B
كيف نحسب يلا يا بنات move AA يلا شطرين طبعا
Epsilon ايش ال move AAهتمسكي هاي وين عند إيه وهاي
وين عند إيه وهاي وين عند إيه وهاي وين عند إيه وهاي
وين عند إيه وهاي وين عند إيه وتسجلي يالا ال zero
عند إيه وين؟ مفيش مفيش مباشر ال واحد عند إيه؟ مفيش
التانية عند إيه؟ تسجلي تلاتة الاربع عند إيه؟ مفيش
السبعة عند إيه؟ تمانية الآن إيش ال epsilon closure
لتلاتة و تمانية؟ يالايلا ابدي في تلاتة هتقوليلي
تلاتة في الأول نفسها بعدين وين تلاتة هتقوليلي ستة
و سبعة واحد و اتنين واربع طلع فيها كويسواحد واتنين
واربع وستة وسبعة هذه لمن؟ لتلاتة بس تلاتة تروح على
ستة وسبعة وواحد واتنين واربع لسه ما خلصناها مش
بدينا ال تمانية بضيف تمانية بس خلصناها هذه
المجموعة موجودة قبل؟ لو موجودة قبل خلاص بسميهاش
اسم جديد باخدها اللي كانت قبل بس الأن أنا جديدهاش
هسميهااسمها B فحقول هذه عند A بتروح على B اللي هي
بكتبهم الآن هنعيد A ل B كيف تنحسب؟ كيف تنحسب؟
هتقولي نفس الكلب .. ايش ال .. طب هنحسب ال closure
لمين؟ ل move A مع B اللي هو مين A؟ Zero and Zero
one بتروح عند B مافيش واحد عند B مافيش اتنين عند B
فيش سمك؟ أربعة عند بيه؟ خمسة و سبعة عند بيه؟ إيش E
closure لخمسة؟ Epsilon closure لخمسة؟ خمسة و ستة و
سبعة؟ و واحد و اتنين و أربع، مظبوط؟ هل هذه موجودة
فوق؟إذا هذه مجموعة جديدة إيش هتسميها انتي؟ C إذا
هتقولي ال A لو جابي هتروح على C مظبوط و هتعيدي
حضرتكلـ B، إيش هتعيدي ل B؟ إيش هتجيبيها؟ كيف
هتجيبيها؟ إيش هتقولي؟ مش هكمل، بس إيش هتقولي؟
Epsilon move ل B عند A و تحليها إن طلعت مجموعة من
الموجودين، خلاص بتسيبيها، بترجع عليها إن طلعت
مجموعة جديدة، بتسميها D و بتكملي فهي الحالة تعاد
السؤال، هيخلصته، جال هيطلع معاكيA و B و C و D و E
و ال A راحت على B و C الجدد لكن هتلاقي ال B لو
حسبتيها طب خليني أحسب بس ال B هذه خليني أحسب ال B
عند A حسبيلي هذه بس يا بنات ال B عند ال A حسبوليها
كيف نحسبها أبسلون لمين؟ وين ال B؟ هاي ال B ال 1 و
2 .. ال 1 عند ال .. عند ال A و أين بروح؟ التلاتة
ماعشي أين بروح؟ عند ال A
fish الواحد عند الا ايه؟ الاتنين عند الا ايه؟
التلاتة الاربع عند الا ايه؟ الستة عند الا ايه؟
السبعة عند الا ايه؟ التمانية عند الا ايه؟ مش هاذي
توا عملناها مش هي بتطلع بيهماذا تفعل؟ يعني هاي
بديك تلف .. وينها؟ يعني ال B بتلف على نفسها عند ال
A فهي اللي عمله فرسم هي طلعي؟ المهم بتكمل بنفس
الصورة يا بنات يعني القصة مابتدهاش إشي خلاص هي عند
ال A و بتعملي لأ ماتضبط معاكي و تسكري كل مرة بس
هتحسي بيه closure للموف closure للموف closure لما
تخلص معاكي طب مين دوائل ال acceptance في الآخر؟
كيف نعرفهم؟
رقم إيش ال acceptance عندك؟ عشرة أي حاجة فيها رقم
عشرة عملتيها دورتين في بعض ففي الآخر مش أنت عندك
دوائر تعالي نتجدوا المين هتتوقعي الوحيدة اللي فيها
عشرة إذا ال E اللي هي دورتين عارف لو عشرة هان بعلم
ديكة طب لو في دورتين تسعة و عشرة هعلم هاي وعلم هاي
شوفتي كيف اللي فيها تسعة أو فيها عشرة مش شرط
التنتين أي واحدة فيهم إذا رسمتنا النهائية هيهي
رسمتنا يا بنات النهائية هي عند ال A و اراح عند ال
B و اراح و بعدين نشتغل فالخلاص هيك حولناها من إيش؟
من NFA ل DFA أي سؤاللما تخلص معاكى، كيف تخلص
معاكى؟ يعني خلاص ال A تصير ترجعك، ما تعملش حالات
جديدة أنا إيش بكمل؟ مش ال A طلعت B و C، اشتغلت ال
B طلعت D، اشتغلت ال D طلعت ال E، اشتغلت ال ..
هتبطل تطلع زيادة، هتصير تلاقي الأرقام، تتكرر و
تصير ترجعي عشانك أنا أطالب منك المرة الجاية تجيني
يوم التلاتة أول خمس دقايق أحلى المثال هذا كامل أه
بدي تجيني أحلى المثال هذا كامل لأنه هنعتمد عليه
المرة الجاية مش صعب يا بنات
بأول مرة بجيب ال epsilon كله وين ما يوصلني يوصلني
ان شاء الله لو بعد تلاتة epsilon بمشي وراهم اول
مرة بعدين خلاص بصير اشتغل موب عادي ايه السؤال يا
بنات سهل دي ربالكوا هذا بسأل عنه دائما في
الامتحانات سهل يعطيكم العافية