«Менің ойымша, ешкім кванттық механиканы түсінбейді деп айта аламын.» - Ричард Фейнман
Кванттық есептеулер тақырыбы әрқашан технологиялық жазушылар мен журналистерді қызықтырды. Оның есептеу әлеуеті мен күрделілігі оған белгілі бір мистикалық аура берді. Көбінесе мақалалар мен инфографика осы саланың әртүрлі перспективаларын егжей-тегжейлі сипаттайды, бірақ оның практикалық қолданылуына әрең тоқталады: бұл аз зейінді оқырманды адастыруы мүмкін.
Танымал ғылыми мақалаларда кванттық жүйелердің сипаттамасы жоқ және келесідей мәлімдемелер жасалады:
Тұрақты бит 1 немесе 0 болуы мүмкін, бірақ кубит бір уақытта 1 және 0 болуы мүмкін.
Егер сіз өте бақытты болсаңыз (мен оған сенімді емеспін), сізге мынаны айтады:
Кубит «1» мен «0» арасындағы суперпозицияда.
Бұл түсініктемелердің ешқайсысы ақылға қонымды болып көрінбейді, өйткені біз өте дәстүрлі әлемде дамыған тілді пайдалана отырып, кванттық механикалық құбылысты тұжырымдауға тырысамыз. Кванттық есептеулердің принциптерін нақты түсіндіру үшін басқа тілді – математикалық тілді қолдану қажет.
Бұл оқулықта мен кванттық есептеу жүйелерін модельдеу және түсіну үшін қажетті математикалық құралдарды, сондай-ақ кванттық есептеулердің логикасын суреттеу және қолдану жолдарын қарастырамын. Сонымен қатар, мен кванттық алгоритмге мысал келтіремін және оның дәстүрлі компьютерден артықшылығы неде екенін айтамын.
Мен мұның бәрін түсінікті тілмен түсіндіруге бар күшімді саламын, бірақ мен әлі де осы мақаланың оқырмандары сызықтық алгебра және цифрлық логика (сызықтық алгебра қамтылған) туралы негізгі түсінікке ие болады деп үміттенемін.
Алдымен, сандық логика принциптерін қарастырайық. Ол есептеулерді жүргізу үшін электр тізбектерін пайдалануға негізделген. Сипаттамамызды неғұрлым дерексіз ету үшін электр сымының күйін «қосу» немесе «өшіру» күйлеріне сәйкес келетін «1» немесе «0» күйіне жеңілдетейік. Транзисторларды белгілі бір ретпен орналастыру арқылы біз логикалық элементтер деп аталатын элементтерді жасаймыз, олар бір немесе бірнеше кіріс сигналының мәндерін қабылдайды және оларды логикалық логиканың белгілі бір ережелеріне негізделген шығыс сигналына түрлендіреді.
Жалпы логикалық қақпалар және олардың күй кестелері
Осындай негізгі элементтердің тізбегіне сүйене отырып, күрделірек элементтерді құруға болады, ал күрделірек элементтер тізбегіне сүйене отырып, біз түпкілікті абстракцияның үлкен дәрежесімен орталық процессордың аналогын алуды күтуге болады.
Жоғарыда айтқанымдай, бізге сандық логиканы математикалық түрде көрсету тәсілі қажет. Алдымен, математикалық дәстүрлі логиканы енгізейік. Сызықтық алгебраны пайдалана отырып, «1» және «0» мәндері бар классикалық биттерді екі баған векторы ретінде көрсетуге болады:
сол жақтағы сандар қайда
Identity | Сәйкестікті түрлендіру |
Терістеу | Бас тарту |
Тұрақты-0 | «0» тұрақтысын есептеу |
Тұрақты-1 | «1» тұрақтысын есептеу |
Біз ұсынған биттің жаңа көрінісіне сүйене отырып, векторлық түрлендіру арқылы сәйкес битпен операцияларды орындау өте оңай:
Әрі қарай қозғалмас бұрын, тұжырымдаманы қарастырайық
Көмегімен
Енді бізде барлық дерлік қажетті математикалық тұжырымдамалар бар, біз бірінші кванттық логикалық қақпаға көшейік. Бұл оператор
Бұл операторды келесі түрлендіру векторы ретінде көрсетуге болады:
Осы уақытқа дейін қарастырғандардың барлығын көрсету үшін мен сізге CNOT элементін бірнеше биттерде қалай пайдалану керектігін көрсетемін:
Айтылғандарды қорытындылау үшін: бірінші мысалда |10⟩ оның тензорлық өнімінің бөліктеріне ыдыратамыз және өнімнің жаңа сәйкес күйін алу үшін CNOT матрицасын қолданамыз; біз оны бұрын берілген CNOT мәндерінің кестесіне сәйкес |11⟩ көбейтеміз.
Осылайша, біз дәстүрлі есептеулер мен қарапайым биттерді түсінуге көмектесетін барлық математикалық ережелерді есте сақтадық және ақырында қазіргі кванттық есептеулер мен кубиттерге көшуге болады.
Егер сіз осы уақытқа дейін оқыған болсаңыз, онда менде сізге жақсы жаңалық бар: кубиттерді математикалық түрде оңай көрсетуге болады. Жалпы, егер классикалық бит (кбит) |1⟩ немесе |0⟩ мәніне орнатылса, кубит жай ғана суперпозицияда және өлшеу алдында |0⟩ және |1⟩ болуы мүмкін. Өлшегеннен кейін ол |0⟩ немесе |1⟩ күйіне түседі. Басқаша айтқанда, кубит төмендегі формулаға сәйкес |0⟩ және |1⟩ сызықтық комбинациясы ретінде ұсынылуы мүмкін:
қайда a₀ и а₁ сәйкесінше |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⟩ нәтижесін береді.
Мақаланың қалған бөлігін түсіну үшін мен бұрын көрсеткен суретті қарастырайық:
Битті инверсия операторын пайдаланып, содан кейін |0⟩ мәніне тең кіріс мәндерінің екеуіне де Hadamard элементін қолдану арқылы біз олардың |0⟩ және |1⟩ бірдей суперпозициясына келесідей аударылуын қамтамасыз етеміз:
Бұл мәнді қара жәшік функциясына беру мысалын пайдаланып, екі тұрақты мән функциясының да |11⟩ шығатынын көрсету оңай.
«0» тұрақтысын есептеу:
Сол сияқты, «1» тұрақтысын есептеу функциясы да |11⟩ шығысын шығаратынын көреміз, яғни:
«1» тұрақтысын есептеу:
Шығару |1⟩ болатынын ескеріңіз, өйткені -1² = 1.
Дәл сол принцип бойынша біз айнымалы функциялардың екеуін де пайдаланған кезде біз әрқашан шығыста |01⟩ алатынымызды дәлелдей аламыз (егер біз бір әдісті қолдансақ), бәрі біршама күрделірек.
Бірдей түрлендіру:
CNOT екі кубитті оператор болғандықтан, оны жай күй машинасы ретінде көрсету мүмкін емес, сондықтан кіріс кубиттерінің тензорлық өніміне және бұрын сипатталғандай CNOT матрицасына көбейтуге негізделген екі шығыс сигналын анықтау қажет:
Бұл әдіс арқылы біз қара жәшікте терістеу функциясы жасырылған болса, |01⟩ шығыс мәні алынғанын растай аламыз:
Бас тарту:
Осылайша, біз жай ғана кванттық компьютер әдеттегі компьютерге қарағанда тиімдірек болатын жағдайды көрсеттік.
Келесі не?
Мен осы жерде аяқтауды ұсынамын. Біз қазірдің өзінде тамаша жұмыс жасадық. Егер сіз мен қарастырғандардың барлығын түсінген болсаңыз, менің ойымша, сіз қазір кванттық есептеу және кванттық логика негіздерін жақсы түсіндіңіз және неге кванттық алгоритмдер белгілі бір жағдайларда дәстүрлі есептеулерге қарағанда тиімдірек болуы мүмкін.
Менің сипаттаманы кванттық есептеулер мен алгоритмдерге толыққанды нұсқаулық деп атауға болмайды - бұл, керісінше, танымал ғылыми көздер жүктеген пән туралы оқырмандардың идеяларын жоққа шығаруға арналған математика мен нотацияға қысқаша кіріспе (байыпты, көпшілігі шынымен мүмкін емес. жағдайды түсініңіз!). сияқты көптеген маңызды тақырыптарды қозғап үлгермедім
Егер сіз кванттық компьютерлер туралы біліміңізді жүйелеп, құрылымдағыңыз келсе, шұғыл Мен сізге оқуға кеңес беремін
Ақпарат көзі: www.habr.com