شبیه سازی یک کامپیوتر کوانتومی با Qiskit

شبیه سازی یک کامپیوتر کوانتومی با Qiskit

شبیه سازهای کوانتومی Qiskit-نحوه استفاده از آنها و کاربرد آنها

آیا می خواهید یادگیری ماشین کوانتومی را شروع کنید؟ نگاهی به یادگیری ماشینهای کوانتومی دستی با پایتون بیندازید.

در محاسبات کوانتومی ، ما از ویژگیهای اساسی فیزیک کوانتومی برای انجام محاسبات استفاده می کنیم: برهم نهی و درهم تنیدگی. به پدیده کوانتومی که در آن یک سیستم کوانتومی در ترکیب خطی پیچیده ای از حالات کوانتومی | 0⟩ و | 1⟩ وجود دارد. درهم تنیدگی یک رابطه بسیار قوی بین ذرات کوانتومی است. ذرات درهم تنیده حتی اگر با فواصل زیاد از هم جدا شده باشند کاملاً در ارتباط هستند.

صرف این واقعیت که ما قادر به استفاده از این پدیده ها برای انجام یک محاسبه هستیم ، حیرت انگیز است. اما این واقعیت که این نوع محاسبات ما را قادر می سازد تا مشکلات ظاهراً حل نشدنی را حل کنیم ، قابل تصور نیست.

شگفت آور اینکه ما حتی به رایانه های کوانتومی نیز احتیاج نداریم. ما می توانیم آنها را با استفاده از یک دفترچه روزمره شبیه سازی کنیم.

فرض کنید ما مدار کوانتومی زیر را داریم.

تصویر نویسنده

دروازه Hadamard را بر روی یک کیوبیت در حالت پایه | 0⟩ برای قرار دادن آن در حالت |+apply اعمال می کنیم. در این حالت ، ما 50٪ احتمال داریم که کیوبیت را 0 و 50٪ شانس آن را 1 داریم.

فهرست زیر این مدار را در Qiskit - SDK محاسبه کوانتومی IBM نشان می دهد.

Qiskit بسته Aer را ارائه می دهد. این پشتوانه های مختلفی را برای شبیه سازی مدارهای کوانتومی ارائه می دهد. بیایید با اولین مورد ، یعنی qasm_simulator شروع کنیم.

هنگامی که مدار کوانتومی (qc) خود را با پسوند qasm_simulator (یا هر باطن دیگر) اجرا کردیم ، می توانیم با استفاده از متد job.result () نتیجه را بدست آوریم. به ما می توانیم این نتیجه را به اعداد (get_counts ()) تبدیل کنیم که به هیستوگرام توزیع حاصله وارد می کنیم.

حتی اگر مدار کوانتومی ما کیوبیت تولید کند که با احتمال 50٪ آن را 0 می سنجیم ، نتیجه توزیع کمی متفاوت را نشان می دهد.

تصویر نویسنده

به این دلیل است که شبیه ساز qasm_simulator شمارش اندازه گیری را به صورت تجربی بازیابی می کند. پارامتر Shots به Qiskit می گوید که چند بار مدار را اجرا کرده و نتیجه اندازه گیری شده را بدست آورد. بنابراین نتیجه کاملاً دقیق نیست. اما هر چه تعداد شلیک ها بیشتر باشد ، نتیجه دقیق تر می شود.

شبیه ساز qasm فقط بیت های کلاسیکی را که هنگام اندازه گیری کیوبیت های خود استفاده می کنیم در نظر می گیرد. مطابق با مکانیک کوانتومی ، ما نمی توانیم وضعیت واقعی کیوبیت را ببینیم. فقط می توانیم آن را مکررا اندازه گیری کنیم تا وضعیت آن به دست آید.

البته دانستن وضعیت دقیق مفید خواهد بود یک کیوبیت - به خصوص در حین توسعه یک مدار کوانتومی.

