Kuantum Yolculuğu #4 — Arama: Samanlıkta İğneyi Saniyede Bulmak

Kuantum Yolculuğu #4 — Arama: Samanlıkta İğneyi Saniyede Bulmak

Serideki Makaleler:

1 milyon kişilik bir telefon rehberi düşünün. Sıralanmamış. İsimlere göre değil, numaralara göre değil tamamen rastgele. Bir numarayı arıyorsunuz.

Klasik bilgisayar ne yapar? Tek tek bakar. Ortalama 500.000 deneme. Şanslıysanız erken bulursunuz, şanssızsanız en sona kalır.

Kuantum bilgisayar ne yapar? 1000 deneme. 500.000 değil. 1000.

Bu, Grover algoritmasının gücünü göstermektedir.

Peki bu hız nereden geliyor?

Klasik bilgisayar tek tek deneme yapar çünkü her seferinde bir elemanı kontrol edebilir.

Kuantum bilgisayar ise süperpozisyon sayesinde tüm olasılıkları aynı anda test edebilir. Ama bu yetmez. Doğru cevabı süperpozisyondaki milyonlarca olasılık arasından öne çıkarması gerekir. İşte Grover algoritması tam da bunu yapıyor. Doğru cevabın olasılığını sistematik olarak artırıyor, yanlış cevapların olasılığını azaltıyor.

Ancak bu işlemi yapabilmek için qubit’leri hassas bir şekilde kontrol etmeliyiz.

Süperpozisyon yaratmak, dolaşıklık oluşturmak, olasılıkları manipüle etmek… Bunların hepsi qubit’lere doğru “komutlar” vermekle mümkün. Bu komutlara kuantum kapıları diyoruz.

Bugün bir kuantum algoritmasının nasıl çalıştığını inceleyeceğiz ama önce, qubit’leri nasıl kontrol ettiğimizi anlamamız gerekiyor.

Kuantum Kapıları: Qubit’lere Komut Vermek

Klasik bilgisayarlarda AND, OR, NOT gibi mantık kapıları var.

NOT kapısı basit: 0’ı 1, 1’i 0 yapıyor. Tüm bilgisayar işlemleri bu basit kapıların kombinasyonundan oluşuyor.

Kuantum bilgisayarlarda da benzer bir yapı var: Kuantum kapıları.

Bu kapılar klasikten farklı. Çünkü:

  • Süperpozisyonu koruyabiliyorlar
  • Süperpozisyon yaratabiliyorlar
  • Dolaşıklık oluşturabiliyorlar

Şimdi gelin üç temel kapıyı tanıyalım.

X Kapısı (NOT Kapısı)

En basit kuantum kapısı. Klasik NOT ile aynı mantık.

  • 0’ı 1 yapıyor
  • 1’i 0 yapıyor

Süperpozisyondaki qubit’e uygulandığında süperpozisyonu bozmadan durumları değiştiriyor.

H Kapısı (Hadamard): Sihirli Kapı

Buna en önemli kuantum kapısı diyebiliriz.

Kesin bir durumu (mesela 0) alıp süperpozisyona sokuyor.

Masadaki parayı havaya fırlatmak gibi düşünün.

  • Girdi: Kesin 0
  • Çıktı: %50 ihtimalle 0, %50 ihtimalle 1 (süperpozisyon)

Bu kapı olmadan süperpozisyon yaratamazdık. Tüm kuantum algoritmalarının başlangıç noktası.

CNOT Kapısı (Kontrollü NOT): Bağlayıcı

Bu kapı iki qubit üzerinde çalışır:

  • İlk qubit: Kontrol
  • İkinci qubit: Hedef

Kural basit:

  • Kontrol qubit 1 ise → Hedef qubit tersine döner
  • Kontrol qubit 0 ise → Hedef qubit olduğu gibi kalır

Bu kapı dolaşıklık oluşturmak için kullanılıyor.

Dolaşıklık Nasıl Yaratılıyor?

İki qubit’i dolaşık hale getirme işlemi aşağıdaki gibi oluyor:

Başlangıç durumu: Elimizde iki qubit var. İkisi de 0 durumunda başlıyor. Bunu klasik bilgisayardaki iki bitin başlangıçta 00 olması gibi düşünebiliriz. Yani sistemimiz de şu anda: birinci qubit = 0, ikinci qubit = 0.

Adım 1: İlk qubit’e Hadamard kapısı uygula. Bu kapı sadece birinci qubit’i etkiliyor, ikinciye dokunmuyor. Birinci qubit’in kesin 0 olan durumunu alıp onu süperpozisyona sokuyor artık ölçülene kadar ne 0 ne 1, ikisinin kuantum süperpozisyonunda. İkinci qubit ise hâlâ kesin 0 durumunda, ona henüz hiçbir şey yapılmadı.

