MIT AçıkDersmalzemeleri
6.046J AlgoritmalaraGiriş, Güz 2005
Bu
materyallerdenalıntıyapmakveyakullanımşartlarıhakkındabilgialmakiçin:
Erik Demaineve Charles Leiserson, 6.046J Introduction to Algorithms, Fall 2005.
(Massachusetts Institute of Technology: MIT OpenCourseWare).
http://ocw.mit.edu (GirişTarihi: 08, 01,
2010YIL). Lisans: Creative Commons Attribution-Noncommercial-Share
Alike.
Not: Lütfenatıftaparkenbilgilereeriştiğinizgerçektarihikullanınız.
AtıflarveKullanımKoşullarıkonusundadahafazlabilgiiçin:
http://ocw.mit.edu/termsvehttp://www.acikders.org.trsitesiniziyaretediniz.
DERS 8
Hashing yani KIYIM fonksiyonunun 2. bölümü, Bugün Kıyım
fonksiyonuyla şaşırtıcı işler yapacağız. Gerçekten zarif ve
şaşırtıcı. Öncelikle Kıyım’ın temel bir zayıflığından bahsederek
başlayacağız. Bu şöyle ifade edilir: Seçeceğiniz her kıyım fonksiyonu için, her
zaman aynı yuvaya kıyım yapacakkötü bir anahtarlarkümesi olur.Tamam, bir kıyım fonksiyonu
seçtiniz,bu fonksiyonun pratikte doğru çalıştığını gözlemledik. Ama her zaman
kötü bir değerler kümesi bulunacaktır. Şimdi biraz daha bu konuya odaklanalım.
Bir müşteriniz için derleyici hazırladığınızı,
derleyicinizde bir sembol tablosu olduğunu ve müşterinizin,biriktirme hızının,
yüksek olmasını istediğini, düşünün. Müşteriniz biriktirme sırasında oturup
beklemek istemiyor. Ayrıca sizden başka derleyici hazırlayan bir de rakibiniz
mevcut. Müşteriniz bu iki derleyiciyi sıralama ve çalışma zamanına göre test
edecek. Müşteriniz, bu test esnasında, kendi denektaşı testinin yanı sıra, sizin
rakibinizin programını, rakibinizinde sizinkini test etmesine izin verecek.
Yani, aslında kodunuzu paylaşmış olacaksınız.
Dolayısıyla, siz de rakibinizin kodunu inceleyip, hangi kıyım
fonksiyonunu kullandığını görebileceksiniz. Aynı şekilde bu şartlar altında,
rakibinizin de sizin kodunuzu inceleyeceğini ve bütün değerleri aynı yuvayakıyacak
değişkenlerin listesini çıkarıp bir şeyi aramaya kalktığınızda bu bağlantılı
liste yordamıyla hep aynı sonuçlara ulaşabileceğini öngörebilirsiniz.
Bu
sizin programınızı, elemanlarınızın bir kıyım tablosunda güzelce dağılmış olma
durumuna oranla olağanüstü yavaşlatacaktır; çünkü kıyım tablolarını
kullanmamızın ana nedeninden uzaklaşılmış olacaktır.Öyleyse,
rakibimizi nasıl alt edeceğiz? Cevap tek sözcük! Tek sözcük. Nasıl
başaracağız? Sınıfımızdaki bütün rakipleri nasıl yeneceğiz? RASTGELELİK! Evet, rastgelelik!
Siz rastgele bir yapı geliştirirseniz, rakibiniz sizin kıyım fonksiyonunuzu
tahmin edememesini sağlarsınız. Rakibiniz kodunuzu incelese de, programınız
çalışması esnasında rastgele bir fonksiyon seçeceği için, kullanılan kıyım fonksiyonunun
ne olduğunu tahmin etmenin bir yolu yoktur.
Tamam, demek ki oyun bu; rakibiniz bir girdi grubu
sunabilir, ancak bu grubun sizin kıyım fonksiyonunuzu yavaş çalıştıracağını garanti
edemez. Seçtiğiniz kıyım fonksiyonu açısından şanssız olabilirsiniz, ancak bu
rakibinizin başarısı olmayacaktır.Yani buradaki fikir kıyım fonksiyonunu rastgele,
ancakkullanılacakanahtarlardan bağımsız olarak seçmektir. Dolayısıyla rakibiniz
kodunuzu görse bile kodun çalışması esnasında hangi kıyım fonksiyonunun
kullanılacağını söyleyemeyecektir. Rakibiniz rastgele değerlerin nasıl çıktı
vereceğini bilemeyecektir.
Sonuçta bu veri tanımlama yönteminin çalıştığını
görürsünüz ve bunun adı Evrensel
Kıyım fonksiyonudur ve pratikte kullanılan yöntemlerden birisidir.
Şimdi biraz matematik yapalım. Büyük U harfianahtarların
küme evreni olsun. H ise U evrenindekianahtarları kıyım tablosundakiyuvalara
eşlemleyen kıyım fonksiyonlarının sonlu bir biriktirmesi olsun. Burada H
sınırlı bir collection yani biriktirmedir.Eğer bütün anahtar çiftleri
birbirinden farklı ise şu doğrudur:
Seçilecekbir anahtar çifti için, bu iki anahtarı aynı
yuvaya düşürecekkıyım fonksiyonlarının sayısı, 1/m çarpı anahtar kümelerinin toplam
sayısıdır. Burada m ile ilgili olarak; küçük h’nin büyük H anahtarlar kümesi içinden
rastgele seçildiği varsayılırsa, seçilen x ve y değerlerinin çarpışma olasılığı
nedir? Eğer kıyım fonksiyonlarının
sayısı büyükH/m ise, x ve y’nin çarpışma ihtimali nedir diye soruyorum? Kıyım
fonksiyonunu rastgele seçiyorum. Yani rastgele bir kıyım fonksiyonu alırsak, x
ve y nin çarpışma olasılığı nedir? 1/m. Doğru söylüyorsunuz. Şimdi bunun için
bir şekil çizelim ve herkes gerçeğin bu olduğunu anlasın. Bunun tümkıyım fonksiyonlarının
bir kümesi olduğunu hayal edin.
Tamam. Şimdi bir x ve y seçersem;diyelim ki bu kıyım fonksiyonu
setinde h(x) = h(y) olsun. Bu kümenin niceliği
yani cardinality’si H’nin niceliğinin
1/m katıdır. Yani, ben bir dart oku atarak
bir kıyım fonksiyonunu rastgele seçersem, kıyım fonksiyonunun, bu özel kümeye
denk gelmesi oranı m’de 1’dir.
Tabii bu seçeceğim bütün x ve y’ler için doğru olmak zorundadır. Doğal olarak farklı
x ve y’ler seçtiğimde, bu x ve y’nin eşlemleyeceği kıyım fonksiyonları da
farklı olacaktır. Ama seçeceğim herhangi bir x ve y için, kıyım fonksiyonunda
aynı yere kıyımlanma oranı 1/m olacaktır.
Burada insanların bazen farklı düşünmeleri zor olabilir,
çünkü olaya anahtarların rastgele seçilmesi gibi bakabilirler. Ama burada olan
bu değildir. Burada kıyım fonksiyonlarını rastgele seçiyoruz. Dolayısıyla bizim
olasılık hesap uzayımız kıyım fonksiyonlarını baz
alıyor, anahtarları değil. Bu, birbirinden farklı olarak seçtiğim her iki anahtar
için doğru olmak zorunda. Bu kıyım fonksiyonları ve kıyım yaptıkları yerler; yani
düşünürseniz, bu harika bir özellik.
Burada hangi iki anahtarı seçerseniz seçin, bu kümedeki rastgele
kıyım fonksiyonlarından biri1/m olasılıkla bu anahtarları aynı yere yollayacaktır.
Bu çok zarif;çok, çok zarif bir özelliktir ve matematiğin bununla çok güzel
birleştiğini birazdan göreceğiz. Yani, bizim teorimiz şudur:h’yi,H kıyım fonksiyonları
kümesinden rastgele seçerek, sonra da n adet anahtarı T tablosunda m tane yuvaya
yerleştirirsek, bu durumda verilen bir x değeri için x ile beklenençarpışma sayısı,
n/m’den küçüktür.
Kim n/m’yi ne olarak adlandırdığımızı hatırlıyor. Alfa, burada kullandığımız terim
neydi? Loadfactor Yük Oranı. Tablonun yük oranı. Yük oranı
alfa. Yani, yuva başına ortalamaanahtar sayısı tablonun yük oranıdır. Bu
teorem ne diyor? Eğer kıyım fonksiyonlarını içeren evrensel bir kümemiz varsa,
olaylar tam da istediğimiz gibi gerçekleşir.
Değerler eşit dağıtılır. Dağıtılacak değerlerden herhangi
bir seçilmiş anahtarla çarpışma sayısı n/m olacaktır. Bu gerçekten çok güzel
bir özelliktir. Şimdi, size henüz U’nun oluşturulmasını göstermedim, özür
dilerim, kıyım fonksiyonları kümesinin,H’nin oluşturulması birazemek
gerektiriyor. Ama öncelikle bunun neden bu kadar güzel bir özellik olduğunu
göstereceğim. Temel olarak bunun nedeni, bu teoremdir. O zaman önce teoremi ispatlayalım. Bu teorinin
ne anlattığına dair sorusu olan var mı? Bugün biraz hızlı gideceğiz. Bugün yapılacak
çok fazla güzel iş var. Dolayısıyla herkesin bizimle ilerlemeye hazır
olduğundan emin olmak istiyorum.Sorusu olan varsa; teorimi anladığınızdan emin
olmalısınız, çünkü sonradan, işler daha heyecanlı bir hal aldığında kafanızın
karışması yerine konuyu erken anlamak en iyisidir. Pekiyi, güzel.
Bunu kanıtlamak için,
Eğer değerleri göstergesel rastgele değişkenlere
dönüştürebilirseniz, bu durumun çözümlenmesi toplu halde değişkenleri
çözümlemeye oranla çok daha kolay olur. Dolayısıyla, göstergesel rastgele
değişkeni küçük cxy olsun. cxy, eğer h(x),h(y)’ye eşit ise
1, diğer durumlarda da 0 değerini alacaktır.
Böylece burada sadece 2 şeyle uğraşıyoruz:
Birincisi, cxy ‘nin beklenendeğeri nedir
sorusu? Elimde rastgele kıyım fonksiyonunu seçen bir işlem varsa, cxy
‘nin beklenen değeri nedir?
1/m. Çünkü temel olarak tanımımız bu. Başka bir deyişle;
bir kıyım fonksiyonunu rastgele seçtiğimde, kıyımın aynı yere yapılmasının
oranı nedir? 1/m. Bir diğer konu ise büyük Cx ,
yani toplam çarpışma sayısı ifade eden rastgele değişken;bu x değeri
hariç, cxy ‘nin tablodaki tüm anahtar değerlerindeki toplamlarına
eşittir.
Dolayısıyla x ile çarpışmaya neden olan her değer için
toplama 1, neden olmayan her değer için 0 ekliyoruz. Dolayısıyla tablodaki x
ile her çarpışmayı toplama ekleriz. Şu ana kadar bir soru var mı? Çünkü bu hazırlık evresi. Bu
hazırlık aşaması bu konunun önemli bir parçası ve birçok öğrenci genelde hazırlık
aşamasında hata yapar, hatta birçok araştırmacı da bu aşamada hata yapar.
Başta doğru hazırlanırsanız sonradan matematik iyi
çalışır. Ancak çoğu zaman, durumu matematiğe nasıl çevirdiğiniz hazırlıktır. Bu
işin zor kısmıdır. Bu süreci doğru atlatırsak, gerisi cebir, cebiri kullanabiliriz.
Tabii ki cebir işlemleri sırasında da hata yapabiliriz, ancak bu hataların
kontrolü ve düzeltmesi, çeviri sırasında yapılanlara göre çok daha kolaydır.
Dolayısıyla herkesin, hazırlık aşamasını anladığından emin olmak istiyorum.
Böylece artık matematik yeteneklerimizi kullanabiliriz.
Demek ki; toplam çarpışma sayısının beklenen değeri,yani büyük Cxin beklenen değeri y’nin, küçük
cxy ‘nin tablodaki tüm anahtar değerlerinin, y T-x boyunca değişirken
cxy‘in beklenenleritoplandığında elde edilen değere eşittir. Pekiyi,
neden böyledir? Evet,doğrusallık nedeniyle..Beklenenin
doğrusallığı, bağımsızlık gerektirmez. Bu bütün rastgele değişkenler için
doğrudur.
Bu da eşittir ve burada matematik biraz daha kolay. Bu
nedir? 1/m. Bu toplamı kolaylaştırır. Sonuçta (n-1)/m’ çıkar. Basit bir çözümleme bize, neden evrensel kıyım
fonksiyonu kümelerinden birine sahip olmayı sevdiğimizi anlatıyor. Çünkü
bunlardan birine sahipseniz, bu küme hep sizin istediğiniz gibi davranacaktır.
Böylece rakibinizi sadece bir rastgele kıyım fonksiyonu seçerek yenebilirsiniz.
Bununla ilgili rakibinizin yapabileceği bir şey yoktur.
Pekiyi, kanıtla ilgili sorusu olan var mı? Şimdi
eğlenceli matematiğe geldik. Bu bebeklerden birini yapılandırmak! Bu sadece tekyapıda
değildir. Bu klasik evrensel kıyım fonksiyonunun sadece bir türde yapılandırılmasıdır.
Kitaplarda başka formlar da var ve galiba pratik testinde de bir tane var.
Öyleyse haydi bakalım. Evet bakalım ne olacak? Bu, m
asal olduğunda doğru çalışıyor. Yani, yuva kümesi asal sayıda olursa çalışıyor.
Yuva sayısı asal olacak.
Buradaki fikir şu; evrenimizdeki herhangi bir k
anahtarını r+1 basamağa indirgeyeceğiz. Böylece k’yi,k0 , k1 …,kr olarak
yazacağız ve burada 0 ≤ kI ≤ m-1 arasında olma durumlarınıinceleyeceğiz..
Buradaki fikir k’nin m tabanında nasıl gösterileceği ile ilgilidir. Eğer
tabanımız 2 ise, her seferinde sadece bir bitlik bir işlem olacaktır. Bunlar
bitler olurdu. Ben 2 tabanında çalışmayacağım. Biz m tabanında işlem yapacağız
ve bunların her biri basamaklardan birini ifade edecek. Ben önce düşük düzeydeki
yani sol baştaki basamakta işlemleri yapmayı seçtim ama aslında farketmez. Düzeyin
ne olduğu ile ilgilenmeyeceğiz ama temel olarak, biz bunu, her bir basamağıniki
yönlüifadesine dönüştürmeye çalışacağız. Bunu k’dan yola çıkarak hesaplamak
için kullanılabilecek bir algoritmada kalanı mod m, m veya modulo m ile
gösterilebiliriz.
Bu en düşük seviye. Tamam, bu geriye kalan. Mod m’de kalanı
alın. Geriye kalan ne varsa alın. Yani, taban dönüştürme konusunda bilgi
sahibisiniz. Bu gösterimi bu şekilde elde edeceğiz. Bu aslında sadece sahip
olduğumuz veriyi elde etme sorunu ve buna m tabanında r+1 sayısı gibi davranacağız.
Şimdi, bizim rastgele yapma stratejimizi çağırma zamanı. Rastgeleye dönüştürme
stratejisi,bir grup rastgele sayılara bağımlı olan kıyım fonksiyonlarına sahip
olma becerisidir. Rastgele sayıları, rastgele bir a değeri seçerek
belirleyeceğiz.
Ayrıca bunlar m tabanlı olacaklar. Her ai 0’dan
m-1’e kadar ancak rastgele olarak seçilecek. Dolayısıyla m de rastgele seçilmiş
olacak. Rastgele m tabanı basamaklı. Dolayısıyla her biri rastgele seçilecek.
Her biri için, a’nınher olası değeri için farklı bir kıyım fonksiyonu elde
edeceğiz. Bu yüzden, kıyım fonksiyonlarımızı bu rastgele sayı ile indeksleyeceğiz.. İşte burası rastgeleliğin geldiği yer. Herkes benimle mi?
İşte bu kıyım fonksiyonu!
Şimdi yapacağımız şu; Bu
vektörün, bu vektörle iç çarpımının mod m deki sonucunu alacağız.
Dolayısıyla k’nın her basamağı rastgele seçilmiş başka bir basamakla çarpılmış
olacak. Bütün bunları ekleyip, mod m de sonucunu alacağız. Dolayısıyla bu bir iç
çarpım işlemi. Biz bunun, bütün kümeye baktığımda içindeki ha(k) kümesinin
evrensel olduğunu da göstereceğiz. Burada bilmemiz gereken bir şey de kıyım fonksiyonlarının
kümesinin ne kadar büyük olduğudur.
Kıyım fonksiyonlarının kümesi ne kadar büyüktür? Bu kümenin
içinde kaç tane farklı kıyım fonksiyonu var diye soruyorum? Bu temel 6.042 dersinin materyali. Bu,
temelder+1 uzunluğunda kaç tane vektör olduğuna bağlı; buradaki her vektör elemanı
da 0’dan m-1’e kadar m tane farklı değer alabilir. Yani kaç tane? m-1’in r’ninci kuvveti mi? Hayır, ama yakın, o civarlarda,
büyük bir sayı. Bu m’in r+1’inci kuvveti. Güzel. H’nin büyüklüğü eşittir
Bu saymadaki çarpım kuralı. Eğer 6.042’deki
sayma ile ilgili notlara bakmadıysanız, geri dönüp o konuyu hatırlamak iyi bir
fikir olacak.. Çünkü burada yaptıklarımızın doğası o
konularla ilgili. Bu sadece çarpım kuralı. Güzel.
Dolayısıyla kanıtlamak istediğimiz teorem, H’nin evrensel olduğudur. Bu
birazcık Sayı Teorisi içeriyor, dolayısıyla iş ilginçleşiyor. Bu önemli ama
apaçık olmayan bir ispat, dolayısıyla
soracağınız herhangi bir soru varsa, lütfen sorun, çünkü bundan sonra
anlatacaklarım, şu ana kadar anlattıklarım kadar basit olmayacak.
Şu ana kadar anlattıklarımız da basit değildi ama bu daha
fazla matematik içerecek bir konu. İşte size bir ispatı. İki
tane anahtarımız var. Bunun evrensel olduğunu göstermek için,herhangi iki
anahtarı seçtiğimde bunları aynı yereyollayankıyım fonksiyonlarının sayısının,kıyım
fonksiyonlarının kümesinin büyüklüğünün m’ye bölünmüş haline eşit olması lazım.
Tamam. Dolayısıyla, 2 anahtara bakacağım. İki anahtarırastgele seçelim. Şimdi x’i r tabanına indirgenmiş haliylegösterelim
ve y’ide, y0, y1…….gibi farklı anahtarlar olsun.
Bunlar 2 farklı anahtar; eğer bu ikisi 2 farklı değerse,
yani aynı değillerse, butaban gösterimine göre bunlar bir yerde farklı olacaklardır.
Bu doğru mu?En azından bir basamakta farklılık gösterirler. Tamam, burası
birçok kişinin koptuğu nokta, burada bir basitleştirme yapacağım. Bunlar bu
basamaklardan herhangi birinde farklılık gösterebilirler. Ben 0 pozisyonunda
farklı olacaklarını söyleyeceğim, çünkü hangi basamakta farklılaştıklarının bir
önemi yok, matematik aynı, ama i adımında farklılaştıklarını söylersem, gördüğünüz
gibi i’ye eşit olmayan değerler için bir sürü hesaplama yapmak zorunda kalırım;
bu da işi iyice karmaşıklaştırır.
0pozisyonu için hesaplarsam, diğerlerini sadece
toplayarak devam edebilirim. Dolayısıyla matematik açısından başka bir pozisyonda
yapacağım işlemler de simetri özelliğinden ötürü aynı olacaktır. Tüm basamaklar
simetriktir. Bu nedenle 0pozisyonunda fark olduklarını söyleyelim, ama aynı şey
diğer basamaklarda da farklı olsalardı doğru olacaktı. Dolayısıyla genellemeyi
kaybetmemiş olacağız. Pozisyon 0Kabul
ediyoruz. Buradaki bütün pozisyonlar simetrik olduğu içinşimdi şu soruyu sormalıyız;
--
Evrensel gibi görünen kümemizdekikıyım fonksiyonunda kaç
tane x ve y çarpışacaktır? Tamam bunları saymalıyız.
Ne kadar sıklıkla çarpışıyorlar? Burada sayı
teorisini ağırlıklı olarak kullanacağız. Eğer Çarpışma olursaha(x) =
ha(y)’ye eşit olacaktır. Bunların
çarpışması için böyle olması gerekir.
Bunun anlamı da, i
sıfırdan r’ye değişirken aiçarpı
xi ‘nintoplamlarının i sıfırdan r’ye kadar değişirken, ai kere yi ‘nin toplamlarına eşit olduğudur;
burada bunlar eşleniktir ve mod m tabanındadır.
Aslında
bu eşlenik mod yani mod m’dir.Sayı teorisini görmemiş arkadaşlarınız için
eşlenik olma kavramını şöyle açıklayayım: Eşlenik olmak özüne dönme yollarından
biridir ve buradakileri modla ve sonra şuradakileri modla demekyerine mod yada
tabanı belirleme uygulamasını en sonda bir kez yaptırırız. Her
şey m moduna dönüştürülür.Ve bu durumda eşlenik işaretini
kullanırız.Eşlenikliğin daha detaylı matematiksel açıklaması da var ama biz
mühendisler için bu kadarı yeterli. Şu ana kadar herkes benimle beraber umuyorum.Bu
sadece tanımı uygulamadır.Böylece bunu şöyle de gösterebiliriz:i, 0’dan r’ye kadar değişirken, aiçarpı (xi – yi)’nin toplamları,mod m’de 0’a
eşleniktir.
Tamam bunu öbür tarafa atalım ve dağıtımyasasını uygulayalım.
Şimdi sadece sıfırıncıpozisyonu dışarı çekmem gerekiyor, çünkü önem verdiğim
tek yer orası. Eğer sıfırıncı pozisyonuseçmeseydim, bir sürü matematiksel
zorluklarla karşılaşacaktım.Bu a0çarpı(x0- y0)’ın
dışarı alınması.Amabu çok fark ettirmezsadece matematiği daha kolay hale
getirir…Böylece bir terimi dışarı çekmiş olduk. Bu da şu anlama gelir: mod m’dea0çarpı(x0-
y0 ) bu terime eşleniktir.. Şimdi m
tabanında eksi değerin ne yaptığını hatırlayın; bu sayıyı 0’dan m-1’e kadar
olan bir değere çeviriyorum. Örneğin7 modeksi 5 iki’dir. İkidir. Yani, eğer
eksi değerlerim varsa, m veya m’nin katlarından birinibunlaraeklerim, çünkü
m’nin katlarını eklemek eşlenikliği etkilemez. Şimdi bir sonraki adımda, sayı
teorisi gerçeğini kullanacağız. Dolayısıyla şimdi sayı teorisine ve kitaba
başvuralım. --- bir de regresyonyapalım.
Bu, sınırlı alanlar teorisinden gelir. Bu, bilenler için,
bilgilerini koyacakları bir yerdir; bilmeyenler için ise matematiğin öğrenilmesi
gerekengüzel alanlarından birisidir.
m bir asal sayı olsun. Herhangi bir küçük z,ki büyük Zmkümesinin içinde ve büyük Zmise mod m’deki tam sayılardan oluşsun.
Bu, 0’dan m-1’e kadar, çarpım, çıkarma, toplama, vb. bütün işlemler için geçerlidir.
Yani, 0 ile m-1 aralığının dışında bir değer elde
ederseniz m’nin katlarını ekleyip, çıkartıp normalize ederek m tabanına
dönmeniz gerekir.
Bu mod m’de çalışmak için gereken standart işlemdir. 0’a eşlenik
olmayan z değeri için,büyük Zmkümesininiçinde z’nin tek bir tersi yani
1’in tersi nedir? 1’i neyle çarparsam 1 elde ederim? Güzel,
1. Peki ya 2? 2 hangi sayıyla çarpılırsa 1’e eşit olur?.
4. Çünkü 4 çarpı 2 = 8’dir ve 7 tabanında 8, 1’e eşleniktir.Pekiyi 3’ünki ne
olur? 5! Doğru.3x5 = 15’. Çünkü 15, 7’ye bölündüğünde 2 çıkar ve kalan 1’dir. Peki
ya 4? 2!
5?3! Ve 6? Evet
6’nın tersi kendisidir. 6 kere 6 = 36’dır! 36’dan 7’nin katı 35 çıkarsa geriye
1 kalır. Burada dikkat ederseniz bir sayının tersi neyse, çıkantersin tersi de yine
o sayıdır diyebiliriz. Bu grup teori ve alan teorisinde çalışırken
kanıtladığımız şeylerden birisidir. Bu tarz matematikle uğraşırken başka birçok
güzel şeyle karşılaşabilirsiniz, Ama aslında, m asal sayı değilsebu doğru olmaz.
Şimdi mod 10’da çalışırken neler olabileceğini düşünebilirsiniz.
Mod 10’da tersi olmayan bir sayı söyleyebilir misiniz?
Evet, 2. Bir diğeri de 5! Daha genel anlatmamız gerekirse, göreceli olarak asal
olmayan yani bölenleri olan, yani o sayı ile mod büyüklüğü arasında en büyük
ortak böleni 1 olmayan durumlarda mod m’de o sayının tersdeğeri bulunamaz.Ama eğer
bir asal sayı ise, diğer bütün değerler, göreceli olarak asaldır. Ama Bu da
bizim faydalandığımız özelliktir.
Bu durumda ben (x0– y0)’a
bölmek istiyorum. Bu evrede yapmak istediğim işlem bu. Ama her şeyden önce, eğer m bir asal sayı değilse
bunu yapamayabilirim. Belki de yaparım ama her zaman olmaz. Ama m asalsa
kesinlikle (x0 –
y0)’a
bölebilirim. Bunun
tersini bulabilirim. Ayrıca burada, (x0 – y0) 0’a eşlenik olmadığından da emin
olmalıyım. Bu x0 ile y0’ın
eşit olması anlamına gelir ama varsayımımızı bunların eşit olmaması durumuna dayandırmıştık.
Bir kez daha genel anlatımı unutmamak için tekrarlarsak,
eğer başka bir pozisyonda çalışıyor olsaydık, o pozisyonda da tam olarak aynı
şeyleri yapıyor olacaktık. Şimdi, (x0 –y0)’a bölebiliyoruz. Ve ispatımızla devam edelim:x0,y0’dan
farklı olduğundan, (x0 –
y0) ‘ın
tersi her zaman var olacaktır. Oradaki durumugeliştirdiğimizde,
a0
eksi,i,1’den r’ye değişirken,ai çarpı
(xi– yi)(x0 – y0)’ın ters değerinin çarpımının
toplamlarına eşlenik olacaktır.
İspatımızın başına geri dönelim ve ne elde ettiğimizi
görelim. Biz iki tane farklı anahtarımız olduğunu, bütün bu ai’leri
rastgele seçtiğimizi ve bu iki farklı anahtarın aynı yuvaya kıyıldığını
söylüyoruz. Eğer aynı yuvaya kıyılıyorlarsa, bu; a0’ın diğerai’nin
bir fonksiyonu sonucu çıkan bir değeri olmasıgerektirir. Başka bir deyişle, ben
ai’leri 1’den r’ye kadar seçtimve örnekteki gibi bu seçimi sıralı
olarak yaptıysam, a0’ı çarpışacak şekilde nasıl seçebilirim ki! Çarpışmaya
sadece bir değer neden olabilir, o da bu eşlenik denklemle tanımlanan a0
değeridir.
Eğer a0 için farklı bir değer seçseydim,
çarpışmayacaklardı. Bunu yazalım. Yani, bu ai’lerin herhangi biri
seçildiğinde, a0’ın m olası seçeneği arasından sadece birisix ile y
nin çarpışmasına neden olacaktır. Yani bir kez daha tekrarlayalım, bu ai’lerin
herhangi biri seçildiğinde a0’ın m olası seçeneği arasından sadece
birisi x ile y nin çarpışmasına neden olacak.a0’ı seçerken yapacağım
diğer seçimlerdeise çarpışma olmayacak. Dolayısıyla, çarpışmalar açısından rastgeleliğimin
serbestlik derecesini m oranında azaltmış bulunuyorum. xile y’nin çarpışmasına
neden olan küçük ha’ların sayısı, eşittir: Çarpım kuralını kullandığımda m tane seçenek var.
a1 için olan m seçenek çarpı a2 için
m seçenek çarpı …ariçin m seçenek ve a0
için bir seçeneğim var. Bunlar çarpışma olacak ise, a1, a2,
ar ve
sadece bir seçeneğim olan a0 için seçimlerim. Eğer
çarpışmayacaklarsa, a0 için daha fazla seçeneğim olacak. Ama eğer
çarpışmalarını istiyorsam, seçeneğim sadece bir a0 değeridir, o da
budur! Bu benim seçebileceğim tek değer. Bu da
Bu da ispatı tamamlar. Başka evrensel yapılandırmalar
mümkün, ancak bu zarif ve özel bir tanesi. Burada konu, benim m+1, özür dilerim,
r+1 düzeyinde özgürlüğümün olması. Her düzeyde de m tane seçeneğim var. Ama
eğer çarpışmalarını istersem, r adet olası seçeneği kullandıktan sonra, sonuncu
seçenek kendiliğinden oluşuyor. Dolayısıyla çarpışma durumu yaratan fonksiyon
kümelerinin sayısı sadece m’de bir taneolacak.Gayet akıllıca
bir yapı.
Çok akıllıca. Tamam, herkes zannediyorum benimledir. Çok
fazla insanı kaybetmedim değil mi? Evet soru var mı? Evet? Bunun aslında sıkça
kullanılan uygulamaları var.Kriptografi benzeri bir ders alırsanız, bunlarda mod
m ile iç çarpımlargibi konular ve özellikle basit sınırlı alanlar olan Galois
Alanlarının çözümlerinde bu anlattıklarımla bol bol oynarsınız.
Örneğin
Galois Alanları yani harici /veya komutlarının buradaki gibi sıkça kullanıldığı
alanlardır; bundan farkı 2 tabanlı olmasıdır.Yani bu tarz işlemlerle
ilgili birçok çalışma var. İnsanlar bu tarz özellikleri anlıyorlar. Ama sorunuz “algoritmalar
konusunda mükemmel sezgi edinmenin algoritması nedir?” sorusunu hemen akla
getiriyor. Keşke bilseydim, hemen kontağı açardım. Ama bu o kadar kolay
olsaydı, burada karşınızda duruyor olmazdım.. Güzel.
Şimdi bende hayranlık uyandıran başka bir konuya geçmek istiyorum. Bu çok çok
güzel bir matematik uygulaması ve kıyım fonksiyonu geliştirmekteki
yeteneğinizeönemli katkıda bulunacaktır..
Şimdi alakalı başka bir konuya geçmek istiyorum. Bu konu,perfect
hashing yani Mükemmel Kıyım olacak. Şu
ana kadar yaptıklarımız beklenenzamandabaşarımla ilgiliydi..
Kıyım,beklenen süre bağlamında iyi bir uygulama. Mükemmel kıyım ise şu sorulara
ilgilenir:Farzedin kisize bir anahtar kümesi verdim ve bana statik bir
tablo yaratmanızı istedim. Böylece en kötü zamanda tabloda anahtarı
arayabileyim. Bir iyi birde en kötü zamanda. Dolayısıyla elimde sabit bir anahtar
kümesi var.Aynı İngilizcedeki en sık kullanılan 100 veya 1000 sözcük gibi bir
şey.
Ben bir sözcüğü ele aldığımda, sözcüğün İngilizcede sık
kullanılıp kullanılmadığına tabloya bakarak hızlı bir şekilde anlamalıyım. Bu
işi beklenen başarımladeğil de garantilenmiş en kötü durum zamanında
yapabilmeliyim. Bunu hızlı yapabilmemin bir yolu acaba var mı? Demek ki problem
şu; verilen n adet anahtar için statik bir kıyım tablosu yaratmak.
Diğer bir deyişle, yeni girdi veya silme yapılmayacak. Sadece elemanları oraya
koyacağız. Büyüklüğü ise,m = O(n).
Dolayısıyla çok büyük bir tablo istemiyorum. Büyüklüğü anahtarlarım
boyutunda olan bir tablo istiyorum. m = O(n) boyutunda
bir tablo ve en kötü durumda arama O(1) zamanı alacak. Ortalama durumu biliyor
olacağım, bu çok zor değil,ama en kötü durumda değerlerin yığılıp, fazla zaman
kaybına neden olacağı bir nokta olmayacağından emin olmalıyım. Herhangi bir
noktada bu olmamalı;her bir arama O(1) zamanında olmalı.
Herhangi bir değeri ne kadar sürede elde ettiğime dair
istatistiksel bir değişim olmamalı. Acaba Herkes bulmacanın ne olduğunu anladı
mı? Bu çok önemli çünkü çok fazla kullanım alanı var. Bir tablo yaratacağınızı
ve bu tablonun içinde hangi değerlere bakacağınızı biliyorsunuz. Ama bu tablo
için fazla yer harcamak da istemiyorsunuz. Buradaki fikir iki aşamalı bir veri
tanımlaması yapmaktır.
Fikir, iki aşamalı bir plan uygulamak.ve
ilk aşamada evrensel kıyım fonksiyonunu çalıştıran bir veri tanımlaması
kullanmaktır. Fikir, kıyım yapmak; bir kıyım tablomuz olacak, yuvalara kıyım
yapacağız, ancak zincirleme işlemini kullanmak yerine ikincibir kıyım tablosu
daha olacak. İkinci tabloya ikincibir kıyım daha yapacağız. Ve buradaki fikir ikinci
düzeyde hiç çarpışma olmadan kıyım yapmak.
Dolayısıyla birincidüzeyde çarpışma olabilir. Birinci
tabloda çarpışan her şeyi ikincidüzeydeki tabloya koyacağız, ama bu tabloda
çarpışma olmayacak. Buuum. Tam buraya kıyım yapacağız. Şimdi veri tanımlamasını
gösteren bir resim çizelim: Tamam, şimdi elimizde olanlar şunlar: 0, 1, 6’ya
kadar yazalımve sonunda, m-1. İşte bu bizim Kıyım Tablomuz. Birinci düzeyde
evrensel kıyım kullanacağız. Dolayısıyla evrensel bir kıyım fonksiyonu bulalım.
Rastgele bir fonksiyon seçiyoruz. Yapacağımız bu düzeye yani ilk düzeye kıyım
yapmak. Bundan sonra iki şeyi takip edeceğiz.
Birincisi, diğer düzeydeki kıyım tablomuzun büyüklüğü. Bu durumda, kıyım
tablomuzun büyüklüğünü yuva sayısıyla adlandıracağız; 4 olacak. İkinci düzey
içinse farklı bir kıyım anahtarı kullanacağız. Dolayısıyla, ikinci düzeyde her
yuvanın farklı bir kıyım fonksiyonu olacak. Mesela, bir yuva rastgele seçilmiş
31 değerini taşıyabilir. Şuradaki a’lar gibi.. Bu,
yani hangi anahtarla kıyım yapacağım benim kıyım fonksiyonumun temeli olacak.
Bu yuva 86 olsun. Sonra, kıyım tablosuna bir işaretçi koyayım; buna büyük S1
diyeyim. Bu 4 yuvaya sahip olacak ve 14ile 27’yi saklayacak. Bu yuvalar
ise boş.
Pekiyi, örneğin bunda ne vardı? Yani buradaki fikir şu; sayıları
yerleştireyim. Buradaki fikir, eğer benim küçük h diyeceğim üstteki seviye
kıyım fonksiyonuna bakarsak; Bu h(14) =h(27) o da 1’e eşit. Çünkü birinci
yuvadayız.Şimdi bu ikisi birinci düzeyde kıyım tablosunda aynı yuvaya
kıyılıyor. Bu birinci düzeyde.. Buradaki de ikincidüzey.
Yani 14 ve 27 birinci seviyede çarpıştılarve aynı yuvaya gittiler. Ancak ikinci
seviyede farklı yuvalara kıyıldılar. Seçtiğim kıyım fonksiyonu seçtiğim
rastgele sayılara göre anahtar listesi oluşturarak bu yapıyı yarattı. Ve bunların
nasıl bulunacağını anlatacağım. Şimdi ikinci düzeyde, h31(14) sayısı
için, 1’e eşit.,ve h31(27) sayısı için 2 değerlerini aldı..İkinci seviyede.
Burada kıyım yaparken, şuradaki tablom ne olursa olsun,
bunu kıyım fonksiyonumuntemeli olarak kullanıyorum. Eğer ikinci düzeyde hiç
çarpışma olmamasını garanti edebilirsem, bu bana aramanın en kötü durumundabüyük
O(1) zamanına mal olacak. Peki nasıl arıyorum?Bu kıyım
fonksiyonu için değerin ne olduğuna bakıyorum. Bu değeri kıyım fonksiyonuna
uyguluyorum, bu da beni başka bir yuvaya götürüyor. Bu temelde 2 kıyım
fonksiyonu uygulaması artı biraz arama artı az bir miktar kayıt yapmama mal
oluyor.
Bu düzeyde çarpışma olmamasının nedeni şudur: Eğer
birinci düzeydeki kıyım tablosunun i’nci yuvasına kıyılan ni tane
eleman varsa, ikinci düzeydeki kıyım tablosunda misayıda yuva
kullanırız ve burada mi, ni ’nin
karesi kadar yuvaya eşit olarak seçilir.Şunu burada söylemem gerekirdi.bu mi,
yani kıyım tablosunun büyüklüğü, bu da ai olacaktı. Dolayısıyla
temel olarak, ni tane elemanı ni ‘nin karesi kadar yere
yerleştireceğim; yani bu inanılmaz büyük olacak.Boyut olarak karesel büyüklükte
olacak.Burada göstereceğim şey bu koşullar altında sıfır çarpışma sağlayacak
kıyım fonksiyonları bulmamın kolay olacağıdır. Oyunun adı budur. Kıyım
fonksiyonlarını hiç çarpışma olmayacak şekilde ayarlayabilmektir. Bu şekli bu
nedenle az elemanlı çizdim.Örnek olarak, 2 elemanım varsa 4 büyüklüğünde bir
kıyım tablom olur. 3 elemanım varsa 9 yuvalı bir kıyım tablosuna ihtiyacım olur.
Eğer 100 elemanım varsa, 10000 yuvalı bir kıyım tablosuna
ihtiyacım olacak. O büyüklükte bir şeyle uğraşmayacağım. Gerçekte bu çalışıyor
ve bize istediğimiz bütün özellikleri sağlıyor ve bu da çözümlemenin bir
parçası. Tamam, herkes bunun en kötü durumda zamanınınbüyük O(1)’e mal olduğunu
ve temel yapısının ne olduğunu anladı mı? Bu arada, bu şeyler, bu örnekte asal
değiller. Her zaman bu değerlere yakın asal sayılar seçebilirim. Bu örnekte
bunu yapmadım.
Tersine, asal sayı olmayan sayılarla çalışan bir evrensel
kıyım fonksiyonu seçebilirdim. Ama bunu da bu örnekte yapmadım.Çözümleme için
hazır mıyız? Tamamöyleyse biraz çözümleme yapalım. Bu gerçekten güzel bir çözümlemedir.
Aslında çözümlemenin bir kısmını yaptık, şimdi geri kalan kısmını göreceksiniz.
Buradaki ustalıkikinci düzeydeki çözümlemeyi yapmaktır. Bu benim çözümlemek istediğim
esas şey. Bununla, kıyım fonksiyonları bulabileceğimi, değerleri bu dizinlere seyrek
bir şekilde eşlemleyebileceğimi, dolayısıyla da böyle kıyım fonksiyonları
olduğunu ve bu fonksiyonları önceden hesaplayabileceğimi göstermeme yol açacak.
Bunları saklayacak güzel bir yöntemim var. Kullanacağım
teoremise şu:. Evrensel küme H’deki rastgele bir kıyım
fonksiyonu olan h’yi kullanarak, n’nin karesine eşit m tane yuvaya anahtarlar
kıyıldığında,beklenen çarpışma sayısı ½’denküçük olacaktır. Tamam. Aslında bir
çarpışma bile olmasını beklemiyorum. Ortalamada yarımdan az bir çarpışma sayısı
umuyorum. Şimdi bunu kanıtlayabiliriz;küçük h altındaki 2 anahtarın çarpışma
olasılığı nedir?
h evrensel kümeden rastgele seçildiğinde h’ninetki
alanındaki belirli 2 anahtarın çarpışma olasılığı nedir diye soruyorum. 1/m. Doğru
mu? Tanımı bu, doğru, bu örnek için aynı zamanda 1/n2’ye de eşit.
Dolayısıyla, tabloda kaç tane anahtar çifti var? Kaç tane anahtar birbiriyle çarpışabilir?
Bu aslında temel olarak kaç çift değeri hesaplamam gerektiğine bağlıdır. Bu n’nin
ikili kombinasyonu kadar anahtar çifti eder.
Bu nedenle de her n için beklenen çarpışma sayısı, nnin ikili kombinasyonu kadar
olacaktır.n’nin ikili çiftlerinin buradaki çarpışma
olasılığı 1/n2 dir.Bu da ; nçarpı(n-1)/2, eğer formülü
hatırlarsanız, çarpı 1/ n2 eder.Bu da yarımdan küçüktür. Bu tüm
çiftler için geçerlidir. Eğer 6.042’deki doğumgünü paradoksunu anımsarsanız, bunubu
paradoksla ilişkilendirebilirsiniz.
Ama burada daha büyük bir kümeye sahibim ve bütün
çiftlere bakıyorum, ama kümem yeterince büyük olduğu için çarpışma olasılığı
göreceli olarak daha küçüktür. Eğer m’nin karekökünün ötesinde arttırmaya
başlarsam, eleman sayısı olan m’nin karekökü büyümeye başladığı anda, çarpışma
ihtimali de dramatik bir şekilde artar. Bunu doğumgünü paradoksundan da biliyorsunuz.
Ama eğer daha seyrek, daha az ise, çarpışma olmaz. Veya göreceli olarak daha az
çarpışma olacaktır. Şimdi size daha önce varsaydığım bir şeyi hatırlatmak
istiyorum; ama biraz hızlı geçmek istiyorum. Bu Markov’un eşitsizliği. Markov
eşitsizliğini kim hatırlıyor? Herkes elini hemen kaldırsın. Markov eşitsizliği
şunu söyler:
Bu önemli olasılık gerçeklerinden biridir. 0’ın altında
sınırlanmış rastgele değişken x için, x’in verilmiş herhangi bir t’den büyük
olma ihtimali, x’in beklentisi bölü t’den küçüktür. Bu önemli bir gerçektir.
Eğer x 0’dan küçük ise bu geçerli olmaz. Ama güzel bir gerçektir. Bu sayede,
bir olayın olasılığıyla, bekleneniilişkilendirebiliyorum. Buradaki fikir; genel
olarak, eğer beklenen küçük olacaksa, bu durumda rastgele değişkenin değerinin büyük
olması olasılığı yoktur. Bu pek mantıklı olmaz. Yani beklentim bir iken, bir milyon
gibi yüksek bir olasılıknasıl olabilir, yada buradaki
gibi beklenti küçük yani yarımken bunu nasıl uygulayabiliriz? Olamaz.
İspat da tanımdan yola çıkılarak yapılıyor.Ben bunu ayrık
rastgele değişkenler için yapıyorum. Tanım gereği x’in beklenen değeri,x 0’dan
sonsuza giderken, x çarpı kere rastgele değişkenimin büyük X’eeşit olmaolasılıklarının
toplamına eşittir. Bu tanımımızdır. Gerisi hayal edebildiğinizce kaba bir
yaklaşıklaştırma olacak. Herşeyden önce tüm küçük terimleri atarak başlayalım; x’in
t’den sonsuza gittiği durumda, xçarpı rastgele değişkenim büyük X’in x olma
olasılığının toplamlarına eşit yada büyük olanları
atıyorum. Yani bütün alt seviye terimleri atıyoruz. Şimdi bunların hepsini
eşittir t’nin alttan sınırlandırılmış değerleri ile değiştireceğim.
Bu sadece x’in t’den sonsuza giden değerleri üzerinde bir
toplama işlemidir; toplanacak elemanlar t çarpı büyükX’in,küçükx
‘eeşit olma olasılığı. x burada büyük t değerleri
alır, çünkü bunlar büyük değerlerdir. Ve bu da bunu dışarıya çıkarabileceğim
için, t çarpı x’in t’den büyük iken, büyükX’inküçükx ‘e eşit olma olasılıkları
toplamı, yani büyük X’in t’ye eşit yada büyük olma
durumu olur. t’ye böldüğümde bu da tamamlanmış sayılır.
Bu Markov’un eşitsizliğidir. Gerçekten basittir.
Chebyshev veya Chernoff sınırları gibi daha güçlü şeyler de var. Ama Markov’un
eşitsizliği inanılmaz derecede basit ve kullanışlı. Dolayısıyla biz bunu bir corollary yani sonuç
teoremi olarak kullanacağız. Sonuç olarak, n tane değeri n2 yuvaya
Evrensel Kıyım Fonksiyonu kullanarak yerleştirdiğimizde çarpışma olmama
ihtimali ½’den büyük veya eşit. Rastgele birkıyım fonksiyonu seçiyorum.
n tane anahtarı n2 sayıda yuvaya kıyarken,
çarpışma olmama ihtimali nedir diye sorarsam?
Cevap; Hiç çarpışma olmama ihtimali en az yarımdır. Yarısında çarpışma
olmayacağını garantiledim. İspatı ise gayet basit. Birden fazla çarpışma
olması ihtimali,şimdi Markov’un eşitsizliğini uyguluyorum,bu da beklenen çarpışma
sayısı bölü 1 Markov’ eşitsizliğine göre. Burada beklenen çarpışma sayısı daha
önce de gösterdiğimiz gibi yarımdan az. Buda ½’den küçük. Yine Markov
eşitsizliğini uygulayarak. Burada beklenen çarpışma sayısı daha önce de
gösterdiğimiz gibi yarımdan az. Yani en az bir çarpışma olmasınınolasılığı
yarımdan az ise, hiç çarpışma olmama olasılığı da en az yarımdır. Burada işimiz
biter. İyi düzeyde bir kıyım fonksiyonu bulmamız kolaydır. Bir kaçını rastgele
test ettim. Çoğu, tamam, yarısı, en az yarısı düzgün çalışacaktır. Eğer biraz
düşünürseniz, bu rastgele bir yapılandırma, çünkü hangisi olacağını söyleyemiyorum.
Bu açıdan yapılandırmacı değildir ama rastgele bir yapı.
Birçoğu bu güzel özelliğe sahip olduğu için, var olmak
durumundalar. Herbirini bulabilirim; rastgele birkaç tanesini test ettim ve bir
tane buldum. Buradaki tablomu doldurdu. Bütün bunlar ön hesaplama. Varolan bir
taneyi bulma olasılığım yüksek olduğundan onları bulacağım. Aynı zamanda iyi
bir ikinci düzey kıyım fonksiyonu bulmak için birkaç tanesini rastgeletest edin;çabucak
bulursunuz çünkü en azından yarısı çalışacak.
Ben sadece iyi birkaç tane olduğunu göstermek istiyorum.
Yapmam gereken, her bir durum için en az bir tanesinin çalıştığını ispatlamak.
Aslında, ben çok miktarda çalışan olacağını zaten gösterdim. Yarısı çalışacak.
Ama var olduğunu göstermek için, olasılığın 0’dan büyük olduğunu göstermem
gerekiyor. Bitirmek için hala depolama durumunu çözümlemek gerekiyor, çünkü
teoremde tablomun büyüklüğünün n düzeyinde olacağına dair güvence verdim.
Bunlar karesel büyüklükte yuvalardı. Bunların büyük O (n)
olduğunu göstereceğim. Birincidüzeyde bu kolay. Burada, yuvaların sayısının,
anahtarların sayısına eşit olmasını sağlarız. Bu şekilde birinci düzeyde depolama
n seviyesinde olur. Şimdi ninin anahtarların sayısınıgösterenve
i’ninci yuvaya kıyılan rastgele bir değişken olduğunu düşünelim.Bu büyük T’deki
i yuvasına kıyımlansın. ni yuvalardaki elemanların sayısı. mi ni ‘nin karesine eşit; bunu daha
öncede kullanmıştık.Buda ikinci düzey tablosu Si ‘nin yuva
sayısı.
Burada beklenen toplamdepolama birinci düzey için n;dilerseniz
n düzeyinde diyebilirsiniz, ama temelde birinci düzey için n artı beklenen
değer, yani i’lerin 0’dan m-1’e değiştiğinde ni karelerinin tetalarının
toplamı olacaktır. Buradaki her elemanın karesini eklemem gerekir. Bu toplamayı
kim hatırlıyor? Daha önce nerede gördük? Ek derse kim katıldı? Bunu nerede
gördük?
Beklenen değerleri topluyoruz. Evet, o algoritma neydi? O
sıralama algoritmasını yapmıştık, değil mi? Bunun hesaplanmasının önemli olduğu
sıralama algoritması hangisiydi? Herkes aynı anda söylemesin? Sıralama
algoritması ne olarak çağrılıyordu? Bucket -Kova sıralaması. Evet,n kutuya
rastgele düşen, rastgele değişkenlerin karelerinin toplamı teta n di.Teta n.. Doğru mu?
Daha önce de yaptığımız gibi, bununla bir olasılık sınırı
belirleyebilirsiniz! Markov’un eşitsizliğini de kullanarak belli bir miktar
çarpı n’den büyük olmasının ihtimali nedir diye sorarsam? Ama bizim bu çözümlemedeki
kilit noktamız bu. Eskiden bunu zamanla ilgili işlemiştik ama sıralama
algoritmalarını başta çalışmamızın nedenlerinden biri bunlarda kullanılan
tekniklerin çözümlemenin diğer yuvalarında da yaygın olarak görülmesidir. Siz
benzer birçok şey gördünüz, Kovasıralamasını da gördünüz, dolayısıyla bunu
ekstradan çalışmadan biliyorsunuz.
Geriye dönüp, Kova sıralaması analizini,çözümlemesinitekrar
etmek isteyebilirsiniz, çünkü burada
kullandık. Aynı analiziiki yerde kullandık.
Bugünkü dersimiz bitmiştir..
Gelecek derste görüşmek üzere..