خوشبختانه ، Qiskit باطن دیگری را ارائه می دهد ، شبیه ساز statevector_simulator. این شبیه ساز حالت دقیق کیوبیت را محاسبه می کند. هنگامی که از این شبیه ساز استفاده می کنیم ، مهم است که همه اندازه گیری ها را حذف کنیم زیرا اندازه گیری روی هم قرار گرفتن کوانتوم را از بین می برد و ناگزیر منجر به حالت قطعی سیستم می شود. اما ما علاقه مند هستیم برهم نهی کوانتومی قبل از فروپاشی.

کد زیر مدار کوانتومی به روز شده را نشان می دهد. توجه داشته باشید ، statevector_simulator پارامتر عکس ها را نمی گیرد.

مشابه با شبیه ساز qasm_s ، ما می توانیم شمارش را از نتیجه اجرا دریافت کنیم.

تصویر نویسنده

نتیجه احتمالات دقیق اندازه گیری را نشان می دهد.

اما چگونهاین کار را انجام می دهد؟

برای درک اینکه چگونه یک کامپیوتر کلاسیک می تواند مدار کوانتومی را محاسبه کند ، باید در نظر بگیریم که حالت کوانتومی (اینجا | 0⟩) ​​و عملگر کوانتومی (اینجا H) واقعاً چیست.

در مکانیک کوانتومی ، از علامت Dirac استفاده می کنیم که شبیه | 0⟩ است. این چیزی جز یک بردار ساده نیست.

عملگرهای کوانتومی معمولاً با حروف بزرگ مانند H. نشان داده می شوند ، اما آنها نیز چیز جالبی نیستند. عملگر کوانتومی یک ماتریس است.

در نهایت مدار کوانتومی اصلاً چیز جالبی نیست ضرب ماتریسی است. آره. کل مدار ماتریس H را با بردار | 0⟩ ضرب می کند و بردار دیگری تولید می کند ، همانطور که در معادله زیر نشان داده شده است.

بردار حاصله دامنه های اندازه گیری را نشان می دهد که مربعات آنها احتمالات اندازه گیری هستند. مربع 1/sqrt (2) 1/2 است.

از شیء results ، می توانیم بردار حاصله را با استفاده از متد get_statevector () بدست آوریم. خروجی آرایه ای از بردارهای حالت است. در مثال ما ، آرایه: .

باطن statevector_simulator وضعیت سیستم کوانتومی داده شده را محاسبه می کند. برای بررسی کیوبیت ها در حالت برهم نهی ایده آل است.

مدار کوانتومی ما از یک عملگر واحد تشکیل شده است - دروازه هادامارد. فرض کنید ، ما به جای آن یک دنباله کامل از دروازه ها را اعمال می کنیم. به عنوان مثال ، می توانیم سه دروازه HZH را اعمال کنیم (در این پست در مورد توالی HZH بیشتر بدانید).

تصویر نویسنده

وقتی مدار را اجرا می کنیم ، می بینیم که نتیجه آن 1 است (اگر کیوبیت در حالت | 0⟩ باشد). اگر می خواهید این نتیجه را به صورت ریاضی تأیید کنید ، باید سه ماتریس ضرب کنیم.

حتی برای ماتریس های کوچک ، ضرب آنها دست و پا گیر است. شما باید چندین ضرب را انجام دهید و باید اطمینان حاصل کنید که سطرها و ستون ها را با هم مخلوط نکنید.

بنابراین ، من همیشه از کامپیوتر برای ضرب ماتریس ها استفاده می کنم. هزاران ماشین حساب برای انجام این کار وجود دارد. اما راحت ترین آن داخل Qiskit است. این شبیه ساز واحد است.

این شبیه ساز یکبار مدار را اجرا می کند و ماتریس تبدیل نهایی خود مدار را برمی گرداند. مدار کوانتومی ما هرطور که باشد ، در نهایت یک ماتریس است. و اجرای مدار بر روی حالت ورودی به سادگی ماتریس تبدیل را با بردار حالت ضرب می کند. مجدداً ، هنگام استفاده از این شبیه ساز ، مدار ما نباید هیچ اندازه گیری داشته باشد.

