موسيقى
بسم الله الرحمن الرحيم الصلاة والسلام عليكم ورحمة
الله ورحمة الله ورحمة الله ورحمة الله ورحمة الله
ورحمة الله ورحمة الله ورحمة الله ورحمة الله ورحمة
الله ورحمة الله ورحمة الله ورحمة الله ورحمة الله
ورحمة الله ورحمة الله ورحمة الله ورحمة الله ورحمة
الله ورحمة الله ورحمة الله ورحمة الله ورحمة الله
ورحمة الله ورحمة الله ورحمة الله ورحمة الله ورحمة
الله ورحمة الله ورحمة الله ورحمة الله ورحمة الله
ورحمة الله ورحمة الله ورحمة الله ورحمة الله ورحمة
الله ورحمة الله ورحمة
الله ورحمة الله ورحمة الله ورحمة الله ستة اتعرفنا
على الاش يعمل finite automata بين وعيها دي NFA
وDFA هتلافة سبعة بدأنا نشوف كيف بننتقل من ال
regular expression إلى الاش ال finite automata
فالأول شوفنا كيف من ال regular expression ل NFA و
بعد هي كأن NFA بنحولها لDFA okay فانا الأن احنا
بدنا نرجع لهذا الأمر و نكمل من مطرح موقفنا
تلاتة تلاتة سبعة أربعة تلاتة سبعة أربعة تلاتة سبعة
أربعة تلاتة سبعة أربعة تلاتة سبعة أربعة تلاتة سبعة
أربعة تلاتة سبعة أربعة الـ Basis اللي هم الـ
Epsilon و ال single input character كيف ال NFA
تبعهم بعد الكلام شوفنا ال induction بمعنى كيف انا
مقدر اركب NFA جديد من ال NFAs تبعه من two other
NFAs وشوفنا هذا الكلام كله بالحالات المختلفة اللي
هي لو انا في عندي union لو في عندي ال
concatenation لو في عندي closure أه صح شفنا كله هذا
وشفنا مثال كبير اللي هو ال regular expression هذا
وشفنا كيف نظرنا إليه على إنه عبارة عن تركيبة من
sub regular expressions وكل واحد من ال sub regular
expressions دولة شفنا إيش ال NFA باللي بيمثله وكيف
دمجنا ال NFAs مع بعض وصولا إلى ال NFA النهائي
النهائي هذا مش النهائية هذا بعد ذلك يوجد ايضا two
states هنا بشكل نهائي تمام النهائي تبع هذا هو اللي
بدأنا منه بعد ذلك لما نرجعنا على سبعة واحد تلات
سبعة واحد عشان نشوف عملية تحويل ال NFA الى ال DFA
فبدأنا هنا برجع رجوع بدأنا من النهائي تبع هذا ال
expression اللي هو هذا تمام عشان نشوف كيف نبدأ
نحول هذا ال NFA الى DFA بمعنى انه اتخلص من ال
epsilon edges و من اي edge مكررة لو فيه state طالع
منها edges نفس ال label فأول حاجة كانت في hello
قمر او في عملية التحويل from NFA to DFA اللي هي ان
احنا نحسب ال subsets ال subsets ايش هم ال subsets
رجعكوا على ال table هذا ال table هو ال objective
تبعي او ال aim او الغاية تبعي ان انا اطلع بهذا ال
table عشان منه اطلع بال DFA ال table اللي بيحتوي
على ال subsets كل subset بيصبح كل subset كل مجموعة
من ال NFA states بتصبح ايش Node أو State في الـ DFA
هذا الكلام رأيته في المحاضرة السابقة كيف يعمل اول
ما نبدأ باستخدام
الـ E-Closure أو الـ Epsilon Closure of S0 ونخرج
إلى الـ Subset الـ E-closure هي الـ subset الأولاني
الـ
E-closure of state 0 هي عبارة عن E
-closure
of state 0 هي عبارة عن E-closure of state 0 هي
عبارة عن E-closure of state 0 هي عبارة عن E
-closure of state 0 هي عبارة عن E-closure of state
0 هي عبارة عن E-closure of state 0 هي عبارة عن E
-closure of state 0 هي عبارة عن E-closure of state
0 هي عبارة عن E-closure of state 0 هي عبارة عن E
-closure of state 0 هي عبارة عن E-closure of state
0 هي عبارة عن E-closure of state 0 هي عبارة عن E
0 هي عبارة عن E-closure of state 0 هي عبارة عنالـ
A هي ال subset 0,1,2,4,7 الآن الـ A هذا ايش بعدين
كم نسوي احنا لدينا table تتذكروا ال table فيه عدد
من الأعمدة لكل واحد من ال characters تبع ال
alphabet لأن احنا ال alphabet هي عبارة عن ال A هذا
الـ A وهذا الـ B لأن عمودينا اللي بعدي كواحد منهم
اللي هو ال DFA state و
التاني اللي هو ال DFA ال NFA subset صح؟ فهدول ال N
0 1 2 4 7 هم ايش؟
السبسيط الأولاني اللي اسمه a والان بدنا نشوف ال
move of a مع ال
move تبع a with a small و ايضا ال move تبع a with
b small عشان ايه؟ عشان نسوي يطلع
معنا اللي هو المجموعة ال subsist
الـ subset ما هو أمر الـ move إنما الـ closure E
closure تبع الـ move صح أو لا؟ المعنى إنه إحنا إذا
أخرج الـ move أو مجموعة ال moves من A هذه فعلا
ذاتها هي set يعني بدي أخد كل state في A و أشوف مع
ال input A وين بتودي يعني أجمع و أطلع معاه فهناالـ
A هي حياته ال move ايه ايه ايه ايه ايه ايه ايه ايه
ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه
ايه ايه
ايه
اأنا قاعد براجع كل كل كل كل كل كل كل كل كل كل كل
كل كل كل كل كل كل كل كل كل كل كل كل كل كل كل كل
كل كل كل كل كل كل كلكتتاتاتاتاتاتاتات
لسه انا ما حكتش بالنسبة ل a capital مع بي a capital
مع بي بيطلقلي another subset ايه ايه ايه ايه ايه
ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه
ايه ايه ايه ايه ايه ايه ايه ايه ايه ايه
اي
1,2,4,6,7 هذا هو C لما بتحسب C مع A و C مع B واضح
لأن خلاص بتكون احنا في الآخر لما بتكتبل العملية
هذه امتى بتجف في العملية هذه عملية توليد ال
subsets يعني generating ال subsets بتجف لما يبدأ
يطلع معاه empty
subsets
يعني هذه الـ E closure تبع الـ move طالع الفاضي و
مع بيه الطلال الفاضي السير مافيش .. خلّيني أطلع
على ال algorithm عمليا كيف حركتها الان احنا فيه
عندنا ال algorithm متكونه من two operations
أساسيات أولا ال subset construction subset
construction كيف أنا بكون subset بناء على إيش على
إيش ال T اللي معاه T هي مجموعة ال states التي انا
بتحسب
ال E closure تبعها هنا هنا هنا
هنا هنا هنا هنا هنا هنا هنا هنا هنا هنا هنا هنا
لأنه حتى بعد ذلك هو مستخدم هنا small letter T
إشارة إلى ال state الواحدة من ضمن المجموعة
المجموعة بنرمزلها بال T capital بينما ال state
الواحدة بنرمزلها ب T small فهو هنا إيش المجموعة؟
المجموعة هي D states هذه بنرمزلها ب D states
الواحدة منهم ال state الواحدة في هذه المجموعة T
small
there is an unmarked state T in these states Mark
T يعني انت بتخلصنا منها for each input symbol A
بتاخد ال state مع ال input symbol و اشوف من هذا ال
state هذا ال input بيودينا على state أخرى ولا أصلا
مالوش edge ممكن يكون هذه ال state و مافيه edge
عليها ال symbol هذا
فالآن احسب للـ T small هذه بالـ move من T small عبر
الـ A هذا إيش إيش الـ state إيش الـ state اللي بتطلع
معنا لك احسب الـ closure تبع هذا هذا الـ set مش هدا
بتطلع مجموعة move of T على A هذا بيطلق لي مجموعة
نحسب الـ closure تبع هذه المجموعة بيطلق لي مجموعة
أخرى هلأ نضيفها على U الـ union تبع كل if
U is not in these states فبنضيفه
كـ subset جديد
يعني أنا أطلع معايا هذا افترض أن هذا أنا شوفته قبل
هيكة خلاص ده أضيفوش إنما إذا جديد بروح بضيفه و
بعمله أو هذا يعني بضيفه و بعمله label جديد أو هذا
بضيفه على مجموعة states و بعمله label جديد ف if
you is not in these states add you as an unmarked
state to these states وبعد هيكة إيش بسوي؟ بنعلم فيه
جدول دي تران دي تران اللي هي هاي الجدول ال
transition table كل خلية من خلايا الـ table هذا هي
عبارة عن تقاطع state مع input فلما أقول أنا دي
تران و أحط brackets و أحط T مع A معناه تقاطع T مع
A فتقاطع
هذا الـ State مع هذا الـ input يعني الخلية هذه
إيش هحط فيها؟ هحط فيها الـ U الـ U هذه أصلاً عبارة عن
إيش؟ subset الـ subset هذا الوسم فعملياً أنا بقول
ليه؟ حط في الخلية هذه الـ B أو الـ C أو الـ D okay
فجهد الـ algorithm عبارة عن algorithm لـ
constructing الـ subsets و أيضاً بناء اللي هو الجدول
هذا الفيجور الثاني هو أيضاً الـ e closure لحالها كيف
تتولد خلّي
بالك أن هذا الفيجور ماكنتش ابتجاف هذه الأولى
ماكنتش ابتجاف ابتجاف لما there is an unmarked
state T in these states لما يخلصوا كل هما دولة
مايظلش ولا واحدة unmarked مايظلش ولا واحدة لأنه
اللي بنخلص منها بنعملها mark خلصه اللي unmarked
ومايظلش ولا واحدة unmarked مايظل تبنجف الآن
الـ algorithm التالي يقولنا هي حساب الـ ecological
أو تشكيل الـ ecological تبع أي مجموعة من الـ states
فعند الـ T مجموعة من الـ states بنحطه على stack تمام
يعني هذه الآن التلاتة تمانية تخيليهم عامة عبارة عن
الـ states اللي عندنا في الـ stack أخدنا التلاتة
الآن while the stack is not empty بروح top T
للتلاتة the top element of the stack for each
state U يعني أنا الآن على state تلاتة طالع منها
edges الـ edges هدولة بعض منهم إش عليها epsilon فانا
for each state u , reachable with an edge from t
to u labelled epsilon أي واحد زيكى من تلاتة إلى
عبر الـ ابسلون فبسجل إش if u is not in closure إذا
هذه الـ state هي U مش في الـ closure بضيفها إذا
كانت موجودة في الـ closure بسيبها لأنه مانديش أكرر
states في الـ closure add U to الـ closure وبعدين ا
push U هي نفس الـ U بحطه على الـ state ليش؟ لأنه
ربما أنا هذه U جدام برضه كمان فيه بطلع منها
بالإبسلون على على state أخرى فهذه الاسم اللي بدأ
أخدها أحطها عندي على الـ state عشان أبحث عنها إيه
إذا كان فيانتقل منها الى إيش الى another state
بالإبسلان هيك أكون أنا شكلت الـ E closure تبع T هذه
الجهة دي الـ algorithm تستخدم في وين في الـ
algorithm اللي جابل وين في هذه الجزية في هذه
الجزية أنا إيش بسويه بحتاج لحساب الـ E closure تبع
مجموعة صح فهذا الـ E closure هي الـ algorithm الثاني
بكون الـ move طلعت لي كل مجموعة الـ stays باخد هذه
المجموعة و بعطيها الـ e closure عشان نطلع ليه الـ e
closure تبع هذه المجموعة تمام هكذا احنا مررنا على
figure 332 و 333 و
هذا أصلاً احنا بدأنا منه و شوفنا عملياً كيف الخطوات
وبعد ذلك تشكل الجدول إلى مين؟ الجدول ببني الـ
DFA هدولة أصبحوا هم الـ states تواعون الـ DFA وهي
الجدول بيقول لي لو أنا على الـ state وجاء واحد
منهم وجاني input وين بقدر أروح؟ خلاص بقدر أترجم
الجدول هذا إلى الـ .. الـ .. الـ .. الـ .. الـ .. الـ
الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ
.. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
.. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
الـ
الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
.. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
.. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
.. الـ .. الـ .. الـ .. الـ .. الـ .. الـ .. الـ ..
الـ .. الـ ..
لـ A و H لـ B A تودّين على B نفسها و B تودّين على D
تمام المهم بأرسم لـ B في H تودّين عليها نفسها بالـ
A و في H ثاني تودّين علي D و بكمل الهدف فأنا لو
أعطيتك الآن سؤال و قلت لك هذا عبريه عنه على شكل
جدول تقدر لو قلت لك هذا جدول أنا مش هعطيك هدول خلاص
لأنهم مش لازم الآن هدول اهتجناهم بس في تشكيل الآن
أحضركى شيء جاهز زيك و أقول لك هذا ترجمينى على شكل
على شكل إيش؟ DFA الآن
احنا هنا الـ algorithm دي هي عبارة عن الـ algorithm
لو أنا عطيتها NFA ذكريني الـ algorithm الأولانية أو
النباتية
هذا البرتن ودخلت لها DFA ودخلت لها string هي
بتقول ليه yes أو no صح؟ yes أو no بمعنى إيش؟ هذا الـ
string مطابق
للـ pattern تبع DFA هذا كده شفناه أول مرة الآن نفسه
لو أنا عندي NFA بقدر أسوأ هذا الكلام ولا لأ؟ بقدر
أسوأ هذا الكلام ولا لأ؟ المفروض بقدرش لأن NFA فيها
مشكلة الـ .. مش الـ ambiguity فيها مشكلة الـ .. لكن
أنا ممكن أعمل هذا الكلام إذا كان أنا أتمجد في الـ
algorithm قضية حساب الـ E closure و الـ move على
الطير على الطير بمعنى أنه .. الله كيف؟ أنا الآن
المفروض أن أنا ببدأ من start state لأن المفروض أن
أنا start state ودخلي input a أو b خليني أعمل
الجدول المفروض
أن أنا هذا NFA هذا NFA تخيلي NFA فأنا على start
state S0 ودخلي A الجدول يقول يروح على كذا لكن
الجدول لو إنه NFA جدول بيحتمل أن يكون جاي يروح على
واحد أو على Zero وهذا أنا ماقدرش أتصرف على هذا
الأساس فلأ فاحنا الآن إيش بينا؟ إيش بنقول؟ بيقول أن الـ
state Zero هذه بدناش ناخدها غير لأ بدنا نحسب الـ E
الـ closure تبعها
لكن يعني إيش؟ ارجع ثاني للمثال اللي كنا بنحكي فيه
الـ example اللي كنا بنحكي فيه لما بدينا الـ S0
حسبنا الـ move حسبنا إيش؟ حسبنا الـ E closure فبعها
و إيش طلع؟ السن اللي سمنها إيه؟ ماشي؟ الآن عملياً
لما أنا بقول الـ S capital هي الـ E closure لـ S0
هتعطاني إيش؟ المجموعة هذه اللي أنا بقوله اجرار الـ
character الشخص اللي عايز مشهده في الفيديو يعني
الآن إذا كان أنا الآن الـ
S هذه اللي هي الـ E closure تبع الـ start أحسن لي
مجموعة الـ moves من S يعني من أي واحد من الـ space
اللي في S مقابل
الشخص اللي أنا جريتهو خليني أقول لك إيه الـ project
بتاعهم إيش بيطلع الآن؟ بيطلع set جديد بيطلع set
جديد يبقى أنا الآن انتقلت من S الأولاني إلى S جديد
بناء على الـ character هذا يبقى أنا الآن قاعد بنتقل
من S من subset لـ subset صح؟ طب الـ subsets دول لأ
مش هم الـ A و الـ B و الـ C بس أنا ماسمتهم مش A و B و
C صح الآن؟ عندما كنت تبقى بيقول لي في الأول أنت
بدأت بـ S0 و S0 هي اللي أنا حسبت لك الـ subset اللي
منبثك منها بعد ذلك لما أنت جريت character C أنا
روحت حسبت لك الـ subset اللي منبثك من هذا الـ
character بناء على الـ subset اللي كنت أنت فيه فطلع
معاك subset جديد لما جريت character جديد بتخش في
اللوك صرت أنت بتنتقل من subset إلى subset الـ
subsets هذه عملياً هي الـ DFA states فهو كأنه عمل
simulation للـ DFA داخل الـ algorithm فممكن
تتم العملية بأما بهذا الأسلوب أو بإنه لأ والله
نحول الـ NFA مرة واحدة لـ DFA و نسلم الـ DFA لل
algorithm تشتغل عليه
هذه هي طريقة البرنامج، البرنامج يبقى مجموعة من
مجموعات مختلفة إلى مجموعات
مختلفة إلى مجموعات مختلفة إلى مجموعات مختلفة إلى
مجموعات مختلفة إلى مجموعات مختلفة إلى مجموعات
مختلفة إلى مجموعات مختلفة إلى مجموعات مختلفة إلى
مجموعات مختلفة إلى مجموعات مختلفة إلى مجموعات
مختلفة إلى مجموعات مختلفة إلى مجموعات مختلفة إلى
مجموعات مختلفة إلى مجموعات مختلفة إلى مجموعات
مختلفة إلى مجموعات مختلفة إلى
بنزمني برمجيا الكلام، هالبنزمني two stacks واحدة لل
S states واحدة لـ .. يعني للـ .. واحدة لـ .. ايش؟
واحدة لمجموعة الـ states خلينا نطلع بس شوية into
which holds a set of NFA states, one of those states
اللي هي old states
والتانية اللي هي current الـ
value of S on the right side of line 4 اللي هو هذا الـ
line
هذا ايش؟ هذا الـ old ولا الـ current؟ هذا الـ current
و الـ old اللي هي داني صح؟ نقيها الـ old وبناء على
ال character اللي جراناها بتحسبلي منه بعدين the
second new states
next set of state S on the left side فهذه الـ old
هي right side صح؟ right side وهذه الـ left side
تلعبين line 4 اللي هو S بساوي E closure of a move
of S given character C فهذه ايش الـ old وهذه ايش الـ
S on the right side of the line Unseen is a step
where as we go around the loop of lines 3 through
6 a new state is transferred to all states هدول الـ
states ينتقلوا إلى هدول الـ states فتو
stacks a Boolean array انهي Boolean array ليش
Boolean array؟ الـ Boolean array عشان نعرف مين الـ
states اللي تم .. اللي هو .. اه ان عملها mark ولا
لأ صح؟ و
بدنا كمان array تانية اللي بتقولي مين من الـ states
أبقى على الـ final two dimensional array two
dimensional array اللي هي لإنه احنا بدنا نعرف مين
من الـ states لإن احنا نقولهنا بنفحص F إذا وصلنا
لـ S لا
يتقاطع مع F التي هي مجموعة أش مجموعة states الـ
accepting states
إذا وصلنا إلى وضع الـ current states والـ
F state فى إشي شو معناه ذلك؟ معناه أن الـ current
subset يحتوى على واحدة من الـ final إذا مافيش ولا
إشي معناته مافي تقاط وانواع بينها دوام هدوى معناته
اللي أنا مارفعليهم الـ current stateset subset ولا
واحد منهم final يبقى بستمر او على الاسف انا بعد ما
خلصت الـ while خلصت الـ while اذا انتهيت انا من الـ
while على مجموعة من الـ stays ولا واحد منهم final
يبقى يبقى no يبقى الـ input اللي دخل الـ string اللي
دخل لا نطبق على الـ DFA اما اذا وصلت إلى واحد منهم
الـ F ماعنى ده الـ guessالانتقال لا يحتاج ليس امتي
انتقل الانتقال لواحدة
من الـ states الموجودة في الانتقال الانتقال
الانتقال الانتقال الانتقال الانتقال الانتقال
الانتقال الانتقال الانتقال
States are in a new state اذا
كانت الاراية موجودة في الاراية
الموجودة في الاراية الموجودة في الارايةالتي يجب أن
تسجل الـ NFA عملياً ما هو الـ Move من State S إلى
State A عبر الـ Import يعني عملياً يجب أن تسجل NFA
نفسه الـ Transition Table نفس NFA
عندما يكون لدي نوع
جديد نوع جديد هذا الـ set انا
بشكله كيف بشكله انا هنا في الـ line هذا باخد
المجموعة هذه بحسب الـ e closure تبعهم حسبة الـ e
closure ان كل مرة بشوف input مع stateو اين بيودني
فبضيف هذا الـ state على S يعني عملية ان الـ S بتشكل
تراكمي هذه الـ micro jar بتضيف ليه كل ما بتلاقي
move بتضيف عليه واحد بيستخدم بيستخدم إلى هذا الأمر
اللي هي الـ function هذه add state عملية
ان انا بنشوف اي واحدة من الـ old statesأى واحد من
الـ all states خلاص بده تنشال بنعملها بنرفعها و
بنجيب الـ state واي واحد اكتشفناها جديدة بنروح
بنحطها على الـ new state يعني بنشيل اللى خلاص بده
يروح و بنحط اللى استجد
طيب احنا الآن لحمنا مع section 374 اللي هو عملية
construction of NFA from regular expressions احنا
الآن مشينا من أول الـ chapter لآخره فعمليا أصلنا
لنهاية اللي بدنا يعمل هذا الـ chapter اللي هو
lexical analysis Okay بقى احنا الان في المحاضرة
الهادئ خلصنا الـ syntax .. الـ lexical analysis و
المحاضرة الجاية بنبدأ chapter 4 الـ syntax analysis
Chapter 4 هنقعد في فترة طويل ان شاء الله أطول من
اللي قعدنا في الـ lexical analysis بنوقف و نكمل
المحاضرة الجاية ان شاء الله