Квантова суперпозиция на тигър и мечка

Ето снимка на тигър и мечка, насложени един на друг. Въпреки че има много начини, по които човек може да се опита да постигне този ефект, използвах доста екзотичен: създадох квантов суперпозиция от тях на квантов компютър.

Преди да разгледаме какви са квантовите компютри, нека да направим бърз грунд върху по-познатите. Нормалните компютри са изградени от битове: малки парчета информация, които могат да приемат стойността 0 или 1.

Битовете също могат да бъдат комбинирани за създаване на битови низове, като 0001 или 0010. Това са мощен начин за кодиране на почти всякаква информация. Най-простият пример е използването им за числа: 1 е 1, 10 е 2, 100 е 4 и така нататък за всички сили на 2 и всичко между тях.

Квантовите компютри са направени от кубити. Подобно на битовете, те могат да приемат стойностите 0 и 1 и можем да ги комбинираме, за да направим и низове. Ако искахме, просто бихме могли да използваме кубити като алтернативен тип бит.

Това би било доста скъпо да се направи, тъй като кубитите се нуждаят от много повече грижи и внимание, отколкото бит. Но тъй като IBM предлага прототипни квантови процесори безплатно в облака, не ние ще трябва да платим разходите.

Така че нека да напишем някои неща с кубити!

Най-лесното нещо за писане са числата, но те са малко скучни. Така че нека вместо това да прегледаме текст. Стандартът ASCII предоставя начин за присвояване на низове от букви, цифри и препинателни знаци в низове от битове. Това означава, че можем да използваме 16-кубитовото облачно устройство на IBM за кодиране на някои емотикони.

Ето няколко емоционални низове, които бихме могли да използваме.

;) = 00111011 00101001 8) = 00111000 00101001

Явно не получаваме пълните предимства на кубитите, когато просто ги използваме за емотикони. Това идва не от това как кодираме информация, а от това как манипулираме с нея. Вместо да се ограничаваме до стандартните логически порти в сърцето на нормалните компютри, можем да правим и по-сложни квантови операции.

В някакъв смисъл тези операции могат да позволят на кубит да бъде едновременно 0 и 1: квантова суперпозиция. След това квантовите компютри могат да използват тези суперпозиции, за да създадат смущаващи ефекти, точно както виждаме, когато вълните се налагат. След това тези ефекти могат да бъдат използвани в нашите квантови програми, което ни позволява да намерим по-къси маршрути между вход и изход.

Но ако се върнем просто да се забъркваме с емотикони, можем да използваме тази функционалност, за да създадем суперпозиция от;) и 8).

Когато правим това, извличаме изхода директно от суперпозицията. Поради това не виждаме никаква тънкост на намесата. Вместо това той просто служи като генератор на случайни битови низове за;) и 8). Тези произволни изходи, комбинирани с Matplotlib, след това могат да бъдат използвани за конструиране на изображение, което да представи суперпозицията.

Сега нека използваме същия принцип, но направете нещо по-сложно от просто емотикони. Нека суперпозираме снимки!

За целта трябва да дадем на снимките двоично кодиране. За даден набор от двоични низове ние присвояваме на всяко определено изображение. Това всъщност просто означава, че ще вземем куп файлове с изображения и ще им дадем двоични низове като имена на файлове.

Приписване на https://github.com/decodoku/Quantum_Programming_Tutorial/blob/master/image-superposer/images/License

Избрах да използвам куп снимки на животни от Wikimedia Commons. С прости (но не твърде прости) низове от четири бита можем да имаме 16 различни изображения.

Сега всичко, което трябва да направим, е да изберем две изображения, които да се наслаждават. Например отидох за 0010 (мечката) и 0001 (тигърът). След като този избор е направен, ние знаем кои битови низове трябва да създадем квантова суперпозиция.

Създаването на суперпозицията изисква да кажем на някои кубити какво да правим. За това се нуждаем от квантова програма. Ще трябва да го изпратим и на квантов процесор, защото там живеят кубитите. За щастие нито едно от тези неща не е толкова страшно, колкото звучи!

По-голямата част от програмирането вече е настроена за вас в тетрадка на Юпитер. Това настройва заданието и го изпраща до едно от квантовите устройства на IBM, използвайки QISKit квантовия SDK.

Резултатът трябва да изплюе двата избрани резултата с вероятност 50/50. Но вместо да разчитаме само на математиката, за да прогнозираме какво ще прави квантовият компютър, нека всъщност да накараме човек да го направи. Ще стартираме програмата многократно и ще използваме резултатите за оценка на вероятностите. След това те ще бъдат използвани за смесване на изображенията в средно претеглена стойност, като силата на всяко изображение е дадена от вероятността за неговото име на файл.

Единствената част, която липсва в бележника, е най-важната част: настройка на суперпозицията. Това е квантовото сърце на програмата и тя е частта, която ще трябва да промените, ако искате да наложите различна двойка изображения. Но не се притеснявайте, аз направих една игра да ви помогне през нея.

Режимът на суперпоздравене на изображенията в тази игра ще ви позволи да изберете имената на файловете и ще ви води през процеса на тяхното суперпониране.

С това написах фрагмента на кода, необходим за създаването на суперпозицията ми на тигър и мечка. Тогава използвах тетрадката на Юпитер, за да изпратя заданието до истинско квантово устройство. И накрая получих изображение.

Половина тигър и половина мечка, или тези. Поради шума в настоящите квантови устройства има и леки следи от други животни. Те възникват, защото квантовият компютър от време на време изплюва грешно имената им на файлове. Най-виден е носорог, чийто рог може да се види точно над дясната лапа на мечката.

Сега имате всичко необходимо, за да създадете свое собствено квантово изкуство. Ако не харесвате избраните от мен изображения, просто намерете 16 свои собствени и вместо това им дайте бинарните имена. Но ако изпратите на любимата си заедно квантова суперпозиция, пазете се от фотобомбите, причинени от квантовия шум!