کد زیر ماتریس مدار H-Z-H را خروجی می دهد. همانطور که می بینیم ، شبیه ماتریس NOT-gate است. بنابراین ، جای تعجب نیست که وقتی روی یک کیوبیت در حالت | 0⟩ اعمال می شود ، نتیجه یک کیوبیت در حالت | 1⟩ است که ما همیشه آن را به عنوان یک آرایه 1.

 ([
  [2.22044605e-16+6.1232340e-17j ، 1.00000000e+00-1.8369702e-16j] ،
  [1.00000000e+00-6.1232340e-17j ، -2.22044605e-16+6.1232340e-17j]
]) 

اگر محاسبات کوانتومی ضرب ماتریسی باشد ، موضوع مهم چیست؟

ضرب ماتریس چیز جالبی نیست. مشکل این است که به محاسبات زیادی نیاز دارد. هرچه ماتریس بزرگتر باشد ، (به صورت نمایی) تعداد عملیات ضرب مورد نیاز بیشتر است. بنابراین ، هرچه زمان ضرب ماتریس بیشتر طول بکشد. ما می توانیم ماتریس هایی با اندازه دلخواه را با یک کامپیوتر کلاسیک ضرب کنیم. تنها مشکل این است که (تقریبا) برای همیشه طول می کشد تا بزرگ (بیایید بگوییم بزرگ)ماتریس ها اکثر رایانه های کلاسیک قادر نخواهند بود با ماتریس های بزرگتر از 30x30 (م effectivelyثر) کار کنند.

اینجاست که رایانه های کوانتومی مطرح می شوند. آنها ماتریس های زیادی را در یک مرحله ضرب می کنند. اندازه ماتریس مهم نیست بنابراین ، آنها می توانند محاسباتی را انجام دهند که کامپیوترهای کلاسیک نمی توانند (در یک زمان معقول) انجام دهند. چگونه آنها از مکانیک کوانتومی برای انجام محاسبات استفاده می کنند. این بسیار فراتر از آن چیزی است که اکثر افراد (از جمله من) قادر به درک آن هستند.

اما محاسبه کوانتومی چندان پیچیده نیست. در اصل ضرب ماتریس است. در مقیاس کوچک ، کامپیوترهای کلاسیک در ضرب ماتریس بسیار خوب (و دقیق) هستند. بنابراین ، رایانه های کلاسیک می توانند آنچه را که یک کامپیوتر کوانتومی انجام می دهد شبیه سازی کنند.

اما با افزایش اندازه ماتریس ها ، رایانه های کلاسیک به مرزهای خود می رسند. سپس ، دیگر هیچ شبیه ساز به شما کمک نمی کند.

آیا می خواهید یادگیری ماشین کوانتومی را شروع کنید؟ نگاهی به یادگیری ماشینهای کوانتومی دستی با پایتون بیندازید.

سه فصل اول را به صورت رایگان در اینجا دریافت کنید.

چرا رایانه های مدرن برای مطابقت با تاخیر ورودی یک Apple IIe

چرا رایانه های مدرن برای مطابقت با تاخیر ورودی یک Apple IIe

توسط جوئل هروسکا

مقایسه تأخیر ورودی یک رایانه مدرن با سیستمی که 30-40 سال سن دارد در ظاهر مضحک به نظر می رسد. حتی اگر رایانه روی میز یا نوار شما چندان جدید یا سریع نباشد ، با این حال هزار یا بیشتر سریعتر از فناوری پیشرفته دهه 1980 با چندین هسته CPU ، تخصصی ...

شما می توانید این کامپیوتر فوق العاده تمشک پای سبک یکپارچهسازی با سیستمعامل

شما می توانید این کامپیوتر فوق العاده تمشک پای سبک یکپارچهسازی با سیستمعامل