Yani bu adımdan sonra durum şöyle: birinci qubit = süperpozisyonda (0 ve 1 arasında), ikinci qubit = hâlâ 0.

Adım 2: CNOT kapısı uygula. Bu kapı şunu diyor: “Birinci qubit 1 ise, ikinci qubit’i çevir.” Burada kritik detay şu: ikinci qubit başlangıçta 0 durumunda.

İşte asıl önemli şey burada gerçekleşiyor. Birinci qubit süperpozisyonda olduğu için CNOT kapısı şöyle bir durum yaratıyor: “Birinci 0 ise ikinci çevrilmez, 0 kalır. Birinci 1 ise ikinci çevrilir, 0’dan 1’e döner.” Yani sonuç: birinci 0 ise ikinci de 0, birinci 1 ise ikinci de 1. Ama birinci henüz belirlenmedi bu yüzden ikinci qubit de belirsiz hale geliyor, üstelik birinciye bağlı şekilde belirsiz.

Artık iki qubit tek bir sistem. Birini ölçtüğünde 0 görürsen, diğeri kesinlikle 0. 1 görürsen, diğeri kesinlikle 1. Aralarında ışık yılları olsa bile. Ancak bu korelasyon ile ışıktan hızlı bilgi göndermek mümkün değildir ölçüm sonucu rastgeledir ve karşı taraf kendi ölçümünü yapmadan senin ne bulduğunu bilemez.

Hadamard belirsizlik yarattı, CNOT bu belirsizliği iki qubit arasında paylaştırdı. Dolaşıklık tam olarak bu: paylaşılan belirsizlik.

Grover Algoritması: Problem

Şimdi bu kapıları kullanarak gerçek bir problemi çözelim.

Problem: N elemanlı sıralanmamış bir listede bir elemanı arıyoruz.

Klasik çözüm: Tek tek bak. Ortalama N/2 deneme gerekiyor. 1 milyon elemanlı bir listede ortalama 500.000 kez bakmak lazım.

Kuantum çözüm (Grover): Sadece √N deneme. 1 milyon elemanlı listede sadece 1000 deneme.

Peki neden karekök? Şöyle düşünelim: Bir salıncaktayız. Her itişte salıncak biraz daha yükseliyor. Grover’da her adım bir itiş gibi. Doğru cevabın olasılığı her adımda biraz artıyor. Ama salıncak gibi bu da bir noktada zirveye ulaşıyor. Daha fazla itersen geri gelmeye başlıyor. İşte √N tam o zirve noktası. Ne eksik ne fazla, tam doğru cevabı bulma olasılığının en yüksek olduğu an.

Bu karekök hızlanma küçük sayılarda önemsiz görünebilir ama büyüdükçe fark devasa oluyor. 1 trilyon elemanda klasik bilgisayar 500 milyar deneme yaparken, kuantum bilgisayar 1 milyon denemeyle işi bitirebilir.

Oracle: Cevabı Bilmeyen Ama Tanıyan Kahin

Oracle, Grover algoritmasının kara kutusudur. Görevi basit: kendisine verilen bir durumun doğru cevap olup olmadığını kontrol etmek. Cevabı kendisi hesaplamıyor, sadece “evet bu o” ya da “hayır bu değil” diyor.

Ama burada kritik bir soru var: Oracle cevabı biliyorsa neden aramaya ihtiyacımız var?

İşte olay şu: Oracle cevabı bilmiyor. Oracle sadece senin verdiğin kriteri biliyor.

Şöyle düşünelim: Bir web sitesine giriş yapmaya çalışıyoruz. Şifremiz “kedi123” olsun. Sistem şifreyi düz metin olarak saklamıyor, onu alıp bir algoritmayla karıştırıp “a7f2b9c4e1” gibi bir hash değeri olarak saklıyor.

Şimdi bir hacker bu sisteme saldırmak istiyor. Elinde sadece “a7f2b9c4e1” hash değeri var. Şifrenin ne olduğunu bilmiyor. Ne yapıyor? Tahmin ediyor. “password” deniyor, hash’liyor, eşleşmedi. “123456” deniyor, hash’liyor, eşleşmedi. “kedi123” deniyor, hash’liyor, “a7f2b9c4e1” çıkıyor, eşleşti.

Sistem cevabı “bilmiyordu”. Sadece “bu hash eşleşiyor mu?” diye kontrol edebildi ama doğru şifreyi bulmak için yine de denemek gerekti.

