"من فکر می کنم می توانم با خیال راحت بگویم که هیچ کس مکانیک کوانتومی را نمی فهمد." - ریچارد فاینمن
موضوع محاسبات کوانتومی همواره نویسندگان و روزنامه نگاران فناوری را مجذوب خود کرده است. پتانسیل محاسباتی و پیچیدگی آن هاله عرفانی خاصی به آن بخشیده است. اغلب، مقالات ویژه و اینفوگرافیک ها با جزئیات چشم اندازهای مختلف این صنعت را توصیف می کنند، در حالی که به سختی به کاربرد عملی آن اشاره می کنند: این می تواند خواننده کمتر توجه را گمراه کند.
مقالات علمی محبوب توصیفی از سیستم های کوانتومی را حذف کرده و اظهاراتی مانند:
یک بیت معمولی می تواند 1 یا 0 باشد، اما یک کیوبیت می تواند همزمان 1 و 0 باشد.
اگر خیلی خوش شانس باشید (که من مطمئن نیستم)، به شما گفته می شود که:
کیوبیت در برهم نهی بین "1" و "0" است.
هیچ یک از این توضیحات قابل قبول به نظر نمی رسند، زیرا ما در تلاش هستیم تا یک پدیده مکانیکی کوانتومی را با استفاده از زبان توسعه یافته در دنیای بسیار سنتی فرموله کنیم. برای توضیح واضح اصول محاسبات کوانتومی، لازم است از زبان دیگری - ریاضی استفاده شود.
در این آموزش، من ابزارهای ریاضی مورد نیاز برای مدلسازی و درک سیستمهای محاسبات کوانتومی و همچنین نحوه نشاندادن و اعمال منطق محاسبات کوانتومی را پوشش میدهم. علاوه بر این، من مثالی از یک الگوریتم کوانتومی میآورم و به شما میگویم که چه مزیتی نسبت به یک کامپیوتر سنتی دارد.
من تمام تلاش خود را خواهم کرد تا همه اینها را به زبان روشن توضیح دهم، اما همچنان امیدوارم که خوانندگان این مقاله درک اولیه ای از جبر خطی و منطق دیجیتال داشته باشند (جبر خطی پوشش داده شده است
ابتدا اجازه دهید به اصول منطق دیجیتال بپردازیم. این مبتنی بر استفاده از مدارهای الکتریکی برای انجام محاسبات است. برای اینکه شرح ما انتزاعی تر شود، بیایید حالت سیم برق را به "1" یا "0" ساده کنیم، که با حالت های "روشن" یا "خاموش" مطابقت دارد. با چیدمان ترانزیستورها در یک دنباله خاص، عناصر منطقی نامیده میشوند که یک یا چند مقدار سیگنال ورودی را میگیرند و بر اساس قوانین خاصی از منطق بولی، آنها را به سیگنال خروجی تبدیل میکنند.
دروازه های منطقی رایج و جداول حالت آنها
بر اساس زنجیره چنین عناصر اساسی، می توان عناصر پیچیده تری ایجاد کرد و بر اساس زنجیره عناصر پیچیده تر، در نهایت، با درجه انتزاع زیادی، انتظار داشت که یک آنالوگ از پردازنده مرکزی به دست آوریم.
همانطور که قبلاً اشاره کردم، ما به راهی برای نمایش ریاضی منطق دیجیتال نیاز داریم. ابتدا منطق سنتی ریاضی را معرفی می کنیم. با استفاده از جبر خطی، بیت های کلاسیک با مقادیر "1" و "0" را می توان به صورت دو بردار ستونی نشان داد:
جایی که اعداد سمت چپ هستند
هویت | دگرگونی هویت |
نفی | انکار |
ثابت-0 | محاسبه ثابت "0" |
ثابت-1 | محاسبه ثابت "1" |
بر اساس نمایش جدید پیشنهادی ما از یک بیت، انجام عملیات روی بیت مربوطه با استفاده از تبدیل برداری بسیار آسان است:
قبل از حرکت بیشتر، بیایید به مفهوم نگاه کنیم
با
اکنون که تقریباً تمام مفاهیم ریاضی لازم را داریم، بیایید به اولین دروازه منطق کوانتومی خود برویم. این اپراتور است
این عملگر را می توان به صورت بردار تبدیل زیر نشان داد:
برای نشان دادن همه چیزهایی که تاکنون پوشش دادهایم، نحوه استفاده از عنصر CNOT را در چند بیت به شما نشان میدهم:
برای خلاصه کردن آنچه قبلاً گفته شد: در مثال اول، | سپس با توجه به جدول مقادیر CNOT که قبلا داده شد، آن را به |10⟩ فاکتور می کنیم.
بنابراین، ما تمام قوانین ریاضی را که به ما در درک محاسبات سنتی و بیتهای معمولی کمک میکنند، به خاطر آوردهایم و در نهایت میتوانیم به محاسبات کوانتومی مدرن و کیوبیتها برویم.
اگر تا اینجا خوانده اید، پس من یک خبر خوب برای شما دارم: کیوبیت ها را می توان به راحتی به صورت ریاضی بیان کرد. به طور کلی، اگر یک بیت کلاسیک (cbit) را بتوان روی |1⟩ یا |0⟩ تنظیم کرد، کیوبیت به سادگی در برهم نهی است و می تواند هم |0⟩ و هم |1⟩ قبل از اندازه گیری باشد. پس از اندازه گیری، به |0⟩ یا |1⟩ جمع می شود. به عبارت دیگر، یک کیوبیت را می توان به صورت ترکیب خطی از |0⟩ و |1⟩ مطابق فرمول زیر نشان داد:
جایی که a₀ и a1 به ترتیب دامنه های |0⟩ و |1⟩ را نشان می دهند. اینها را می توان به عنوان "احتمالات کوانتومی" در نظر گرفت، که نشان دهنده احتمال فروپاشی کیوبیت به یکی از حالات پس از اندازه گیری است، زیرا در مکانیک کوانتومی یک جسم در برهم نهی پس از ثابت شدن به یکی از حالات فرو می ریزد. بیایید این عبارت را گسترش دهیم و موارد زیر را بدست آوریم:
برای ساده کردن توضیحاتم، این نمایشی است که در این مقاله استفاده خواهم کرد.
برای این کیوبیت، شانس سقوط به مقدار است a₀ بعد از اندازه گیری برابر است با |a₀|²، و احتمال سقوط به مقدار a₁ برابر است با |a₁|². به عنوان مثال، برای کیوبیت زیر:
شانس سقوط به "1" برابر است با |1/ √2|²، یا ½، یعنی 50/50.
از آنجایی که در سیستم کلاسیک همه احتمالات باید با یک جمع شوند (برای توزیع احتمال کامل)، میتوان نتیجه گرفت که مجذور مقادیر مطلق دامنههای |0⟩ و |1⟩ باید به یک جمع شوند. بر اساس این اطلاعات می توانیم معادله زیر را فرموله کنیم:
اگر با مثلثات آشنایی داشته باشید، متوجه خواهید شد که این معادله با قضیه فیثاغورث مطابقت دارد (a²+b²=c²)، یعنی می توانیم حالت های ممکن کیوبیت را به صورت گرافیکی به صورت نقاط روی دایره واحد نمایش دهیم، یعنی:
عملگرها و عناصر منطقی به همان شیوه ای که در وضعیت بیت های کلاسیک وجود دارد - بر اساس تبدیل ماتریس - به کیوبیت ها اعمال می شوند. تمام عملگرهای ماتریس معکوس که تا کنون به یاد آورده ایم، به ویژه CNOT، می توانند برای کار با کیوبیت ها استفاده شوند. چنین عملگرهای ماتریسی به شما این امکان را می دهند که از هر یک از دامنه های کیوبیت بدون اندازه گیری و جمع کردن آن استفاده کنید. بگذارید مثالی از استفاده از عملگر نفی در یک کیوبیت به شما بزنم:
قبل از ادامه، اجازه دهید به شما یادآوری کنم که دامنه مقادیر است a₀ و a₁ در واقع هستند
با این حال، برای سادهتر شدن توضیح، در اینجا خود را به اعداد واقعی محدود میکنیم.
به نظر می رسد زمان آن است که برخی از عناصر منطقی را که صرفاً در زمینه محاسبات کوانتومی معنا دارند، مورد بحث قرار دهیم.
یکی از مهمترین عملگرها "عنصر هادامارد" است: کمی در حالت "0" یا "1" قرار می گیرد و آن را در برهم نهی مناسب با احتمال 50٪ فروپاشی به "1" یا "0" قرار می دهد. پس از اندازه گیری
توجه کنید که یک عدد منفی در سمت راست پایین عملگر هادامارد وجود دارد. این به دلیل این واقعیت است که نتیجه اعمال عملگر به مقدار سیگنال ورودی بستگی دارد: - |1⟩ یا |0⟩، و بنابراین محاسبه برگشت پذیر است.
نکته مهم دیگر در مورد عنصر هادامارد برگشت پذیری آن است، یعنی می تواند یک کیوبیت در برهم نهی مناسب بگیرد و آن را به |0⟩ یا |1⟩ تبدیل کند.
این بسیار مهم است زیرا به ما توانایی تبدیل از یک حالت کوانتومی بدون تعیین وضعیت کیوبیت - و بر این اساس، بدون فروپاشی آن را می دهد. بنابراین، ما می توانیم محاسبات کوانتومی را بر اساس یک اصل قطعی به جای یک اصل احتمالی ساختار دهیم.
عملگرهای کوانتومی که فقط شامل اعداد واقعی هستند، متضاد خودشان هستند، بنابراین ما میتوانیم نتیجه اعمال عملگر به کیوبیت را به صورت تبدیل در دایره واحد در قالب یک ماشین حالت نمایش دهیم:
بنابراین کیوبیتی که وضعیت آن در نمودار بالا نشان داده شده است، پس از اعمال عملیات هادامارد، به حالتی تبدیل می شود که با فلش مربوطه نشان داده شده است. به همین ترتیب، ما میتوانیم ماشین حالت دیگری بسازیم که تبدیل یک کیوبیت را با استفاده از عملگر نفی همانطور که در بالا نشان داده شده است (همچنین به عنوان عملگر نفی پائولی یا وارونگی بیت شناخته میشود) نشان میدهد.
برای انجام عملیات پیچیدهتر روی کیوبیت، میتوانیم چندین عملگر را زنجیرهای کنیم یا عناصر را چندین بار اعمال کنیم. نمونه ای از تبدیل سریال بر اساس
یعنی اگر با بیت |0⟩ شروع کنیم، یک بیت وارونگی اعمال کنیم، و سپس یک عملیات هادامارد، سپس یک معکوس بیت دیگر، و دوباره یک عملیات هادامارد، و به دنبال آن یک معکوس بیت نهایی، به بردار داده شده توسط on ختم میشویم. سمت راست زنجیر با لایهبندی ماشینهای حالت مختلف روی هم، میتوانیم از |0⟩ شروع کنیم و فلشهای رنگی مربوط به هر یک از تبدیلها را دنبال کنیم تا بفهمیم همه اینها چگونه کار میکنند.
از آنجایی که تا اینجا پیش رفته ایم، زمان آن رسیده است که یکی از انواع الگوریتم های کوانتومی را در نظر بگیریم، یعنی -
بیایید تصور کنیم که شما یک جعبه سیاه دارید که حاوی یک تابع/عملگر در یک بیت است (به یاد داشته باشید - با یک بیت، تنها چهار عملیات را می توان انجام داد: تبدیل هویت، نفی، ارزیابی ثابت "0" و ارزیابی ثابت "1" "). عملکرد انجام شده در جعبه دقیقا چیست؟ شما نمی دانید کدام یک، اما می توانید هر تعداد که دوست دارید از انواع مقادیر ورودی عبور کرده و نتایج خروجی را ارزیابی کنید.
چند ورودی و خروجی باید از طریق جعبه سیاه اجرا کنید تا بفهمید از کدام تابع استفاده می شود؟ برای یک لحظه راجع بهش فکر کن.
در مورد یک کامپیوتر کلاسیک، برای تعیین عملکرد مورد استفاده باید 2 پرس و جو ایجاد کنید. به عنوان مثال، اگر ورودی "1" یک خروجی "0" تولید کند، مشخص می شود که یا از تابع محاسبه ثابت "0" یا تابع نفی استفاده می شود، پس از آن باید مقدار سیگنال ورودی را تغییر دهید. به "0" بروید و ببینید در خروجی چه اتفاقی می افتد.
در مورد یک کامپیوتر کوانتومی، دو پرس و جو نیز مورد نیاز خواهد بود، زیرا شما همچنان به دو مقدار خروجی مختلف برای تعریف دقیق تابع برای اعمال به مقدار ورودی نیاز دارید. با این حال، اگر سوال را کمی فرموله کنید، معلوم میشود که کامپیوترهای کوانتومی هنوز یک مزیت جدی دارند: اگر میخواهید بدانید که آیا تابع مورد استفاده ثابت است یا متغیر، رایانههای کوانتومی این مزیت را خواهند داشت.
در صورتی که مقادیر مختلف سیگنال ورودی نتایج متفاوتی را در خروجی ایجاد کند (مثلاً تبدیل هویت و وارونگی بیت) تابع مورد استفاده در کادر متغیر است و اگر مقدار خروجی بدون توجه به مقدار ورودی تغییر نکند، تابع ثابت است (به عنوان مثال، محاسبه ثابت "1" یا محاسبه ثابت "0").
با استفاده از یک الگوریتم کوانتومی، می توانید تعیین کنید که آیا یک تابع در یک جعبه سیاه تنها بر اساس یک پرس و جو ثابت است یا متغیر. اما قبل از اینکه نحوه انجام این کار را با جزئیات بررسی کنیم، باید راهی برای ساختار هر یک از این توابع در یک کامپیوتر کوانتومی پیدا کنیم. از آنجایی که هر عملگر کوانتومی باید معکوس باشد، بلافاصله با یک مشکل روبرو می شویم: توابع محاسبه ثابت های "1" و "0" نیستند.
یک راه حل رایج که در محاسبات کوانتومی استفاده می شود، اضافه کردن یک کیوبیت خروجی اضافی است که هر مقدار ورودی را که تابع دریافت می کند، برمی گرداند.
قبل از: | بعد از: |
به این ترتیب می توانیم مقادیر ورودی را صرفاً بر اساس مقدار خروجی تعیین کنیم و تابع معکوس می شود. ساختار مدارهای کوانتومی نیاز به یک بیت ورودی اضافی را ایجاد می کند. به منظور توسعه عملگرهای مربوطه، فرض می کنیم که کیوبیت ورودی اضافی روی |0⟩ تنظیم شده است.
با استفاده از همان نمایش مدار کوانتومی که قبلا استفاده کردیم، بیایید ببینیم که چگونه هر یک از چهار عنصر (تبدیل هویت، نفی، ارزیابی ثابت "0" و ارزیابی ثابت "1") را می توان با استفاده از عملگرهای کوانتومی پیاده سازی کرد.
به عنوان مثال، به این صورت می توانید تابع محاسبه ثابت "0" را پیاده سازی کنید:
محاسبه ثابت "0":
در اینجا ما اصلاً نیازی به اپراتور نداریم. اولین کیوبیت ورودی (که ما فرض کردیم | 0⟩) با همان مقدار برمیگردد، و مقدار ورودی دوم خودش را برمیگرداند - طبق معمول.
با تابع برای محاسبه ثابت "1" وضعیت کمی متفاوت است:
محاسبه ثابت "1":
از آنجایی که فرض کردهایم اولین کیوبیت ورودی همیشه روی |0⟩ تنظیم میشود، نتیجه اعمال عملگر وارونگی بیت این است که همیشه یک عدد در خروجی تولید میکند. و طبق معمول کیوبیت دوم مقدار خودش را در خروجی می دهد.
هنگام نقشه برداری از عملگر تبدیل هویت، کار شروع به پیچیده تر شدن می کند. در اینجا نحوه انجام آن آمده است:
تبدیل یکسان:
نماد استفاده شده در اینجا عنصر CNOT را نشان می دهد: خط بالا نشان دهنده بیت کنترل و خط پایین نشان دهنده بیت کنترل است. به شما یادآوری می کنم که هنگام استفاده از عملگر CNOT، اگر بیت کنترل برابر با |1⟩ باشد، مقدار بیت کنترل تغییر می کند، اما اگر بیت کنترل برابر با |0⟩ باشد، بدون تغییر باقی می ماند. از آنجایی که فرض کردیم مقدار خط بالایی همیشه برابر با |0⟩ است، مقدار آن همیشه به خط پایین نسبت داده می شود.
با عملگر نفی به روشی مشابه ادامه می دهیم:
نفی:
ما به سادگی بیت را در انتهای خط خروجی معکوس می کنیم.
اکنون که این درک اولیه را از سر راه برداشتهایم، بیایید به مزایای خاص یک کامپیوتر کوانتومی نسبت به رایانههای سنتی نگاهی بیندازیم، زمانی که نوبت به تعیین ثبات یا تغییرپذیری یک تابع پنهان در یک جعبه سیاه تنها با استفاده از یک پرس و جو میرسد.
برای حل این مشکل با استفاده از محاسبات کوانتومی در یک درخواست، لازم است که کیوبیتهای ورودی را قبل از ارسال به تابع در یک برهمنهی قرار دهید، مانند شکل زیر:
عنصر هادامارد مجدداً به نتیجه تابع اعمال میشود تا کیوبیتها را از برهم نهی شکسته و الگوریتم را قطعی کند. سیستم را در حالت |00⟩ شروع می کنیم و به دلایلی که به زودی توضیح خواهم داد، اگر تابع اعمال شده ثابت باشد، نتیجه |11⟩ را دریافت می کنیم. اگر تابع داخل جعبه سیاه متغیر باشد، پس از اندازه گیری، سیستم نتیجه |01⟩ را برمی گرداند.
برای درک بقیه مقاله، بیایید به تصویری که قبلا نشان دادم نگاه کنیم:
با استفاده از عملگر معکوس بیت و سپس اعمال عنصر Hadamard برای هر دو مقدار ورودی برابر با |0⟩، اطمینان حاصل می کنیم که آنها به همان برهم نهی |0⟩ و |1⟩ ترجمه می شوند، به صورت زیر:
با استفاده از مثال ارسال این مقدار به یک تابع جعبه سیاه، به راحتی می توان نشان داد که هر دو تابع مقدار ثابت خروجی |11⟩ هستند.
محاسبه ثابت "0":
به طور مشابه، می بینیم که تابع محاسبه ثابت "1" نیز |11⟩ را به عنوان خروجی تولید می کند، یعنی:
محاسبه ثابت "1":
توجه داشته باشید که خروجی |1⟩ خواهد بود، زیرا -1² = 1.
با همین اصل، میتوانیم ثابت کنیم که هنگام استفاده از هر دو تابع متغیر، همیشه |01⟩ در خروجی دریافت میکنیم (به شرطی که از روش مشابهی استفاده کنیم)، اگرچه همه چیز کمی پیچیدهتر است.
تبدیل یکسان:
از آنجایی که CNOT یک عملگر دو کیوبیتی است، نمی توان آن را به عنوان یک ماشین حالت ساده نشان داد، و بنابراین لازم است دو سیگنال خروجی بر اساس حاصل ضرب تانسور هر دو کیوبیت ورودی و ضرب توسط ماتریس CNOT همانطور که قبلا توضیح داده شد، تعریف کنیم:
با این روش همچنین می توانیم تأیید کنیم که اگر تابع نفی در جعبه سیاه پنهان باشد، مقدار خروجی |01⟩ دریافت می شود:
نفی:
بنابراین، ما وضعیتی را نشان دادیم که در آن یک کامپیوتر کوانتومی به وضوح کارآمدتر از یک کامپیوتر معمولی است.
بعدی چیست؟
پیشنهاد می کنم همین جا تمام کنیم. ما قبلاً کار بزرگی انجام دادیم. اگر همه چیزهایی را که پوشش دادهام متوجه شدهاید، فکر میکنم اکنون درک خوبی از مبانی محاسبات کوانتومی و منطق کوانتومی دارید، و اینکه چرا الگوریتمهای کوانتومی میتوانند در موقعیتهای خاص کارآمدتر از محاسبات سنتی باشند.
توصیف من به سختی می تواند راهنمای کاملی برای محاسبات کوانتومی و الگوریتم ها نامیده شود - بلکه مقدمه ای کوتاه برای ریاضیات و نمادگذاری است که برای از بین بردن ایده های خوانندگان در مورد موضوع تحمیل شده توسط منابع علمی رایج طراحی شده است (به طور جدی، بسیاری واقعاً نمی توانند درک کنند. موقعیت!). وقت نداشتم به خیلی از موضوعات مهم مثل
اگر می خواهید دانش خود را در مورد رایانه های کوانتومی سیستماتیک و ساختار دهید، به شدت توصیه میکنم مطالعه کنید
منبع: www.habr.com