ihya.org

asal sayı

[I][B][SIZE=3][COLOR=red]Binlerce yıllık asal sayı problemi çözüldü[/COLOR][/FONT][/B][/I]

Gün geçtikçe bilgisayar bilimlerinde becerilerini geliştiren Hintli bilim adamları, asal sayıların tespit edilmesini sağlayan bir algoritma bularak binlerce yıllık asal sayı problemini çözdü.

Kanpur'daki Hint Teknoloji Enstitüsü'nde görevli bilim adamları Manindra Agrawal, Neeraj Kayal ve Nitin Saxena tarafından geliştirilen yeni algoritma sayesinde, hangi sayının asal sayı olduğu hızlı bir şekilde hesaplanabiliyor. Günümüze kadar özellikle büyük sayıların asal olup olmadıklarının hesaplanması oldukça zaman alan bir işlemdi. Sadece 1 ve kendilerine bölünen asal sayılar, çok sayıda matematik probleminin ve şifreleme tekniğinin anahtarı olarak biliniyor. Böylece çok güvenilen PGP ve benzeri asalsayılara dayanan kripto tekniklerinin bir ayağının çukura yaklaştığı söylenebilir.

Agrawal, geliştirdikleri algoritmanın determinist olduğunu ve hataya yer vermediğini kaydetti. Asal sayı problemiyle ilk olarak M.Ö. 200 yılında Yunan matematikçi Eratosthenes ilgilenmişti.

Bakınız: (din, nil, dil, özel, nebî, bilgisayar, asal sayı)

[COLOR=red][SIZE=4][B]Asal Sayıları Nasıl Tespit Ederiz?[/B][/FONT][/COLOR]

Bir problem uzerinde calisirken aklima geldi. girilen bir sayinin asal olup olmadigini incelemek icin bir program yazmaya karar versek, nasil bir algoritma izlemek gerekir. yani bir sayi girildi, sayinin asal olup olmadigina bakilacak, once 2 sonra 3, sonra 5, 7, 11, 13, 17 gibi asal sayilara bolmeye basliyoruz. peki ama bolecegimiz son sayi kac olmali? yani bu bolme ne zamana kadar devam edecek? sayimiz cok buyuk olabilir, ve biz bir asal sayi data base'i olusturamayabiliriz, yani bolecegimiz asal sayilari da programin bulmasi gerekebilir, bu durumda isler zorlasiyor. yani 10 digit'e kadar database olusturulsa da 50 basamakli bir sayinin asal olup olmadigini test edemeyiz.

Eger bir sayinin asal olup olmadigini kesin olarak ogrenmek istiyorsaniz sayinin karekokune kadar tum olasiliklari tek tek denemeniz gerekiyor (daha iyi bir yontem bilinmedigini saniyorum. Var olup olamayacagi tartismalari konusunda bilgim yok). Ote yandan eger verilen bir sayi icin "bu sayi cok buyuk olasilikla asal / bu sayi kesinliklle asal degil" ikilisi tatmin edici bir yanit olacaksa, baska algoritmalar var. Gunumuzde pratikte kullanilan yontem de boyle birsey. Algoritma asal sayilarin su ozelligine dayaniyor. n asal olsun. Eger herhangi bir k sayisinin n'inci kuvvetini alip n'e boldugunuzde kalan kismina bakarsaniz yine k elde edersiniz (Sozgelimi 3^7 mod 7'de 3'tur. Deneyelim: 2187=7*312+3). Ote yandan n asal degilse boyle bir gereksinim yoktur, sans eseri arada bir k elde edebilirsiniz ancak bu hesap çogu zaman tutmaz. Simdi diyelim ki n'in asal olup olmadigini test etmek istiyoruz. Yapilan su:

rastgele sayilar alin, hepsinin n'inci kuvvetlerini alip n'e bolunce kalanlara bakin. Diyelim ki her seferinde basladiginiz sayiyi elde ediyorsunuz. Bir noktadan sonra diyorsunuz ki "cok sayi denedik, bu sayi asal olmasaydi muhtemelen bir noktada yanlis cevap alirdik. Oyleyse cok buyuk ihtimalle bu sayi asal". Eger k^n mod n sadece bir k icin bile k'ya esit degilse hemen "bu sayi asal degil" diyebiliyorsunuz. Elbette bu test size sayinin kesin kez asal oldugunu soyleyemiyor. Fakat karekok(n)'den cok cok daha az sayida deneme n'in asal olduguna deneyiciyi yeterince inandirabiliyor. (Bu tur algoritmalara probabilistik algoritma diyorlar, kesin cevap verenlere ise deterministik). Bir itiraz su olabilir: "n buyuk bir sayi ise k^n cok cok buyuk bir sayi olacak. Bilgisayar bu sayiyi hesaplayabilecek mi". k^n'i oylece hesaplamaya calisirsaniz ilk tahmin edilenden cok daha kucuk sayilar icin bile hicbir bilgisayarin buna yetmeyecegi gorulebilir. Ama bu sorunu soyle cozebiliriz: k^n'i hesaplayip mod n'de bakacagimiza her carpimdan sonra sonucu mod n'de indirgeyerek isleme devam etsek de ayni sonucu elde ederiz (neden?) Ornek olarak 2^2000 mod 3'u hesaplayalim: 2*2 mod 3=1. 2^2000=(2^2)^1000 oyleyse mod 3'te 1^1000=1. Bu sorunu boylece halledebiliriz. Hemen ekleyeyim, bu testin sonucu olarak denediginiz sayinin asal olmadigi yanitini alirsaniz ortaya baska bir sorun cikiyor: sayinin carpanlari nedir? karekok(n)'e kadar deneyerek carpanlari da bulabilirdik, bu testte bu sansi kaybettik. Gercekten de gunumuzde bir sayinin asal olup olmadigini anlamak eger asal degilse carpanlarini bulmaktan cok daha az zaman aliyor. Oyle ki bircok bankanin, askeri sistemlerin, hatta internet sayfalarinin kullandigi sifreler bu iki islemin yapilabilme hizlari arasinda cok buyuk fark oldugu gercegini kullanarak yapilmis. Yine probabilistik metodlarla karekok(n)'den cok daha iyi zamanda sayilari carpanlara ayirabilen algoritmalar var, ancak bunlar bile asallik testinden cok cok daha yavas. Bircok amator (ve profesyonel?) sifre kirma meraklisinin hizli bir carpanlara ayirma algoritmasi bulup ortaligi dagitmak icin cilginca ugrastigini tahmin etmissinizdir.

Son olarak, gectigimiz yillarda eger uygulanabilirse carpanlara ayirma algoritmasini gercekten hizlandiracagi inandirici gozuken bir fikir ortaya atildi: kuantum hesaplama. Fiyakali bir isim, altinda yatan temel fikir ise su: Cok kucuk boyutlara indigimiz zaman maddenin davranisi buyuk boyutta gozlemledigimize benzemiyor, kullanilan ve en iyi sonuc veren model olan kuantum fizigine gore bir parca bir noktadan bir noktaya giderken mumkun olan her yolu izliyor, kucuk olcekte ise bunun ortalamasini goruyoruz (isigin duz cizgi uzerinde gittigini "zannettigimiz" gibi). Eh, bir parcacik birkac yolu birden ayni anda takip edebiliyorsa bunu akillica kullanip o parcaciga ayni anda bir suru is yaptirmak mumkun olmali. Tipki birden cok islemcinin ayni anda paralel islem yapmasi gibi. Tabi bunun nasil yapilacagi, yapilip yapilamayacagi tamamen muallakta. Ancak buyuk bir arastirma alani, fikir babasi da gectigimiz sene alanindaki en buyuk odulu aldi. Bilgisayarlarda devrim yaratacak pratik sonuclarini da gormemiz mumkun onumuzdeki senelerde...


Bakınız: (nil, yol, dil, inci, isim, bilgisayar, asal sayı)

Top