Oracle işte bu hash kontrolü gibi. Sen Oracle’a “kedi123’ü ara” diyorsun, Oracle her denemeye bakıp “bu kedi123 mü?” diye kontrol ediyor. Cevabın ne olduğunu söyleyemiyor ama bir cevap verdiğinde doğru mu yanlış mı diyebiliyor.

Peki fiziksel olarak Oracle ne? Aslında özel tasarlanmış bir kuantum devresi. Her problem için farklı bir Oracle tasarlanıyor. Şifre kırma için başka, veritabanı araması için başka bir devre. Grover algoritması genel çerçeveyi veriyor, Oracle ise “hangi problemi çözüyoruz” sorusunun cevabı oluyor.

Klasik bilgisayar bu kontrolü tek tek yapıyor. Kuantum bilgisayar ise tüm olasılıkları süperpozisyona alıp Oracle’a aynı anda sorabiliyor. Oracle tüm listeye aynı anda “bu o mu?” diye bakıyor ve sadece doğru cevabı işaretliyor. Sonra Grover bu işaretli cevabı öne çıkarıyor.

Kısaca: Sen ne aradığını biliyorsun ve Oracle’a söylüyorsun. Oracle sadece “bu o mu?” kontrolünü yapıyor. Bilmediğin şey cevabın nerede olduğu. İşte Grover onu buluyor.

Peki Klasikten Farkı Ne?

İşte sihir burada.

Klasik bilgisayar tek tek kontrol ediyor. 0000’ı kontrol et, sonra 0001’i, sonra 0010’u… Her kontrol ayrı bir işlem. 16 olasılık için ortalama 8 kontrol gerekiyor.

Kuantum bilgisayarda ise qubit’ler süperpozisyonda. 4 qubit aynı anda 16 durumun hepsini temsil ediyor. Oracle tek seferde 16 durumun hepsini kontrol edebiliyor çünkü hepsi aynı anda mevcut. İşte kuantumun avantajı burada başlıyor.

Algoritma Nasıl Çalışıyor?

Birlikte adım adım yapalım. 4 qubit’imiz var, yani 16 olasılık. Aradığımız sayı 5 olsun.

Ama önce “genlik” kavramını anlayalım.

Klasik dünyada olasılık basittir. Bir zarı atarsın, her yüzün gelme şansı eşittir ve olasılıkları topladığında %100 eder. İki olasılık bir araya geldiğinde her zaman toplanır, asla birbirini iptal etmez.

Kuantum dünyasında ise olasılıkların arkasında bir katman daha var: genlik. Genliği şöyle düşünelim olasılığın “imzalı hali.” Olasılık her zaman pozitiftir ama genlik artı veya eksi olabiliyor. Olasılığı bulmak için genliğin karesini alıyorsun, bu yüzden eksi işareti kaybolup her zaman pozitif bir sonuç çıkıyor.

Peki eksi olabilmesi neden önemli? Çünkü genlikler dalgalar gibi davranıyor. İki dalga karşılaştığında birbirini güçlendirebilir ya da iptal edebilir. Aynı şey genlikler için de geçerli: +0.5 ile +0.5 bir araya gelince güçlenir, ama +0.5 ile -0.5 bir araya gelince birbirini sıfırlar. Buna girişim deniyor.

Grover’ın algoritması tam olarak bunu kullanıyor. Oracle adımı doğru cevabın genliğini eksiye çeviriyor, difüzyon adımı ise bu eksiyi kullanarak doğru cevabı güçlendirip yanlış cevapları zayıflatıyor. Eğer genlik diye bir şey olmasaydı, sadece klasik olasılık olsaydı, bu numara işlemezdi çünkü olasılıklar birbirini iptal edemez.

Kısacası genlik, kuantumun gizli defteri gibi. Arka planda genlikler birbirleriyle etkileşiyor, güçleniyor, zayıflıyor. Ölçüm yaptığında bu gizli defter kapanıyor ve sadece olasılık kalıyor.

Şimdi sayılara bakalım. Toplam olasılık her zaman 1 olmalı, yani %100. Olasılık = genlik² olduğuna göre, 16 eşit olasılık varsa: genlik² × 16 = 1, yani genlik = 0.25. Kontrol edelim: 0.25² = 0.0625 yani %6.25. Bunu 16 ile çarp: %100.

Başlangıç — Süperpozisyon: Hadamard kapısı uygulandı. 16 olasılığın hepsi eşit genlikte, yani 0.25. Her birinin bulunma olasılığı %6.25. Şöyle düşün: 16 kişi yan yana duruyor, hepsi aynı boyda.

Grover algoritması, Adım 0: süperpozisyonda 16 olasılığın eşit genlikleri

Adım 0

