Hızlı Kuvvet Alma: Bir Milyar Çarpmadan Otuza İnmek
$a^{1000000000}$'i hesaplamak için bir milyar çarpma gerekmez. Eski Hint ve İslam matematikçilerinin keşfettiği bu hile bugün şifrelemenin temelidir.

Naif yöntem niye yetersiz?
hesaplamak için aklınıza ilk gelen ne olur? "n−1 defa ile çarp." Yani:
Dört çarpma. için 99 çarpma. için bir milyar çarpma. Bilgisayar saniyede milyarlarca işlem yapsa bile bu sayıların çok büyük olduğu (yüzlerce basamaklı) bir bağlamda — örneğin RSA şifrelemesinde — naif yöntem dakikalar sürer. Oysa kareleme tabanlı yöntem aynı işi milisaniyenin altında bitirir.
Kareleme ile kuvvet alma
Hile basit: önce hesapla, sonra , sonra … Her kareleme üssü ikiye katlar. 'yı yalnızca dört kareleme ile elde edersin:
Peki gibi 2'nin kuvveti olmayan sayılar? Üssü ikili tabanda yaz:
O zaman . Yani önce karelemeyle 'i hazırla; sonra ikili gösterimde 1 olan basamaklara karşılık gelenleri çarp. Toplam çarpma sayısı kareleme + en fazla ek çarpma.
"Bir milyar çarpma"dan otuza
için . Yani naif yöntemin gerektirdiği bir milyar çarpma yerine yaklaşık 60 çarpma (30 kareleme + en fazla 30 ek). 30 milyon kat hızlanma. Üstelik küçük üsler için fark dramatik değilken üs ne kadar büyürse algoritma o kadar fark atar.
Pseudo-kod (sade)
function pow(a, n):
result = 1
base = a
while n > 0:
if n is odd:
result = result * base
base = base * base
n = n // 2
return result
Her döngüde ikiye bölünür; en sondaki bit 1 ise sonuca mevcut eklenir. Klasik "square-and-multiply" örüntüsü.
Tarihte iz: Pingala'dan İbni Sina'ya
Bu fikir aslında çok eskidir. Pingala adlı Hint matematikçi (M.Ö. 2. yüzyıl) Sanskrit prosodisi (vezin) üzerine yazdığı eserde 2'nin kuvvetlerini ikili gösterimle bağdaştırmıştı. Orta Çağ İslam matematikçileri (örn. Al-Karaji, İbn Yahya el-Maghribi al-Samaw'al) cebirsel kuvvetlerin hesaplanmasında benzer kısa yolları kullandı. Avrupa'da algoritmanın modern hali 17. yüzyılda Briggs'in logaritma tablolarında belirgin hale geldi.
RSA: niye bu algoritma olmadan modern internet çalışmaz?
Modern şifreleme (RSA, Diffie-Hellman, ElGamal) modüler üs almaya dayanır:
Burada ve tipik olarak 2048 bit (yaklaşık 600 basamak) uzunluğunda sayılardır. Naif yöntem kadar çarpma ister — evrenin ömründen uzun. Kareleme yöntemiyle yalnızca ~2048 modüler çarpma yapılır; modern CPU bunu milisaniyede bitirir.
Her HTTPS bağlantısı kurarken, banka uygulamasına girerken, mesajlaşma uygulamasında "bitmiş güvenlik" simgesini görürken arka planda bu algoritma çalışıyor. Hız olmadan kriptografi olmazdı; algoritma olmadan hız olmazdı.
Genel ders: "doğal yöntem" çoğu zaman en kötüsüdür
Çarpma için tekrarlı toplama, kuvvet için tekrarlı çarpma, arama için tek tek bakma — hepsi sezgisel ama hepsi . Akıllı bir bölme/birleştirme stratejisi (böl ve fethet, kareleme, ikili arama) çoğu zaman bunları 'a indirir. Logaritmik fark, ölçek büyüdükçe gözünüze inanılmaz görünür.
Bir milyar yerine otuz. Aradaki köprü: ikili gösterim. Aynı ikili gösterim ki bilgisayarın ne dediğini bildiği tek dildir.
Etiketler
Kendinizi Test Edin
Cevaplarınız profilinizde istatistik olarak saklanır.
1. Naif yöntemle $a^n$ kaç çarpma gerektirir?
2. Kareleme tabanlı kuvvet alma karmaşıklığı nedir?
3. $a^{13}$ hesaplanırken üs ikili tabanda nasıl yazılır?
4. Modern RSA şifrelemesi neden bu algoritmaya muhtaçtır?
5. Hint matematikçi Pingala (M.Ö. ~2. yy) hangi kavramı erken çalışmıştır?
İlgili Yazılar
Sekreter Problemi: Hayatın En İyi Seçimini Yapmak için "%37 Kuralı"
Bir işe alma görüşmesi, bir ev arama süreci, hatta hayat arkadaşı seçimi… Hepsinin altında aynı klasik matematik problemi yatar. Cevap şaşırtıcı biçimde tek bir sayıya bağlıdır: %37.
MatematikPisagor Teoremi ve Saklı Bir Sır: İrrasyonel Sayılar Nasıl Keşfedildi?
Dik üçgenlerle ilgili o ünlü kural, aynı zamanda matematik tarihinin en sarsıcı keşfine yol açtı: kesir olarak yazılamayan sayılar. Üstelik bu keşif, bir bilim topluluğunu temellerinden sarstı.
MatematikFibonacci Dizisi ve Altın Oran: Tavşanlardan Ayçiçeklerine Uzanan Örüntü
Bir tavşan üretme bilmecesiyle başlayan basit bir sayı dizisi, ayçiçeği tohumlarından çam kozalaklarına, deniz kabuklarından galaksilere kadar doğanın her yerinde nasıl karşımıza çıkıyor?