شاید مشابه این جمله را شنیده باشید: "کامپیوترهای کوانتومی توانایی انجام محاسباتی را دارند که اگر بخواهیم آنها را با بهترین کامپیوترهای امروزی انجام دهیم میلیونها سال طول خواهد کشید." این جمله چقدر درست است؟ آیا واقعا وقتی که دنیا به تکنولوژی کامپیوترهای کوانتومی دست پیدا کند دیگر نیازی به کامپیوترهای امروزی نداریم و همه کارها را میتوان با سرعتی به مراتب بیشتر با کامپیوترهای کوانتومی انجام داد؟ اظهار نظر در مورد آینده و اتفاقاتش معمولاً کار چندان عاقلانهای نیست، ولی در این مقاله سعی خواهم کرد با در نظر گرفتن سطح فعلی دانش جوابی برای این سوالات ارائه بدهم. اولین قدم برای این کار داشتن تعریفی از سرعت هست.
ممکن هست بگویید خوب این که بدیهی است: " کامپیوتری سریعتر است که برنامههایش را با سرعت بیشتری اجرا کند". این کمابیش درست است ولی در دنیای کامپیوتر دو راه متفاوت برای دستیابی به این هدف وجود دارد که در ادامه به بررسی آنها میپردازیم:
۱. سختافزاری که دستورالعملها را سریعتر اجرا کند
این همان اتفاقی است که در دهههای اخیر شاهد آن بودیم: افزایش تعداد ترانزیستورها روی تراشهها و پیچدگیهای جدید سختافزاری که در نهایت به سرعت بیشتر در انجام دستورالعملها انجامید. مقایسه سادهای بین سختافزار فعلی و بیست سال پیش به خوبی این نکته را نشان میدهد.
۲. الگوریتمهای سریعتر
توضیح این مورد اندکی سختتر است. اگر بخواهیم در یک جمله آن را توضیح دهیم میتوانیم بگوییم که "سرعت بیشتر نتیجه الگوریتمهای هوشمندانهتری است که سریعتر به جواب میرسند". همانطور که میدانید، برنامههای کامپیوتری مجموعهای از دستورالعملهای نوشته شده توسط که یک برنامه نویس هستند. کامپیوترها این دستورالعمل ها را خط به خط اجرا میکنند. به این دستورالعملها الگوریتم میگوییم. اگر برنامهنویسی از راه حلی هوشمندانهتر برای نوشتن الگوریتم خود استفاده کند که نیاز به مراحل کمتری داشته باشد در نهایت برنامهای سریعتر خواهیم داشت. به عنوان مثال معمای معروف زیر را در نظر بگیرید.
فرض کنید ۶۴ ساچمه فلزی هم شکل و یک ترازوی دو کفه ای در اختیار دارید. ۶۳ عدد از این ساچمهها هم وزن هستند ولی یکی از آنها سنگینتر از بقیه است. چطور با کمترین استفاده از ترازو ساچمه سنگینتر را پیدا کنیم؟
یک راه حل ساده این است که یکی از ساچمهها را انتخاب کنیم. بعد تک تک ساچمههای دیگر را با آن روی کفههای مخالف ترازو قرار دهیم. اگر هم وزن بودند ساچمه دیگری را انتخاب کنیم و این کار را تکرار کنیم و اگر نبودند ساچمه سنگینتر همانی است که به دنبالش بودیم. اگر خوش شانس باشیم با همان انتخاب اول ممکن است که بتوانیم جواب را پیدا کنیم. ولی در روشهای علمی هیچ وقت نباید خیلی روی شانس حساب کرد. یک محاسبه آماری ساده نشان میدهد که به احتمال زیاد باید بیش از۳۰ این کار را تکرار کنیم.
حال برویم سراغ روش بهتر: ساچمهها را به دو دسته ۳۲ تایی تقسیم کنید و هر دسته را روی یک کفه ترازو بگذارید. ساچمههای کفه سبکتر را کنار بگذارید (زیرا میدانیم ساچمه سنگینتر باید بین ۳۲ تای سنگینتر باشد). حالا ۳۲ تا ساچمه داریم که یکی از آنها سنگینتر است. همین کار را تکرار کنید. در مرحله بعد ۱۶ تا ساچمه داریم، و بعد ۸ و ۴ و ۲و ۱. بله تنها با ۶ بار وزن کردن (به جای ۳۰ بار) توانستیم ساچمه سنگینتر را پیدا کنیم. این روش وقتی جالبتر میشود که مثلاً ۱ میلیون ساچمه داشته باشید. با روش اول باید چند صدهزار بار از ترازو استفاده کنید، ولی در روش دوم با کمتر از بیست بار میتوانید ساچمه سنگینتر را پیدا کنید.
این گونه از سریعتر بودن، که به سریعتر بودن الگوریتمی شهرت دارد، اهمیت بسیار بالایی در علوم کامپیوتر دارد (سرعت سختافزاری بیشتر مورد توجه متخصصین سختافزار است). در دنیای کامپیوتر خیلی وقتها با دادههای به مراتب بزرگی سر و کار داریم. الگوریتمهای هوشمندانه برای رسیدن به جواب در زمان کوتاهتر میتوانند تاثیر تعیین کنندهای در قابل استفاده بودن یا نبودن یک نرمفزار داشته باشند. سختافزار سریعتر ممکن است بتواند سرعت انجام کاری را ۱۰ یا حتی ۱۰۰ برابر سریعتر کند ولی الگوریتم سریعتر در دنیای دادههای با حجم نجومی همیشه دست بالا را خواهد داشت. به همین دلیل هم در مصاحبههای استخدام برنامهنویسان تاکید جدی بر روی توانایی آنها در پیدا کردن الگوریتمهای هوشمندانهتری برای مسائل روزمره دنیای برنامهنویسی وجود دارد. برای نمونه شاید نگاهی به الگوریتمهای مرتبسازی برای خواننده خالی از لطف نباشد.
کامپیوترهای کوانتومی از اصول فیزیکی کاملاً متفاوتی برای انجام دستورات الگوریتمی خود استفاده میکنند. در مورد اینکه آیا سختافزار کامپیوترهای کوانتومی خواهند توانست سریعتر از سختافزار معمولی باشد جواب روشنی نداریم زیرا کامپیوترهای کوانتومی هنوز در مراحل آزمایشگاهی خود هستند. ولی همانطور که گفتیم سرعت سختافزاری معمولاً محدودیت دارد و نمیتواند از عدد ثابتی (هر چند بزرگ) فراتر برود. مزیت اصلی کامپیوترهای کوانتومی در استفاده از الگوریتمهایی است که از اصل برهم نهی استفاده میکنند (این مقاله به توضیح این مطلب می پردازد) که در کامپیوترهای امروزی غیرممکن است.
استفاده از اصل برهم نهی به کامپیوترهای کوانتومی اجاره میدهد الگوریتمهایی داشته باشند که بعضی کارها را سریعتر از کامپیوترهای معمولی انجام میدهند. نکته کلیدی جمله آخر واژه "بعضی" بود. علاوه بر آن میزان سریعتر بودن نیز مهم است. کامپیوترهای کوانتومی کارهایی مثل شکستن کد رمزنگاری آراسای (RSA) را بسیار بسیار سریعتر از کامپیوترهای معمولی انجام میدهند، در جستجو اندکی بهتر از کامپیوترهای معمولی هستند، و در مرتبسازی دادهها هیچ مزیت قابل توجهی بر کامپیوترهای معمولی ندارند. متاسفانه تعداد زیادی از الگوریتمهایی که به صورت روزمره از آنها استفاده میکنیم در دسته آخر قرار میگیرند.
آیا نتیجه پاراگراف بالا این است که توجه روزافزون مجامع علمی به کامپیوترهای کوانتومی جوگیری علمی است؟ جواب این سوال بستگی به ادعاهای مطرح شده دارد. در درجه اول باید گفت که دستیابی به کامپیوتر کوانتومی، صرف نظر از کاربردهایش، دستاورد علمی بسیار بزرگی برای جامعه بشری خواهد بود. دوم اینکه شاید کامپیوترهای کوانتومی نقشی محوری در برنامههای کامپیوتری که در زندگی روزمره استفاده میکنیم نداشته باشند، ولی همچنان کارگشایی عظیمی در زمینههای علمی خاصی از جمله شبیه سازی فرایندهای شیمی آلی خواهند داشت. سومین نکته استفاده از ارتباطات کوانتومی بر مبنای دورنوردی کوانتومی است که معنای جدیدی به امنیت در تبادل دادهها خواهد داد. یکی دیگر از نکات قابل توجه کامپیوترهای کوانتومی برگشتپذیر بودن محاسبات آنهاست. این به این معناست که، حداقل از لحاظ نظری، این الگوریتمها انرژی بسیار کمتری را برای انجام محاسبات خود لازم دارند. در دنیای امروز که مصرف انرژی مرکز دادههای بزرگ شرکت هایی مثل فیسبوک و گوگل هر روز در حال افزایش، کامپیوترهای کوانتومی شاید بتوانند راهحلی موضعی برای مقابله با تغییرات اقلیمی و گرمایش زمین باشند.
در پایان، مهمترین نکته اینکه پیشبینی آینده کاری بسیار مشکل و پر خطاست. به طور قطع با پیدایش کامپیوترهای کوانتومی کاربردهای جدیدی برای آنها پیدا خواهد شد که تصور آن شاید در شرایط فعلی برای ما مقدور نباشد.