Adım 1 — Oracle İşaretliyor: Oracle “5’i arıyoruz” talimatını aldı. Tüm olasılıklara aynı anda bakıyor ve 5’i buluyor. Ne yapıyor? 5’in genliğini tersine çeviriyor, yani +0.25 iken -0.25 yapıyor. Dışarıdan bakınca hiçbir şey değişmemiş gibi görünüyor çünkü olasılık hâlâ aynı (eksi işareti karesi alınınca kayboluyor). Ama 5 artık “ters işaretli”, diğerlerinden farklı.

Grover algoritması, Adım 1: Oracle aranan durumun genliğini ters çeviriyor

Adım 1

Adım 2 — Difüzyon (Ortalamaya Göre Yansıtma): Şimdi sihirli adım geliyor. Önce tüm genliklerin ortalamasını alıyoruz. 15 tane +0.25 var, 1 tane -0.25 var. Ortalama yaklaşık 0.22 çıkıyor.

Grover algoritması, Adım 2: genliklerin ortalamaya göre yansıtılması

Adım 2

Sonra her genliği ortalamaya göre “yansıtıyoruz”. Bunu bir ayna gibi düşün. Ortalama (0.22) ayna. Her genlik aynaya olan uzaklığı kadar öteki tarafa gidiyor.

Normal elemanlar (genlik 0.25) aynaya yakın, yansıyınca biraz geriye düşüyorlar: 0.25’ten 0.19’a. Ama 5’in genliği -0.25, aynaya çok uzak. Yansıyınca öteki tarafa fırlıyor: -0.25’ten 0.69’a.

Tek bir adımda 5’in olasılığı %6’dan %47’ye fırladı. (0.69² ≈ 0.47)

Adım 3 — Tekrarla: Aynı işlemi tekrarlıyoruz. Oracle yine 5’i ters çeviriyor, difüzyon yine yansıtıyor. Her seferinde 5 biraz daha öne çıkıyor, diğerleri biraz daha geriye düşüyor.

Başlangıçta %6, birinci iterasyon sonrası %47, ikinci iterasyon sonrası %78, üçüncü iterasyon sonrası %92, dördüncü iterasyon sonrası %96.

Neden 4’te duruyoruz? Çünkü √16 = 4. Daha fazla devam etsen olasılık düşmeye başlar, salıncak geri gelir gibi. 4 tam o zirve noktası.

Grover algoritması, Adım 3: iterasyonların tekrarlanması

Adım 3

Adım 4 — Ölçüm: Ölçüm yapıyorsun. %96 ihtimalle 5 çıkıyor.

Bunu şöyle hayal edelim: Bir odada 16 kişi var, hepsi aynı boyda. Aradığın kişi içlerinden biri ama hangisi bilmiyorsun. Her iterasyonda aradığın kişi biraz uzuyor, diğerleri biraz kısalıyor. Birkaç tekrar sonra aradığın kişi dev gibi, diğerleri cüce kalmış. Odaya bakınca kimi seçeceğin çok açık.

Grover algoritması, Adım 4: ölçümde aranan değerin öne çıkması

Adım 4

Nerede Kullanılıyor?

Grover algoritması veritabanı aramasında, kriptografide şifre kırma sürelerini kısaltmada ve optimizasyon problemlerinde potansiyel taşıyor. Karekök hızlanma, Shor’un üstel hızlanması kadar dramatik değil ama devasa veri setlerinde yine de ciddi avantaj sağlıyor.

Özet

Klasik bilgisayar N/2 deneme yaparken, Grover sadece √N denemeyle işi bitiriyor. 1 milyon elemanlı bir listede klasik bilgisayar ortalama 500.000 kez bakarken, Grover sadece 1000 denemeyle buluyor. Klasik tek tek kontrol ediyor, Grover ise paralel kontrol ve akıllı yükseltme kullanıyor.

Grover algoritması kuantum bilgisayarların ne kadar güçlü olabileceğini gösteriyor. Ancak işin daha da çarpıcı bir tarafı var: çok daha “tehlikeli” bir algoritma.

Öyle bir algoritma düşünün ki, gerçekten ölçeklenebilir bir kuantum bilgisayarda çalıştığı gün, bugün güvendiğimiz internet altyapısının temelleri sarsılabilir.

Bir sonraki yazıda: Shor algoritmasını ele alacağız. RSA şifrelemesini teorik olarak kırabilen bu algoritma ne anlama geliyor? Banka hesaplarımız, WhatsApp yazışmalarımız, devletlerin gizli verileri… Gerçekten risk altında mı, yoksa bu sadece abartılı bir senaryo mu?

Bir sonraki yazıda görüşmek üzere.

İyi çalışmalar