قبل از جعبه های سیاه عمومی 00s و جعبه های بژ عمومی 90s ، تولید کنندگان رایانه در واقع سعی کردند ماشین هایی بسازند که ظاهر منحصر به فردی دارند به برخی از آنها ، مانند ZX Spectrum و Commodore 64 ، اکنون به دلیل طرح های شیک بسیار ارزشمند هستند. اما اگر می خواهید یک رایانه مدرن داشته باشید ، تنها انتخاب واقعی شما این است که رومیزی خود را بسازید یا یک لپ تاپ شبیه به یک تخته آلومینیوم خریداری کنید. خوشبختانه ، یک گزینه دیگر نیز وجود دارد و آن این است که برای ساختن رایانه رزبری پای خود به سبک یکپارچهسازی با سیستم ، آموزش Lewisb42 را دنبال کنید.

طراحی رایانه FLIPT-BIT lewisb42 از رایانه ای ساخته شده است که سونی در سال 1984 به نام HIT-BIT HB-101 ساخته است. مانند بسیاری از رایانه های دیگر در دهه 80 ، HB-101 دارای صفحه کلید داخلی و حتی جوی استیک بود. FLIPT-BIT از همان مفهوم پیروی می کند ، اما جوی استیک را با یک صفحه لمسی کوچک عوض می کند و یک صفحه نمایش TFT 7 اینچی اضافه می کند. lewisb42 برای ساخت خود از Raspberry Pi 3 Model B+ استفاده کرد ، اما شما باید بتوانید از تمشک تمام اندازه استفاده کنید مدل Pi ، از جمله Raspberry Pi 4 Model B.

برای ساختن FLIPT-BIT خود ، به صفحه نمایش رزبری پای 7 اینچی ، منبع تغذیه 12 ولت 5 آمپر ، تنظیم کننده ولتاژ 12 ولت تا 5 ولت و صفحه کلید USB و صفحه ترکیبی فشرده (هر دو از Perixx) نیاز دارید. محفظه از ترکیبی از قطعات چاپ سه بعدی ، ورق اکریلیک و ورق PVC فوم ساخته شده است. بعد از اینکه همه اجزای خود را با هم جمع کردید و محفظه به پایان رسید ، مونتاژ نهایی به سادگی اتصال همه کابل ها ساده است. فضای زیادی در داخل کیس وجود دارد ، بنابراین نباید در مرتب کردن همه چیز مشکلی داشته باشید. نتیجه یک کامپیوتر مدرن است که به نظر می رسد مانند نسخه های کلاسیک دهه 80!

از بیوشیمی تا علوم کامپیوتر تا اخترفیزیک تا نویسنده

از بیوشیمی تا علوم کامپیوتر تا اخترفیزیک تا نویسنده

یافتن مسیر شما همیشه آسان نیست ، اما حداقل باید از این سفر لذت ببرید. اینجا ماجراجویی من است.

عکس توسط JOSHUA COLEMAN در Unsplash

در بیوگرافی من ، من اعلام می کنم که من یک دانشمند کامپیوتر و دانشجوی رشته اخترفیزیک هستم. این داستان طولانی تری برای افراد کنجکاو است و در پایان درس هایی آموخته است.

استفاده از داده ها برای بهبود آموزش علوم رایانه

استفاده از داده ها برای بهبود آموزش علوم رایانه

در Code.org ، ما قدرت داده ها را برای ایجاد تغییرات ارزیابی می کنیم. برای افزایش مأموریت خود برای دادن فرصت یادگیری علوم رایانه به هر دانشجویی ، ما با ده ها سازمان محلی در سراسر ایالات متحده همکاری می کنیم که به طور جمعی شبکه شریک منطقه ای ما را تشکیل می دهند. این سازمانها دارای دانش منطقه ای و ارتباطات مدرسه هستند که آنها را قادر می سازد تا در منطقه محلی خود به طور م moreثرتری کار کنند تا دسترسی و فرصت در زمینه علوم رایانه را گسترش دهند. ما برای پیگیری پیشرفت در مناطق خود ، یک داشبورد جدید داده برای آنها ایجاد کرده ایم که توسط Tableau طراحی شده است.

