کدنویسی کوانتومی!

نگاهی به مفهوم کامپیوتر کوانتومی و نوشتن اولین کدهشدارمطالب جامع و بدرد بخور در مورد کامپیوترهای کوانتومی ، فیزیک کوانتوم و ... توی اینترنت به وفور پیدا میشه که در انتها چند تا معرفی خواهم کرد. هدف از این نوشته به اشتراک گذاری مفاهیم در قالبی ساده از نگاه یک فیزیک خونده به دنیای علوم کامپیوتره. پس اگر به دنبال آشنایی با دنیای درهم تنیده محاسبات کوانتومی به روش من هستید خوش اومدید.ضمنا محاسبات کوانتومی به طور کلی شاخه ای پیچیده و پیشرفته در فیزیک هست و اینجا قصد نداریم عمیقا وارد موضوع بشیم. اما آشنایی کلی با مفاهیم فیزیک و ریاضی از واجباته و البته پایتون.کامپیوتر کوانتومی چیست ؟بیشترین چیزی که در تعریف کامپیوتر های کوانتومی شنیدیم آن است که این کامپیوترها ماشین هایی هستند که به جای بیت ها با کیوبیت ها کار میکنند . می دانیم که بیت در تعریف متعارف ترانزیستوری است که ولتاژ بالا یا پایین را ثبت می کند یعنی یک یا صفر. در سال های اخیر با پیشرفت تکنولوژی ما بیت هایی داریم که در نزدیکی سایز اتم ها هستند که مطلقا باورنکردنی است.مهندسان همیشه در تلاشند تا این عناصر اولیه را کوچک و کوچک تر بسازند از vacuum tubes گرفته تا ترانزیستورها و حتی ترانزیستورهای کوچک تر بر روی مدارهای مجتمع؛ اما چرایی این ماجرا به سه دلیل عمده ختم می شود :در یک حجم ثابت با داشتن عناصر اولیه کوچکتر می توان حالات بیشتری داشتعناصر کوچک اینرسی کوچک تری دارند به عنوان مثال در ابزارهای الکترونیکی این اینرسی ، ضریب خودالقایی است که هرچه رسانای الکتریکی کوچکتر باشد این ضریب کوچکتر خواهد بود در نتیجه می تواند حالات را با سرعت بیشتری عوض کند و در نهایت سرعت محاسبات افزایش می یابد.ضمنا وقتی رساناها کوچک تر باشند با اینرسی کوچک تر ، انرژی کمتری اتلاف می شود که بسیار اهمیت دارد.امروزه کامپیوترهای کلاسیک به این مرز رسیده اند. عناصری با اساس نانومتری که p-n junction هستند و تنها 200 برابر بزرگتر از اتم هیدروژن هستند. این بدین معناست که این تشکیلات مینیاتوری یک حدی دارد. نمی توانیم p-n junction را روی یک اتم یا یک مولکول پیاده سازی کنیم بنابراین برای افزایش قدرت محاسباتمان باید چیز دیگری به جز p-n junction یا ترانزیستورها پیدا کنیماین راه دیگر، باید به اندازه اتم کوچک و حتی کوچک تر باشد اما در حداقل مقیاس ها می توانیم این اثرات کوانتومی را نادید بگیریم بنابراین کامپیوترهای نسل جدید باید این اثرات کوانتومی را بکار گیرند و به نظر می رسد نسل بعدی کامپیوترها راهی ندارند جز آنکه کوانتومی باشند.بیت کوانتومی یک دستگاه کوانتومی دو حالته است. موارد بسیاری می توانند به عنوان کیوبیت بکارگرفته شوند مانند قطبش افقی و عمودی فوتون و یا اسپین بالا و پایین الکترون. اما با توجه به مفهوم دیرینه بیت در ذهن ما ، منظور ازآنکه کیوبیت می تواند حالت صفر یا یک و یا هر دو را داشته باشد چیست؟چون کیوبیت ها دو ویژگی منحصر بفرد دارند.برهم نهی (Superposition) : حالت کیوبیت پیش از اندازه گیری می تواند در برهم نهی ای از حالات باشد اما پس از اندازه گیری به یکی از حالات ممکن فروپاشی میکند.دهم تنیدگی (Entanglement) : زمانی که حالت یک کیوبیت ارتباط تنگاتنگی با کیوبیت دیگر دارد. وقتی دو کیوبیت در هم تنیده باشند هر تغییری در یکی از کیوبیت ها بطور همزمان در کیوبیت دیگر ، فارغ از فاصله شان ، ایجاد می شود. دو عبارت "همزمان" و "فارغ از فاصله" باعث شد انیشتین آن را حرکت شبح وار بنامد. مفهومی که به نظر می رسد قوانین بسیاری را نقض کند مانند تبادل اطلاعات با سرعتی بیش از سرعت نور ! ( مفهوم non-locality) .اگر قبول کنیم که همه ی این ویژگی های غریب در طی سال ها اثبات شده اند می توانیم وارد بحث بکارگیری این مفاهیم در تکنولوژی شویم در غیر اینصورت یک پست جداگانه خواهیم داشت.کامپیوترهای کوانتومی چه مشکلاتی را حل می کنند ؟پیش از هر چیزی باید بدانیم کامپیوترهای کوانتومی جایگزین کامپیوترهای کلاسیک (کامپیوتری که توی خونه اغلب ما هست) نمی شوند. این کامپیوتر ها در کنار کامپیوتر های کلاسیک هستند و برای حل مشکلاتی که کامپیوتر های کلاسیک نمی توانند (یا آنقدر زمان برند که عملا نمی توانند ) حل کنند، ایجاد شدند. همانطور که خواهیم دید ، ما بواسطه کامپیوتر کلاسیک به طور نمونه یک مدار کوانتومی را به کامپیوتر کوانتومی ارایه می کنیم و کامپیوتر کوانتومی با اجرای چند عملیات روی مدار مذکور ، گزارش نهایی را بواسطه بیت های کلاسیکی به ما بر می گرداند.کامپیوترهای کوانتومی در حل مشکلاتی که به طور نمایی گسترده می شوند بهترین گزینه هستند. مسایلی مانند مشکلات حوزه ی حمل و نقل مثل برنامه ریزی بهترین مسیر باربری و یا موضوعاتی مانند برنامه ریزی شرکت های عظیم که هر گزینه به شاخه های متعدد و فرصت ها و انتخاب های گوناگون گسترش پیدا میکند . ممکن است همچنان مبهم بنظر برسد پس یک مثال شهودی را در نظر بگیریم : فرض کنید می خواهیم یک مراسم بزرگ در یک نشست استراتژیک را برنامه ریزی کنیم که لازم است افراد کنار هم در شرایط مناسب و مود مناسب جای داده شوند. برای شروع فرض کنید یک میز با 5 صندلی دارید. چه ترکیباتی می توانید داشته باشید ؟ میدانیم این ترکیب می تواند 5*4*3*2*1 باشد یا فاکتوریل 5 ، به عبارتی یعنی 120 ترکیب ممکن.اگر یک صندلی اضافه کنیم چه خواهد شد ؟ به سادگی به فاکتوریل 6 می رسیم یعنی 720 به عبارتی تنها با اضافه کردن یک جایگاه این ترکیب رشد قابل توجهی کرد. حالا اگر 10 صندلی داشته باشیم ؟ 3628800 ترکیب !به نظر می رسد نزدیک ترین مثال واقعی و شهودی کاربرد کامپیوترهای کوانتومی همین مدل سازی باشد. کامپیوترهای کلاسیک به ندرت قادر به شبیه سازی یک مولکول هستند و این ضعف به همان گستردگی حالات ممکن برمی گردد بنابراین کامپیوترهای کلاسیک در شبیه سازی های شیمی (و در نهایت داروسازی) آنچنان قابل اعتماد نیستند. و این روزها ما به دانشی از کامپیوترهای کوانتومی رسیدیم که به خوبی قادر است مولکول های بسیاری را مدل سازی کند و این دانش روز به روز پیشرفته تر می شود.اما کامپیوترهای کوانتومی چگونه می توانند بطور بنیادی حالات بیشتری را محاسبه کنند ؟ پاسخ در ویژگی ذاتی کیوبیت ها یا بیت های کوانتومی و تفاوت بنیادی آن­ها با بیت های کلاسیک است. n حالت کلاسیک از حاصلضرب 2 که شامل بیت های صفر و یک است در n که تعداد بیت هاست بدست می آید اما در حالت کوانتومی ، n حالت کوانتومی از توان n ام 2 بدست می آید و این رشد نمایی تعداد حالات کوانتومی ویژگی­ای است که می تواند امکان ها و فرصت های مختلف را محاسبه کند و در بهینه سازی های سنگین محاسباتی بکارگرفته شود.در تعریفی ساده تر از تفاوت این دو کامپیوتر می توان گفت :کامپیوترهای کلاسیک می توانند احتمال را تخمین زده و ترکیب کنند اما به راستی نمی توانند دقیق باشند و در اغلب موارد هرگر نمی توانند با موارد احتمالات کار کنند ، مگرآنکه شما کل محدوده احتمالات را در یک حافظه بگنجانید ، به این ترتیب بسیار به نتیجه دلخواه نزدیک می شود اما دوباره دردسر بزرگتری پیش می آید. فضای احتمالاتی با اضافه کردن متغیرها گسترش پیدا می کند ! اما کامپیوترهای کوانتومی به راحتی تعداد بسیاری از مولکول ها را مدل سازی می کنند و منحصرا بسیاری از آزمایشات ناممکن شیمی را ممکن می کنند و در نهایت به تحقیقات سرعت می دهند.با این تفاسیر شاید خرید این به اصطلاح معجزه علمی به ذهن هرکس برسد !مطلقا فکرش را هم نکنید ؛ تخمین ها نشان می دهد یک کامپیوتر کوانتومی حداقل قیمتی بین 10 میلیون دلار تا 100 میلیون دلار دارد ، و اگر بیشتر هم نباشد به پرسنل و تجهیزات نگهداری منحصربفردی نیاز دارد. به عنوان مثال DWAVE یک کامپیوتر کوانتومی با قیمتی بالغ بر 15 میلیون دلار به فروش رسانده است. و تفاوت قیمت کامپیوتر این شرکت با شرکت هایی نظیر IBM و Google در تعداد کیوبیت های آن است و البته روش های انحصاری هرکدام در تولید .اخیرا در کنفرانس Qubits 2020 شرکت DWAVE، از کامپیوتر کوانتومی جدیدی با حدود 5000 کیوبیت رونمایی شد که ادعا می کند اولین کامپیوتر کوانتومی طراحی شده ویژه بیزنس است و حاصل بیش از 10 سال پژوهش است. و همچنین ارایه سرویسی در فضای ابری که طراحی ای به مراتب جالب تر دارد. هرچند تمام این تبلیغات گسترده در مورد کامپیوتر های کوانتومی نباید شما را به اشتباه بیندازد، هنوز تا رسیدن به ظرفیت واقعی کاربرد این کامپیوترها راه بسیاری باقی مانده است.اگرچه این دلایل به معنی عدم دسترسی یک محقق به کامپیوترهای کوانتومی نیست ! شرکت های بسیاری از جمله IBM ، Google ، Microsoft و DWAVE این کامپیوترها را به طور رایگان در فضای ابری در اختیار عموم قرار داده اند و البته حتما در آینده این دسترسی ها گسترده تر خواهد شد. در ادامه خواهیم دید که چطور می توان در عرض چند دقیقه بواسطه فضای ابری به کامپیوتر کوانتومی IBM دسترسی پیدا کرد و اولین کد کوانتومی را اجرا کرد .طراحی منحصربفرد کامپیوتر کوانتومی IBMمشهور به طراحی مونالیزا جزو مشهورترین کامپیوترهای کوانتومی تجاری سازی شده معرفی شده به جهان است ( اگرچه ابداع اولین کامپیوتر کوانتومی در جهان متعلق به دانشگاه MITشامل دو کیوبیت است -سال 1998) بنا به اظهار نظر طراحان این کامپیوتر امید است که خلق چیزی زیبا باعث حفظ و احتمالاً افزایش علاقه به این فناوری شود. همچنین به مردم چیزی واقعی و ملموس برای تحسین می دهد. این مهم در حالی است که محاسبات کوانتومی در یک دوره تاریک تحقیق گیر کرده اند. کار به وضوح در حال انجام است - آزمایشات در حال انجام است و مقالات آکادمیک در حال انتشار است - اما بسیاری از مزایای این فناوری هنوز در سطح نظری است. به عنوان مثال ، کامپیوترهای کوانتومی رمزگذاری مالی را نقض نمی کنند یا همچنان شبیه سازی های پیچیده هواشناسی را آنطور که سال ها ادعا می شد به زودی محقق می شود، اجرا نمی کنند. اگر با آخرین تحقیقات همگام نیستید ، دشوار است که بفهمید محاسبات کوانتومی واقعی هستند یا تنها فانتزی پرهزینه محققان است. اگرچه استفاده از این کامپیوترها هنوز در سطح تحقیقات و توسعه است ،دنیای کاربردی آن ها همچنان بکر و در انتظار ذهن های خلاق است.کامپیوتر کوانتومی IBM ، که در یک آزمایشگاه تحقیقاتی در Yorktown Heights ، نیویورک نگهداری می شود.کیوبیت واقعی چیست و چگونه می توان یک کیوبیت واقعی را طراحی ، کنترل و اندازه گیری کرد؟ چیزی به نام کیوبیت واقعی وجود ندارد. تعریف کیوبیت در واقع دو سطح تخمینی است ، به عبارتی ما می توانیم دو سطح از یک سیستم بزرگتر را در نظر بگیریم و از ویژگی های آن به عنوان تعریفی از کیوبیت استفاده کنیم.گفتیم می توان از طریق فضای ابری به کامپیوتر کوانتومی دسترسی داشت. این مسیر را می توان در چند مرحله ترسیم کرد : از سیستم کامپیوتر کلاسیک (به عنوان مثال لپتاپ شما در منزلتان) به سیستمی در فضای ابری به یک سردکننده ( دمای بسیار پایین ) که درون این سرد کننده یک به اصطلاح لوستری از جنس طلا شامل سیم ها و لوله های متعدد و در پایین ترین نقطه این لوستر یک محفظه در پایین ترین دما است که تمام آنچه ما از یک کامپیوتر کوانتومی توقع داریم از همین بخش کوچک بدست می آید.جدید ترین کامپیوتر کوانتومی شرکت IBM موسوم به Q System Oneدرون محفظه مذکور چیپ کیوبیت های ابررسانا در دمای 15 میلی کلوین ( در حدود 273- درجه سلسیوس ) است. سطح می تواند از جنس سیلیکون یا هر دیوالکتریک دیگر باشد. روی سطح شامل تشدید کننده هایی از نوع مایکروویو موسوم به کیوبیت و تشدید کننده های بازخوانی کوانتومی است ( readout resonator – موجبرهای همصفحه ابررسانا) . این تشدیدکننده ها با تعریف کیوبیت شامل دو پد متالیک است که بوسیله یک القاگر بهم مرتبط اند و تصویری واقعی از کره بلوخ را ارایه می دهند. در ادامه خواهیم دید که این تعریف چیزی نیست جز یک نوسانگر مایکروویو یا به تعبیر ساده تر نوسانگر الکترومغناطیسی، نوسان میدان الکترومغناطیسی که بواسطه مدارها توصیف می شود مدارهایی که از فیزیک کلاسیک می شناسیم و اینبار جهشی خواهیم داشت به مدارهای کوانتومی و این دقیقا همان نقطه ای است که ویژگی های کوانتومی ظهور می یابند.روند کیوبیت از ایده تا واقعیت را می توان در سه گام توضیح داد؛ اول سطوح انرژی ( شامل کت صفر و کت یک) که مفهوم بنیادی اثرات کوانتومی درون آن نهفته است، دوم فضای هیلبرت ( کره بلوخ) که نمودی از کاربرد حالت های کوانتومی است و در نهایت ابر کوانتومی ( سردکننده در دمای بسیار پایین در حدود صفر مطلق ) که نمونه ای شهودی و ملموس از تکنولوژی است.مفهوم سطوح انرژی ( کت صفر و یک ) ریشه در مفهوم بنیادی فیزیک کوانتوم دارد. ابری از اتم ها را در نظر بگیرید. با برقراری اختلاف پتانسیل، ابر اتمی ( به عنوان مثال گاز H2 ) ملتهب شده و انتشار می یابد با اشکارسازی این موج بواسطه ی لنزها، روزنه و منشور و صفحه عکاسی ، خطوط طیفی موج اولیه تشکیل می شود . خطوط طیفی شامل رنگ های مختلف و گسسته برای هر اتم منحصربفرد خواهد بود. این تصویر متفاوت منجر به ایده ی فیزیک کوانتوم و رفتار متفاوت اتم ها با تعاریف فیزیک کلاسیک شد. خطوط طیفی گسسته نشان دهنده سطوح انرژی هر اتم است از حالت پایه به حالات برانگیخته. در نتیجه اتم تنها می تواند در فرکانس خاصی برانگیخته و منتشر شود. با ترسیم نمودار انرژی پتانسیل الکترون نسبت به شعاع اتم (فاصله الکترون تا هسته) می توان سطوح گسسته انرژی را بواسطه ایده فیزیک کوانتوم تشریح کرد.نمایش سطوح انرژی اتم با ترسیم نمودار انرژی اتماین سطوح انرژی نه تنها گسسته اند بلکه در فواصل خاص و نابرابر( ناهماهنگ- Anharmonic) تقسیم شده اند. یعنی اگر نور لیزر که فرکانس خاص و ثابتی دارد و از قضا این فرکانس ثابت با فرکانس برانگیختگی اول اتم برابر باشد را به اتم بتابانیم و منجر به برانگیختگی اتم از سطح پایه انرژی ( کت صفر) به سطح برانگیخته اول ( کت یک ) و انتشار شود ؛ با ادامه تابش لیزر، اتم به سطح بالاتری از انرژی نخواهد رفت چراکه هیچ فرکانس دیگری با فرکانس اولیه برابر نیست. با این تفاسیر بواسطه تابش لیزر، واکنش اتم تنها در سطح پایه و سطح برانگیخته اول یعنی دو سطح خواهد بود و این ویژگی ما را قادر می سازد تا این دو سطح را ایزوله کرده و به مفهوم کیوبیت دست یابیم. نکته مهم در این مرحله ایزوله کردن زیرفضای کیوبیت از هرگونه نوفه یا نوسانات دمایی محیط برای حفظ وادوسی کوانتومی و سایر ویژگی های کوانتومی است در نهایت می توان کنترل و بازخوانی کوانتومی را تحقق بخشید.در نظر داشته باشیم که هیچ حالت دو سطح واقعی ای وجود ندارد و در دنیای اتم ها همیشه بیشتر از دو سطح انرژی داریم و تنها با تمرکز روی دو سطح اولیه و حفظ سطوح از اثرات اتلافی محیط به اثرات کوانتومی می رسیم. چنین پیچیدگی هایی منجر به علاقه محققین به دنیای ابررساناها شده است .هر چند اتم ها ویژگی های منحصربفردی دارند اما همین ویژگی ها کنترل و نظارت بر نتیجه نهایی را پیچیده می کند بنابراین محققین به مهندسی اتم های مصنوعی روی آورده­اند. اتم های مصنوعی در قالب مدارها با القاگر و خازن ها طراحی می شوند. انتخاب نوع القاگر و خازن در طراحی مدل بسیار حایز اهمیت است. اگر از القاگر خطی استفاده کنیم ، نمودار انرژی سهمی وار ما از نوع نوسانگر هماهنگ خواهد بود که سطوح انرژی برابر ایجاد می کند بنابراین نمی توان دو سطح اولیه را کنترل کرد پس از القاگر غیر خطی استفاده می کنیم که سطوح انرژی نابرابر و بسیار شبیه به اتم حاصل می شود.پس به طور خلاصه مسیری که از ایده اولیه فیزیک کوانتوم تا تحقق عملی آن داریم شامل : ابتدا تفسیر مفهوم کیوبیت ها در قالب یک سیستم دو سطحه ، سپس شبیه سازی اتم ها با استفاده از نوسانگرهای ناهماهنگ ، طراحی مدارهای کوانتومی با بکارگیری القاگرهای غیر خطی و در نهایت طراحی عملی تشدید کننده ها در مفهوم فیزیکی کیوبیت های ابررسانا در دمای صفرمطلق بر سطح دیوالکتریک می باشد.تشریح دقیق طراحی سخت افزار کامپیوترهای کوانتومی مبحث جذاب اما گسترده ای است که در این بحث نمی گنجد. فعلا همینقدر که بدانیم ارتباط بین کد زدن ما و تاثیرات کوانتومی چطور ایجاد می شود کافی است.از بیت به کیوبیتتا اینجا در حد معقولی با مفهوم فیزیکی کیوبیت آشنا شدیم و دریافتیم که چگونه می توان در معنای واقعی یک کیوبیت داشت ، حال نوبت به تعریف ریاضی کیوبیت رسیده است تا به این ترتیب بتوان دید روشنی در گذر از بیت ها به کیوبیت ها در کدنویسی بدست آورد.گفتیم بیت کلاسیک حالات صفر یا یک دارد اما در حالت کوانتومی علاوه بر صفر و یک می توانیم برهم نهی ای از حالات صفر و یک را داشته باشیم. در فیزیک کوانتوم برای ساده تر کردن کار با بردارهای پیچیده از نشانه گذاری دیراک استفاده می کنیم: کت صفر و کت یک|0⟩ and |1⟩ برای دستکاری بیت های بنیادی ، آنها باید توسط گیت های منطقی(Logic Gates) تغییر شکل دهند به عبارتی بیت ها را به یک مقدار دیگر بچرخانند یا اجازه دهند آنها همانطور که هستند بمانند. برخی از نمونه های معروف گیت های منطقی عبارتند از AND، OR، NOT، XOR و NAND. کیوبیت ها بواسطه ی گیت های کوانتومی تغییر می کنند که حالت کیوبیت را بنا بر عملکرد گیت کوانتومی دلخواه به حالتی دیگر نگاشت می کند. در ابتدا ممکن است مبهم به نظر برسد ، اما گیت های کوانتومی عملا گیت های منطقی کلاسیک هستند که به جای بیت های سنتی بر روی کیوبیت ها عمل می کنند. گیت های کوانتومی متداول شامل : Hadamard ، Pauli-X و Controlled NOT هستند. در نهایت نوبت به اندازه گیری می رسد. اندازه گیری نوع خاصی از عملیات است که در انتهای مدار بر روی کیوبیت ها انجام می شود تا مقادیر نهایی کیوبیت پس از انجام عملیات بدست آید. در مقایسه با گیت های فوق ، عملیات اندازه گیری غیرقابل برگشت است و از این رو ، یک گیت کوانتومی نیست. می دانیم وقتی ناظری به چیزی که در ابتدا در یک برهم نهی از حالات بوده نگاه می کند ، واقعیت به یکی از نتایج سقوط می کند. به طور مشابه ، تابع اندازه گیری یک ناظر است و مقادیر کیوبیت تحول یافته را می گیرد و آنها را به عنوان بیت های خروجی نهایی که دقیقاً 1 یا 0 هستند ارایه می دهد.اولین کد کوانتومی !رسیدیم به بخش جذاب دسترسی به کامپیوتر کوانتومی واقعی. فرض بر این است که با مفاهیم اولیه زبان پایتون آشنا باشید و روی سیستم تان نصب باشد. و البته با ژوپیتر نوت بوک (Jupyter) همه چیز آسان تر خواهد بود.اگر احیانا تا به حال با ژوپیتر نوت بوک کار نکرده اید اینجا می تونه مقدمه خوبی باشه. ابتدا پیش نیازها و کتابخانه های اصلی را نصب کنید :pip install qiskit numpy jupyterlab matplotlib qiskit-ibmq-providerو در لینوکس:sudo pip3.7 install --upgrade --force-reinstall qiskit-ibmq-providerاگرچه در کامپیوترهای کوانتومی ما با کیوبیت ها سروکار داریم اما بواسطه ی بیت های کلاسیک مدل مداری مان را ارایه می کنیم. در کد نویسی کوانتومی تعریف مدار کوانتومی (Quantum Circuits) حکم “hello world” را در کد نویسی متداول دارد.import qiskit as q %matplotlib inline circuit = q.QuantumCircuit(2,2) # 2 qubits, 2 classical bits circuit.x(0) # &quotx&quot is a &quotnot&quot gate. It flips the value. Starting value is a 0, so this flips to a 1. circuit.cx(0, 1) #cnot, controlled not, Flips 2nd qubit's value if first qubit is 1 circuit.measure([0,1], [0,1]) # ([qbitregister], [classicalbitregister]) Measure qubit 0 and 1 to classical bits 0 and 1سپس از تابع ()draw استفاده می کنیم تا مدل مداری مان را ترسیم کنیم :circuit.draw() # text-based visualization.در نتیجه :┌───┐ ┌─┐ q_0: ┤ X ├──■──┤M├─── └───┘┌─┴─┐└╥┘┌─┐ q_1: ─────┤ X ├─╫─┤M├ └───┘ ║ └╥┘ c_0: ═══════════╩══╬═ ║ c_1: ══════════════╩═ و نمایش واضح تر:circuit.draw(output=&quotmpl&quot) # matplotlib-based visualization. خروجی ترسیم مداری با دو کیوبیت و دو گیت و اعمال اندازه گیریبسیار خوب ، ما مدار کوانتومی خود را ساخته ایم. اکنون زمان اجرای مدار است. این یک آموزش محاسبات کوانتومی است ، بنابراین بیایید یک قدم جلو برویم و همین مدار کوچک را در کامپیوتر کوانتومی واقعی اجرا کنیم.در این مرحله باید وارد سایت IBM بشویم و یک حساب کاربری ایجاد کنیم اما در نظر داشته باشید که برای تایید حساب کاربری با خطای 403 یا در بهترین حالت عذرخواهی IBM در اجازه دسترسی شما به کامپیوترهای این شرکت مواجه می شوید و نام کشور عزیزمان در لیست تحریم های تکنولوژی این شرکت می درخشد. به لطف فیلترشکن ها یا سرور مجازی یا هر روشی که میدانید IP خودتان را عوض کنید و حساب کاربری تان را فعال کنید. با ورود به حساب کاربری وارد بخش My Account شوید ( گوشه سمت راست ) . در اینجا اطلاعاتی را می بینید که در ورود به فضای ابری کامپیوتر کوانتومی مورد نیاز است پس از قسمت copy token توکن مخصوص به حساب خودتان را کپی کنید.به فضای کد نویسی خودمان باز می گردیم و با داشتن توکن شخصی به کامپیوتر کوانتومی وصل می شویم:from qiskit import IBMQ IBMQ.save_account(&quotTOKEN HERE&quot) IBMQ.load_account() IBMQ.providers() provider = IBMQ.get_provider(&quotibm-q&quot) با اجرای دستورات بالا به ترتیب توکن مان را ذخیره می کنیم، به کامپیوتر کوانتومی معرفی شده و وصل می شویم و در نهایت بک اند های مختلف ارایه شده توسط IBM را دریافت می کنیم و از تنوع ارایه شده شگفت زده می شویم !for backend in provider.backends(): try: qubit_count = len(backend.properties().qubits) except: qubit_count = &quotsimulated&quot print(f&quot{backend.name()} has {backend.status().pending_jobs} queued and {qubit_count} qubits&quot) این قسمت ممکن است گاهی زمان بر باشد اما در نهایت خروجی شبیه به این خواهید داشت :ibmq_qasm_simulator has 4 queued and simulated qubits ibmqx2 has 1828 queued and 5 qubits ibmq_16_melbourne has 8228 queued and 15 qubits ibmq_armonk has 13 queued and 1 qubits ibmq_athens has 7004 queued and 5 qubits ibmq_santiago has 3813 queued and 5 qubits ibmq_lima has 3 queued and 5 qubits ibmq_belem has 18 queued and 5 qubits ibmq_quito has 443 queued and 5 qubits simulator_statevector has 4 queued and simulated qubits simulator_mps has 4 queued and simulated qubits simulator_extended_stabilizer has 5 queued and simulated qubits simulator_stabilizer has 4 queued and simulated qubits پس یکی از بک اندها را بنابر نیاز و البته طول صف انتظار انتخاب می کنیم و اجرا می کنیم و با در نظر گرفتن خطاهای احتمالی تعدادی حدود 500 شات را انتخاب می کنیم تا به جوابی مناسب بعد از اندازه گیری برسیم ؛ توجه داریم که جواب نظری مسیله برای ما روشن است و اینجا کمتر کردن تفاوت جواب نظری و عملی مورد بحث است.from qiskit.tools.monitor import job_monitor backend = provider.get_backend(&quotibmq_lima&quot) job = q.execute(circuit, backend=backend, shots=500) job_monitor(job)در چنین مرحله اجرایی ممکنه چند دقیقه در صف بمانید تا بطور موفقیت آمیز اجرا شود پس صبور باشید.در نهایت نوبت به ترسیم نتیجه می رسد. در مورد مدار دو کیوبیتی می دانیم 4 احتمال برای خروجی داریم شامل 00 ،11،01 و10 که با اجرای اندازه گیری به یک حالت نهایی منجر می شود، اما در حالت عملی این احتمال صددرصدی نیست یعنی :from qiskit.visualization import plot_histogram from matplotlib import style style.use(&quotdark_background&quot) # if using dark mode notebook result = job.result() counts = result.get_counts(circuit) plot_histogram([counts], legend=['Device'])ترسیم خروجی نهایی اندازه گیری مدار دو کیوبیتی و دو گیت در 500 شات در کامپیوتر کوانتومی واقعیمیبینیم که خروجی نهایی که در حالت نظری باید 11 می شد با احتمالات مختلف هر 4 احتمال را به عنوان خروجی ارایه کرده اما دلیل این تفاوت در چیست ؟ این اختلاف بدلیل وجود نویز استبه همین دلیل است که با انجام شات های متعدد به جواب درست نزدیک می شویم و اعتماد ما به احتمال بیشتر است همانطور که در بالا جواب 11 با اختلاف چشمگیری جواب ماست. حال یک قدم فراتر می رویم و مدار اولیه را با گیت Hadamard امتحان میکنیم و نتیجه جالب وجود برهم نهی کوانتومی را میبینیم:circuit = q.QuantumCircuit(2,2) # 2 qbits, 2 classical bits. circuit.h(0) # Hadamard gate, puts qubit 0 into superposition circuit.cx(0, 1) #cnot, controlled not, Flips 2nd qubit's value if first qubit is 1 circuit.measure([0,1], [0,1]) خروجی ترسیم مداری با دو کیوبیت و دو گیت و اعمال اندازه گیریجهت یادآوری دو کیوبیت داریم ، گیت H روی کیوبیت اول اعمال شده و بر هم نهی ای از حالات را ارایه میکند ، سپس گیت CNOT که کیوبیت هدف ( کیوبیت دوم) را تغییر داده اگر کیوبیت کنترل (کیوبیت اول ) 1 باشد. کیوبیت دوم 0 است و کیوبیت اول در برهم نهی ای از حالات است ، پس خروجی نهایی 01 و 10 نمی تواند باشد و برهم نهی از حالات 00 و 11 است؛ اما به طور عملی خواهیم داشت :ترسیم خروجی نهایی اندازه گیری مدار دو کیوبیتی و دو گیت در 500 شات در کامپیوتر کوانتومی واقعیطبق نتیجه می بینیم که هنوز 01 و 10 جزو احتمالات هستند که قطعا در اینجا نویز محسوب می شود اما احتمالات 00 و 11 با اختلاف چشمگیری بیشترین احتمالات هستند و این به هیچ وجه نویز نیست و طبیعت فیزیک کوانتوم را نشان می دهد.ترسیم خروجی نهایی در شبیه ساز کوانتومیاگرچه کار با بک اندها و کامپیوتر کوانتومی واقعی هیجان انگیز است اما در چنین سطحی و حتی سطوح بالاتر کار با کامپیوتر کوانتومی واقعی با وجود شبیه سازهای متعدد ارایه شده توصیه نمی شود چراکه اولا بسیار وقت گیر است دوما بهتر است وقت کسانی را که در حال تست نتیجه ساعت ها پژوهش و کد نویسی در شبیه سازها هستند را نگیریم. به عنوان مثال IBM فریمورک شبیه سازی با نام Aer را ارایه کرده که به راحتی می توان کدهای متعددی را در شبیه سازهایی نظیر qasm_simulator و statevector_simulator و unitary_simulator پیاده سازی کرد. نکته جالب توجه در مورد شبیه سازها همانطور که در بالا میبینید نبود نویز است، در حقیقت شبیه سازها ماشین های کوانتومی کامل و بدون نقص محسوب می شوند. آنچه امروز در دسترس است کامپیوترهای کوانتومی واقعی اما پر خطاست. می توان گفت نهایت آمال و آرزوهای محققین محاسبات کوانتومی تبدیل کارایی کامپیوترهای کوانتومی امروزی در حد کارایی شبیه سازهاست. پیشنهاد مطالعه کامل و جامع : کتاب : Quantum Computation and Quantum Informationمنابع مطالعاتی فریمورک Qiskit شرکت IBMدوره آنلاین دانشگاه MITبه نظر میرسه برای مقدمه و آشنایی اولیه کافی باشه. اگر تا اینجا حوصله کردید و خوندید سپاس گزارم و منتظر نظرات و پیشنهادات و یا احیانا سوالات تان هستم.