SimonAlgorithm
هنا. انا كنت انا كنت ازاي. اه بدأنا دلوقتي . ماشي المفروض Simone اه يعني مش بيعتمد قوي على اللي قبل كده هو اه بتاعته هو بيلاقي pattern في  functions  فانت دخللك function المفروض two-to-one يعني ايه two-to-one يعني
في اتنين input بيطلعوا نفس الoutput . او x,y الاتنين  input بيطلعوا نفس الoutput. فهو عايز يلاقي الpattern  ما بين الinputs  وبعدها عشان يعني اللي انا فكرت فيها ان هو مثلا ممكن يحتفظ بنص الinputs  بس.
وبعد كده بدل ما احتفظ بكل ال inputs , الoutputs بتاعهم تمام? اه هيحتفظ بالنص بس واحتفظ بال c . فلو هو عايز input معين هيروح عامل الinput اللي هو الاصلي. يروح عاملهXOR مع الC.
فيجيب له الinput التاني هيلاقي ان هو نفس الoutput. فبعد ما يحتفظ بكل ده احتفظ بالنص. ده اللي انا فكرت فيه. ماشي? تمام.فانت هنا المفروض بتعمل الXOR Y مع الC هتلاقي الX. دول كده الinputs بتوع.
الC ده اللي احنا عايزين نعرفه. دهHidden String  احنا مش عارفينه اصلا. احنا عايزين نوصله. فهو هنا بيدي مثال لو الC ب101 . فانت تقعد تعمل XOR مع كله. تمام? هتلاقي ان 000 عملت xor معها بقت 101. فانت كده عرفت ان الinput ده.
والinput ده لهم نفس الoutput. يعني ايه لهم نفس الoutput ? انا مش فاهم انتو فين. 12345678 . اه دول كده بيروحوا على 1.
او يعم بيروح على سنة. بيروح على 2و4و6و8. تمام? فنعتبر ان 1234. وده بيروح على2 اهو. 1و5 بيروح على 2. 6و2 بيروح على 4. وهكزا.
كده بقى. ماشي? تمام. فاتنين هىحعفس بيروح على نفس الoutput. فانت كده دي الfunction تعتبر two-to-one. فهدف . لو ان احنا نعرف الC عشان نقلل ما عرفش نقلل ايه بزيادة بس اللي جات في دماغي حرفيا هي ان احنا نقلل الStorage.
بس هو مش قايل اصلا. هو الراجل عايز ال C وخلاص. فقال لك هنا  note انه  الC ما ينفعش تبقى بzero. ليه? عشان لو هي بقت بzero لو كل الbits بقت بzero ساعتها الfunction هتبقى one-to-one احنا مش عايزين كده.
فافتكر ان الC مينفعش تبقا بzero . فالmain idea برضو نفس اللي قبل كده بس المرة دي كان الinput الاتنين n bits. فهنا الx بn bits  والy بn bits .
ونفس الخارج برضو الـ X وتحت الـ  XOR y  مع F(x) تمام فاحنا لو صفرنا الـ Y زي قبل كده السفر XOR معf(x) هيطلعلنا f(x)
اه هنا بيقول لك ان احنا لو عايزين نجيب ال C  فاحنا عايزين نجيب الx والy اللي هم بيطلعوا نفس الoutput فساعتها هنعمل هنعمل ما بينهم  XOR يطلع لنا الC ازاي كده? انت عندك المفروض كنا قايلين ان الX
بتساوي الXOR Y الC. لو عملت عايزة اتخلص من الY دي عشان اخلي ال C لوحدها. فلو عملت XOR للY. اي حاجة XOR نفسها بzero . فعطير وهنا هنحط XOR الY.
ال XOR X ال Y. اه هنا بيقول لك ان انت عشان تعرف اه تتأكد ان هي TWO-TO-ONE لازم تمشي  2^n /2. ازاي? انت هنا. ايه?
fuction(x) ده هو ال C. انه f(x). اللي هي الخارج من الoutput بتاعك. لا ده ده ده ده خارج من الfunction عادي. يعني ده هو. لا ده ده output  ده output. انت عايز تعرف ال....
الاتنين اللي هيخشوا هنا اللي هيطلعوا لي نفس والoutput .تمام.ال output هنا ملحوظة ان هو n bits قبل كده حتى في ال Deuchjoza كان one فقط كان bit واحدة. تمام. اه فالمهم هنا بيقول لك ان انت عشان تتأكد ان هي one-to-one ولا two-to-one انت لازم تحتاج 2+1/(2^n)  يعني
الكلام ده. انت عشان تتأكد ان هي. اه سيبك من ال أي اللي انا عملتو ده. اه انت دلوقتي عندك (2^n) inputs  تمام? هتمشي على اول اربعة طلعوا لك اربع حاجات مختلفين. اه مشيت على نصهم هطلعوا لك
outputs كلها مختلفة. تمام? انت لو رحت اه قلت دي دلوقتي كده انها two-to-one تبقى غلط. ليه? عشان انا لو رحت على الinput اللي بعد على طول اللي هو هنا في الحالة دي الخمسة. طلعت مثلا معايا اه 9 اي اي رقم اي حاجة.
تمام? ده معناته ان ده كده مش two-to-one عشان ده كده هيبقى تمانية  inputs على الاقل و ده هنا 5 لحد دلوقتي يعني. فده كده مش  ratio two-to-one. فانت عشان تتأكد لازم تروح تتأكد على نص الinput.
+1 . الinput بتاعك اصلا bits عددها n في اية الinputs عددهم 2^n. لو الbits عندك ب3 فيبقى الinputs بتوعك 8. 3^2.
بس هو بيقول لك كده يعني احنا اه can we do best can we do better. المهم دي حاجة بس لازم نرجع لها من Deuch-joza ان انت كان الzero لما بيعدي على Hadamard. الzero دا n bits .لما بيعدي على Hadamard. هيطلع لنا. summation ال X.
تمام؟ هيعدي على Hadamard هيبقى summation الـ .X  . و summationالـ Z للـ Z تمام فانت هنا برضو هتعمل matrix multiplication زي ما بنقولها لطول من اليمين للشمال من فوق لتحت
عندك اول حاجة هتقبلك هي الHadamard واقصادها الI. فالHadamard  واقصاده الI. وبنبه تاني على الn ان هي n bits . لازم تكتبها. tensor اكتبها tensor nبس في الpower.
تمام. عشان تقول يعني ان الH دي ان اه n bits. اه tensor ال I بعد كده اللي بعده. عندك Ufبعد كده اللي بعده ال H اللي هيقابلك. Hفي الI  برضو نفس الحوار. بعد كده اللي بعده هنا. الzero والzero. فعايزين نجيب الفايات بتاعتنا برضو بتاعت الcircute ديت. فاول φ هنا ما فيش غير الzero والzero.
بعد كده φ1 الzero معدي على Hadamard اللي هي ايه? Summation ال X مع ال X  هدخلها على طول بس بسرعة. تمام? تمام. مش اه بعد كده هادخل على الfunction هيخرج على الφ2 هنا هو.
الφ2 هنا هتبقى ال x مع ال function ليه? عشان احنا تحت. او يعني قبل كده كنا بنقول ان هو اللي فوق زي ما هو اللي فوق. فدي كده زي ما هي. اه اللي تحت ده f(x).
ليه؟ عشان هو مفروض XOR مع ده. اللي هو الzero ايوه. فمع الـ f(x).  تمام. عشان كده مكتوبة اللي فوق مع اللي تحت التحت اللي هي الـ f(X) بعد كده اللي فوق ده اللي هو X هيعدي على Hadamard. الX هيعدي على Hadamard هيبقى Z.
اللي هم مبصمجها اهي. يعني هو هيجي يقول لي اعمل ايه في السؤال  انا مش فاهم . اه تجيب الcircuit  دي هيجي لك circuit دي. يقول لك يعمل الmatrix multiplication ديت.
شوف انا بقى شوف الفيديوهين اللي قبل كده وانت معنا دلوقتي. هتشوف كذا example يعني. ممكن يروح اقايللك ايه? يديك circuit ويديك فايات هو مشاور عليها كده. ويقول لك قل لي الφ0 والφ1والφ2 مش عارف ايه.
فتقعد تكتب واحدة واحدة او ممكن تروح طلبالك  φ2 بس مثلا. فانت برضو لازم هتمشي كده كده اصلا مع مهلك على مهلك يعني واحدة واحدة. عشان تعرف تجيبها. فالمهم
بيقول لك هنا ان ال f(x) هي هي ان ال x xor مع ال c ليه عشان انت نفس الfunction كان مفروض ال x بتساوي
xor y مع c. فدي xية تانية يعني. فهو حطها هنا ايه ده? معرفش اه معرفش n جاتب one دي بس يعني هي كدا.
هو انا المفروض لو اجتلي ابسطها ما ينفعش اسيبها على الشكل اللي فوقني ده وخلاص لو انا بصحح لك اعتمد الفوق وخلاص والله بس ما اعرفش
مهم انت عندك دلوقتي فيه مفروض  summation  2 لل negatives دي كلها. والله ما اعرف.
بص سيبك من الحتة دي. بس تبصمجها انت مع نفسك احفاظها اقراها ما عارفش. سيبك من الحتة دي دي بقى. اه cancel ونروح على اللي بعد احسن. هو هنا اه مفروض اه لحد ما احنا واقفين هنا اهو في φ3 في function اهي. فهو راح مدلنا function وحشة.
وقال لك اهي two-to-one المفروض قاعد بقى ايه؟ جرب مع نفسك في الfunction. ماشي? تمام. انا ما اعرفش ايه اللي انا كاتبه ده ولا انا بمسح في ايه ممكن يبقى مهم. بس ماشي. اه في الφ1.
احنا قلنا ان هي ال X اه tensor product مع zero. هنا احنا قايلنا الn bits. الn ب3. تمام? 3 bits. فهو حسب اللي تحت دي انها كانت (√(2ⁿ)) الn ب3 ف3^2  ب اي.
كده tensor product مع الzero اللي تحت. ماشي? ماشي. فانت عندك ال summation اهو بلصاتها (+++++)اهي. الX هتقعد تجرب كل دول. هتعمل لهم اه اسمه اي ده tensor product مع الzero.
فانت عندك الzero اهي سابته. والX كل مرة بتتغير. فهو قاعد يجرب كل دول. ماشي? تمام. هو معرفش ليه نط على طول للφ
y3  بس ماشي. انت يعني بعد الشر علينا من الحاجات دي انها تيجي. بس احنا كنا قلنا فوق ان انت هتبقى z tensor product  مع ال f(x). انت هنا ممكن نجيبها ال zero عدا ال h  بقى X على عد على ال F.
عد على ال FUNCTION بعد كده عد على Hadamard اهو بقى z. انت عندك هنا z وهنا الfunction تمام? فهي دي الφ3. فانت مفروض هتمشي على ال summation بتاعة مرة على الx ومرة على الz.
ال X هي هي Z هما ال 8 دول تمام؟ بس انت هتمشي 8 مرات على ال X كل مرة هتمشي 8 مرات على ال Z هتبقى 64 معايا؟ معايا
ماشي. فانت عندك هنا سبت. الz . و بعد كده هنا حطيت ال f(x) فانت بتغير كل مرة ال X فانت هنا دي كده لل0000 قعدت تغير الاكسات حطيت ال8 اكسات هنا.
وعملت لهم اه tensor product اللي هو المفروض هتعمله اللي هي ال AND وال XOR .  ماشي? تمام. فانت هترسهم ال 64  بعد الشر علينا ان شاء الله ما تجيش.
اه بص هي هنا بقى قاعد يبص على كل واحدة اللي F(000) هتروح على 000 في الfunction هنا هتشوف بتطلع ايه و100 هرح  رح ايه حاطط ال100 قاعد يبص بقى على كل الfunction اه كل الinput للfunction عاد يعوض بيهم كلهم 64 مرة .
يعني trace مع نفسك. اه يا الهي. اه هنا بقى ايه? في الحتة دي. ده عند 000 بس. بس ان احنا هيتعمل مننا  clip على الyoutube. المهم. اه لقى ان 100 عشان هي two-to-one function  اه.
فلقى منها مرتين فراح ايه بسطها وخلاها +2  وجاب الاتنين دول مع بعض وهكذا بقى في كله قعد يلعب في كله بقى لحد لما بسطهم كده في حاجات كانت بالnegative فطارت مع بعضها ماشي
يعني دي مرةpositive  دي هنا مرةpositive ومرة negative فطارت فهتلاقي ان كل ده طار مثلا. اه وهكزا. انا عايز اهبد واقول حاجة وحش. ثانية. ال zero و 001 . لا دي فيها ىثلشفهرث. فممكن نشلها.
اه دي فيها negative ممكن نشيلها تمام دي فيها negative ممكن نشيلها. اه. لأ انت تقعد تمشي واحدة واحدة احسن من اللي انا عملته ده. وربنا معك بقى. ومعايا انا هسيبه الله. لو جه هسيبه يعني.
المهم هو بسطه لكده. تمام? اه لقي ان ايه? انت 000? هتعمل له اه tensor product او هتعمل له يعني dot product بتاعك. اه هو هنا tensor product ماشي. اه.
اهو هنا اخدنا عامل مشترك. هو عمل 000 لقاها هنا متكررة وهنا متكررة وهنا متكررة. فاخدنا عامل مشترك وعمل tensor product. الحاجات دي ما كلها مع بعض. تمام? تمام. انت كده مبروك عليك. انت اصلا لو انت لسه فاكر يعني احنا بنعمل اي فال function ان انت كنت بتدور عال c . فانت مبروك عليك تقدر دلوقتي حالا تدور عال c.
يعني ده الC لا دي اللي هتساعدك تجيب الC الحاجات دي اللي هما دول عشان دول عاملين بص بيتكرروا كده تمام ماشي فالمهم قالك ايه عندك دول الtop output .
with equal probability هما الحاجات الحاجات دي. او ولا ايه? اه لا انا هبدت هابده  وحش. ماشي. الحاجات دي. معلش. انا اسف. دول. 000 , 010, 101, 111 . اهي هما دول.
فالمهم  الحجات الوحشه دي .هتحطهم كده المفروض انت كنت بتعمل ايه? كنت بتعمل  XOR مع ال C عشان يعني ال X كان بتساوي ال Y XOR.
الC . فانت هنا ال3 حاجات دول هتعمل معهم XOR مع الC هتسويهم بZero. لو عايز تبصمج حط ال3 جنب بعضها كده وحط الC كده هو بتسوي zero . تمام? صح بقى. ماشي. اه هتعمل بقى ايه? هتعمل في اول واحدة دي. هتعملها ان هي اه الC هتقسمها لC1.
C2 C3 ليه عشان هم 3 bits هتعمل الzero anding مع ال C1  و,XOR ال zero and مع ال C2 هكذا الzero and مع ال C3
طب هنا XOR . وهكزا. هتعمل برضو هنا نفس الحوار. وهنا نفس الحوار وهنا نفس الحوار. تمام? تمام. اه اه هتعرف تحلها بقى ازاي?
اول اه سيبك  من اول واحدة عشان زيروهات ده مش هتفيدك بحاجة دلوقتي. تاني واحدة بتقولك  لك ايه? الzero مع الC1. وال1 مع الC2 . والzero مع الC3 . المفروض ده كله هيتلعلك zero. تمام?
ال zero anding مع اي حاجة بzero . و zero anding  مع اي حاجة بzero . فهبقى لك دي. دي كده بتساوي zero. ده معناها ان لازم تساوي الzero. ماشي? تمام. اه
بتقول لك ال1 مع الC1 . انا ليه مسحت كل ده? ثانيه واحدة. انا نفسي افهم اللي بي..
ماشي. ال1 هنا مع ال C1 والzero مع ال C2  , و anding مع ال C2 و XOR ال 1 مع  ال C3 تمام? تمام.
ماشي ال zero anding  مع ال C1 ب zero .  دي ما مالناش دعوة. ال zero XOR مع اي حاجة بنفسها. فدي كده الغيها. هنا مع اي حاجة بنفسها. فانت عندك دي كده هتبقى ال C1 XOR .
بتبقى C3 بتساوي الZero. امتى تعمل XOR تساوي الzero لو الحالتين zero هتطلع zero. لو الحالتين one تطلع zero. ده معناته ايه? ان C1 بتساوي C3.
ماشي? تمام. انت دلوقتي عندك حل من حلين. يا اما تحطهم بzero واما تحطهم بone . انت اصلا عارف ان الC2 بzero . تمام? انت عندك انت عندك information ان الC2 بzero . يعني مثلا مسائل زي I و و double I و 3I اي ده. هنجيب لك هنجيب لك example حلو متلاقش juicy تحت. استني
المهم انت هنا عرفت ان الC2 بتساوي الzero. وعارف ان الC هات كلها ما ينفعش تساوي الzer عشان الC ما ينفعش تساوي الzero هات. تمام? تمام. فانت كده ما ينفعش الC1 والC3
يساوي الzero. فعشان كده automatic هيسوي الone. فهتبقى الC1 بone والC2 بzero والC3 بتساوي الone اللي هي بone. ماشي? تمام. اه هنا هو بدل احنا هنا عندنا نعمل نحل كتير ومش عارف ايه بس دي كانت 3 bits طلعت اه
64. ملناش دعوة. هنا ده 7 bits. هم ربنا يكرمهم. وجابوا لنا النتائج النهائية على طول. احنا هنجيب الC  على طول. ماشي? المهم نحلها ازاي بقى? ده سؤال
هيجي في الامتحان بس معرفش هتجيب كم bit يعني بس ده اكيد هيجي في الامتحان. ال c برضو 7bit . اه ال C تساوي تساوي ال input. المهم انت عايز تمشي على column column تمام? انت هتمشي كده. من الشمال لليمين دلوقتي.
تمشي column column . هتعوز ان انت تخلي كل column ده في 1 بس. مش عايز اي واحد تانيه. انا عايز 1 بس. تمام? فاول 1هتقابله. بس ده انا كده عايزه. ده كده بقى master بتاعي دلوقتي. وانا بحل اي حاجة تاني عايزة اصفرها.
ففين الواحايد التانهة * 3. فعشان اصفرها اعمل ايه? اعمل XOR مع ال1. تمام? اعمل XORمع الmaster. ماشي? تمام. فالrow كله هتعمل له XOR. ف1 XOR ال 1 بzero. و 1 XOR  الzero ب 1.
هتفضل ان هو ايه? ب 1. اه 0 XOR ال1 ب 1 . و0 XOR الzero بzero وهكزا . تمشي عليهم كلهم. ماشي? كده انت بقى عندك اول column او الف مبروك عليك. هتمشي على الباقى بقى كلهم. بس هنمشي معكم واحدة واحدة عشان في حتة تلغبط في النص.
كده. اه تاني column عندنا. هنشوف برضو اول واحد يقابلنا. اول واحد يقابلنا هو ده. فاحنا عايزين نصفر اي 1 تانية. ال 1 التانية هنا *5 . اولا بس ده كده الmaster بتاعنا دلوقتي. اه انت مشيت على الcolumn الاولاني واخترت ان 1 تبقى الmaster تمام?
فطالما هي master انت مش هتبصلها تاني. يعني ايه مش هتبصلها تاني? يعني قدام في columns مثلا لقيت ال1 ده اول 1 قدامك وانت كنت عايز بال1 لوحده فيcolumn  بس انت مشيت على قبل كده فمانفعش هتبص علي 1 تاني.
هشرحها تاني قدام يعني. بس المهم ان انت دلوقتي اللي row اللي اخترته ان يبقى فيه  control bit 1 اعتبرها ان دي control bit دلوقتي يعني اوmaster bit مش هينفع اه تغيرها مش هينفع ال row ده  تغيره.
هو هينفع عادي. هتفهموها قدامي. لامؤخزة علي اللغبطه. المهم. تاني خطوة هنروح على تاني column . تمام? معلش. شوف نبدأ كده على النظافة. تاني column هتلاقي اول 1 قبلك. *3 . ف 3 ده الmaster .
عايز تصفر الوحاية التانية. الوحاية التانية في 5. و7. فانت هتعمل ايه? XOR. تقعد تعمل XOR. ال5 XOR ال3 وتحطها في ال5. ال7 XOR  ال3 وتحطها في ال7 . اهو عملهم كده. تمام? احنا كده ايه? عدينا 1.
بالنسبة للـ XOR لو هما متشابهين يعني 0 0 1 1 بيديني 0 صح كده؟ اوه لو مختلفين بيطلع 1 هتمشي على تالت bit تالت column قصدي.
تالت column احنا عايزين 1 بس يبقى one تمام? الوا معايا معايا? اه معاك. ماشي. انت عايز اه تالت column يبقى في 1 بس تمام?
بس انت هتقابل اول 1 اهو. بس ايه ده? احنا اخترناه قبل كده. ده كان ال master . فمش هينفع. تمام? هتسيبه لا هتسيبه وتنزل على اللي بعده. على اللي بعده ده ال1 هو هتقابله. هنا. فده بقى الmaster بتاعك الجديد. واحنا هنا اخترنا 1 و 3. فاحنا كده ايه?
ايه? ماشي اشرحها لك. ثانية  ثانية  عشان الحتة دي تاني. لما انا الحتة اللي هي بتاعت ال1 لو اخترناها باللي كده اخترنا ايه بقى? انت انت اخترته معه بس ال1 ده شوفه في انهي row ما هم سؤالين صح? ايه?
هم سؤالين ولا سؤال واحد معلش. ايه اللي سؤال واحد? هو كل ده يبقى سؤال واحد هي تديلك ده. ايوة. وتطلع الC . فانت تقعد تمشي كل الخطوات دي. اه طب ايه الخطوة الاولى اللي هي في تاني خطوة? هنا?.اللي طلعنا ال master اه.
ماشي انت هنا الاول احنا مشينا على اول column طلعنا ايه 1  كان طلع في اول row في اول row ده الmaster . حلو. فانت عايز تصفر الوحايد الباقي في نفس الcolumn . ماشي. فتعمل لهم  XOR مع الmaster . الbit دي بس? ولا كل ال... ,لا كل الrow كله بتعمل له XOR مع الrow كله.
واحد بس . اه لا هنا مثلا هنا لقيت في 1 هنا و 1 هنا انت عايز تصفرهم عشان انت اول اول 1 لقيته في تاني column كان كان ده. ده الناتج الجديد. اه ده الناتج الجديد.
ما انت في تلاتة اهو? عملت لما عملت اهو ال3 دي كده قعدت تعمل XOR في كل bit طلعت لك دي. ماشي خلاص ماشي فهمت كدا . ماشي فانت هنا رحت على اول واحد قابلته. طلع في row 3.