از طریق این داشبورد ، شرکای منطقه ای ما اکنون می توانند تأثیر یادگیری حرفه ای را بهتر پیگیری کنند برنامه ای که آنها به صورت محلی اجرا می کنند داشبورد گزارش می دهد که چگونه بسیاری از معلمان از کارگاه های آموزشی حرفه ای خود دوره های ما و همچنین تنوع جمعیتی دانش آموزان را بر اساس فعالیت در بستر Code.org تدریس می کنند.

با ارائه این شفافیت داده به شرکای منطقه ای خود ، ما آنها را قادر می سازیم تا تغییرات را برای کمک به ماموریت ما در پیشبرد افزایش دسترسی به علوم کامپیوتر و تنوع دانش آموزان در این زمینه. این داده ها همچنین می توانند به شرکای منطقه ای در زمینه کمک های مالی خود کمک کنند زیرا تجسم و گزارش موفقیت و تأثیرات محلی آنها آسان تر می شود.

علاوه بر ردیابی تأثیر کلی برنامه آنها بر دانش آموزان منطقه خود ، داشبورد اجازه می دهد شرکای منطقه ای برای پیگیری سلامت برنامه یادگیری حرفه ای خود با گزارش اجرای کلاس و حفظ در میان معلمانی که در کارگاه های خود شرکت کرده اند. این داشبورد می تواند معلوم شود که معلمان شروع به تدریس نکرده اند یا نتوانسته اند دوره را به پایان برسانند و شرکا را قادر می سازد که در صورت لزوم کمک کنند.

به اشتراک گذاری داده ها در عین حفاظت کامل از حریم خصوصی

حفظ حریم خصوصی داده ها برای همه ما بسیار مهم است ، بنابراین ما در نحوه به اشتراک گذاری داده ها با شرکای خود بسیار مراقبت کردیم. قبل از هر چیز ، هیچ داده ای در مورد دانش آموزان جداگانه از طریق این داشبورد به اشتراک گذاشته نمی شود. تنها داده های سطح معلم ارائه شده به یک شریک منطقه ای معین برای معلمانی است که در برنامه یادگیری حرفه ای که توسط آن شریک اجرا می شود ثبت نام کرده اند. این معلمان برای به اشتراک گذاشتن این داده ها رضایت قبلی را ارائه می دهند و شرکایی که داده های سطح معلم را از Code.org دریافت می کنند ، به طور قراردادی موافقت می کنند که طبق اصول حریم خصوصی Code.org به صورت محرمانه با آنها رفتار کنند. سایر داده های کلاس درس که با این شرکا به اشتراک می گذاریم در سطح مدرسه جمع آوری شده و ناشناس است-هیچ ​​اطلاعات شناسایی معلم به اشتراک گذاشته نمی شود. برای اطلاعات بیشتر ، با اصول حفظ حریم خصوصی Code.org ، از جمله رویکرد ابتکاری ما در حفاظت از دانش آموزان آشنا شویدآدرس های ایمیل.

ما از همکاری با بسیاری از سازمان های شریک پرشور که از مأموریت مشترک ما برای گسترش دسترسی و تنوع در علوم رایانه پشتیبانی می کنند ، بسیار خوشحال هستیم. ما به تلاش آنها برای ایجاد فرصت برای یادگیری علوم کامپیوتر برای همه دانش آموزان وابسته هستیم و می دانیم که آنها در حرکت ما در سراسر ایالات متحده نقش مهمی دارند. امیدواریم با ارائه این داشبورد داده ، بتوانیم آنها را بیشتر تقویت کنیم و به ما کمک کنیم فرصت یادگیری علوم کامپیوتر را برای هر دانش آموز در هر مدرسه فراهم کنید.

مارینا تیلور ، مدیر محصول - Code.org