TTranskript
MIT Açık Ders malzemeleri
6.046J Algoritmalara Giriş, Güz 2005
Bu
materyallerden alıntı yapmak veya kullanım şartları hakkında bilgi almak
için:
Erik
Demaine ve Charles Leiserson, 6.046J Introduction to Algorithms, Fall
2005. (Massachusetts Institute of Technology: MIT OpenCourseWare).
http://ocw.mit.edu
(Giriş Tarihi: 08, 01,
2010).
Lisans: Creative Commons Attribution-Noncommercial-Share Alike.
Not: Lütfen atıf taparken bilgilere eriştiğiniz gerçek tarihi
kullanınız.
Atıflar ve Kullanım Koşulları konusunda daha fazla bilgi için:
http://ocw.mit.edu/terms
ve http://www.acikders.org.tr
sitesini ziyaret ediniz.
AÇIK DERS MALZEMELERİ ( 6.046J)
ALGORİTMALARA GİRİŞ .pdf dosyasını bilgisayarınıza indirmek için tıklayınız.
Ders 9
Bugün
ikili arama ağaçlarından bahsedeceğiz. Rastgele yapılanmış
ikili arama ağaçları denen bir şeyden bahsedeceğiz. Ve ikili arama
ağaçlarını ders boyunca BST
olarak kısaltacağım. Sanıyorum hepiniz ikili arama ağaçlarını daha önce
özellikle de etütlerde görmüşsünüzdür. Bu nedenle burada bunların
ardındaki temel fikirleri geliştireceğiz ve bunları nasıl rastgele hale
getireceğimizi ve nasıl iyileştireceğimizi inceleyeceğiz. Aslında
bildiğiniz gibi iyi arama ağaçları vardır.
bunlar göreceli bir şekilde dengelidir. Şunun gibi bir şeye
benzer. Ve bunların yüksekliği log n dir. Dengeli dediğimiz zaman,
bunlar iyidir. Log n düzeyinde olan herhangi bir şey iyidir; işe yarar.
Arama işlemi bağlamında log n düzeyinde olurlar.
Bunların dışında kötü arama ağaçları da vardır. Bunların
yüksekliği fazladır. Hatta bu yükseklik n değerine kadar gider.
Bu nedenle bu iyidir. Şu da kötüdür. Bizim yapmamız gereken bu ikili
ağaçları tasarlarken her zaman iyi yada çoğunlukla iyi olmalarını
sağlamaktır. Bu iyileştirme işini yapmanın birçok yolu vardır. Ve eğer
problem setini de dahil ederseniz sanırım önümüzdeki birkaç haftada
bunların 4 tanesini göreceğiz. Bugün rastgele yapma işlemini kullanarak
bunları çoğunlukla dengeli olacak şekilde nasıl yapılandıracağımıza
bakacağız. Sonra da problem setinizde bunları daha geniş anlamda
iyileştirmeye çalışacaksınız. Bu anlatımı daha ilginç hale getirmek ve
sizi motive etmek için bir süre rastgele yapılanmış ikili arama ağacını
şimdilik tanımlamayacağım. Ve bu konuyu ilginç hale getirmenin, sizi
konuya çekmenin bir yolu da eski arkadaşımız sıralama işlemini
kullanmaktır. İkili arama ağaçlarını kullanarak n kadar sayıyı
sıralamanın doğal bir yolu vardır. Size bir A dizilimi verirsem ikili
arama ağaçları işlemini bir kara kutu içinde kullanarak bu dizilimi
nasıl sıralarsınız? İkili arama ağacını kurarsınız ve ondan sonra da
sırayla bunun içinde adım adım gidersiniz.
Kesinlikle doğru. Bu durumda diyelim ki elimizde bir ağacın ilk
hali var ve bu boş. Ondan sonra da, bu dizilimin her elemanını bu ağacın
içine yerleştireceğiz. Sizin arama ağacını yapılandırmakla ilgili
söylemek istediğiniz şey buydu. Böylece A[i] ’yı burada ağacın içine
koyalım. Bu bir ikili arama ağacı araya yerleştirmesidir, yani standart
bir araya yerleştirmedir. Ondan sonra da bir inorder traversal yani iç
sıralı gezinme yaparız ki buna kitapta sıralı ağaç yürüyüşü
deniliyor. Tamam, siz bu algoritmaların ne olduğunu biliyorsunuz. Ama
çabuk bir hatırlatma olması açısından, ağaç araya yerleştirmelerinde
temelde A[i] elemanı aranır.
Bunun olması gerektiği yer bulunana kadar aranır. Eğer bunu bulamazsa da
o zaman bu değeri yeni bir yaprak olarak olması gereken yere
yerleştirir. Ağaç yürümesinde öz yinelemeli olarak sol alt ağaçta
yürünür. Bunu köke kadar sürdürür ve ondan sonrada sağ alt ağaçta öz
yinelemeli yürüyüş başlar. Ve ikili ağaç aramalarının bir özelliği
nedeniyle bu elemanları sıralı bir şekilde çıkışa verir. Haydi bu konuda
bir örneği hızlıca yapalım. Aslında bu örnek sizin daha önce gördüğünüz
bir sıralama algoritmasıyla da ilgili olacak. Örnek her ne kadar küçük
bir örnekse de burada göreceğimiz ilişki aslında oldukçada şaşırtıcıdır.
Aslında benim için bu böyleydi, bu dersi vermeye ilk başladığım
zamanlarda..
Evet
dizilimim 3, 1, 8, 2, 6, 7, 5. Ve bu elemanlara soldan sağa doğru
sırayla erişeceğim ve ağacımı kuracağım. Bu durumda gördüğüm ilk eleman
3. Ve bu 3’ü boş ağaca yerleştiriyorum. Bunun herhangi bir
karşılaştırmaya ihtiyacı yok. Sonra 1’i araya yerleştireceğim. Bakıp
karşılaştırıyorum: 1, 3’den küçük müdür büyük müdür?
Küçüktür. Bu nedenle bunu buraya koyuyorum. Sonra 8’i araya
yerleştiriyorum. Bu 3’den büyüktür. Bu nedenle buraya yeni bir yaprak
eklenir.
Sonra
2’yi araya yerleştiririm. Bu 1 ile 3 arasında bir yerdedir. Bu
nedenle bunu 1’in sağ ardılı
olarak yerleştiririm. Bu nedenle 2’yi şuraya koyarım. 6 , 3’den
büyüktür, ama 8’den de küçüktür. Bu nedenle 6 buraya gider. 7,
3’den büyüktür ve 8’den küçüktür; 6’dan da büyüktür. O nedenle
buraya gider. Ve 5, 3 ile 6
arasındadır. Onun için şuradadır. Ve bu şekilde bizim ikili ağacımız
ortaya çıkmış olur. Ondan sonra da bir iç sıralı gezinme yaparım ve bu
şekilde bunun sonucunda 1, 2, 3, 5, 6, 7 ve 8’i çıktı olarak alırım.
Şimdi büyükçe bir yığınım olduğu için bunu kafamda şöyle bir gözden
geçirebilirim. Ama bu noktada biraz dikkatli olmam gerekiyor. Doğal
olarak yapmanız gereken şey bunların sıralı bir düzende çıkıp
çıkmadığıdır: 1 2 3 5 6 7 8. Ve eğer büyük bir kümeniz yoksa o zaman
gidip bir tane alabilirsiniz. Bu her zaman yararlıdır. Bellek fiyatları
bugünlerde yükseliyor mu yoksa aşağıya mı gidiyor? Aslında bunu
tanımlayan şey politika. Fiyat kontrolü yada her neyse.
Şimdi
soru, algoritmanın koşma süresi nedir? Bunun yanıtı aslında değişken
olduğudur. Çözümlemesi kolay olan kısım işin başlangıç yapılanmasıdır.
Düzenli ağaç yürümesi, bu ne kadar zaman alır?
n, güzel.
Bu durumda yürüyüş için n düzeyinde ve başlangıç için de bir
sabit olacaktır. Buradaki soru n sayıdaki ağaç araya yerleştirmelerini
yapma sürem ne kadar olacaktır? Bu sorunun yanıtını “belli olmaz”dan
başka şekilde cevaplandırmak isteyen kimse var mı? Oradaki büyük
kargaşayı aslında ben çözdüm. Evet. Büyük Omega (n log n). Evet bu
doğru. Bu en azından n log n dir. Neden?
… Doğru. Yani siz bana iki yanıt verdiniz. Birincisi bu karar ağacının
alt sınırlamasına bağlıdır. Ama bu durumu aslında kanıtlamaz. Burada
biraz daha dikkatli olmanız lazım. Burada savunulan her zaman
Ω (n logn) olacağıdır; en
kötü durumda
Ω(n logn)
olduğu kesindir. Her karşılaştırma tabanlı sıralama algoritması en kötü
durumda
Ω(n log n)
dir. Ama bu her seferinde n log n olacaktır. Aslında
Ω(n
log n) dir, çünkü bu ikinci yanıtınıza bağlıdır. Yani mükemmel dengeli
bir ağaç olması alınabilinecek en iyi sonuçtur. Şimdi tahtaya çizdiğim
bu şekil hayatımda en çok çizdiğim şekildir. Sanırım 15 düğümlü bir
mükemmel ağaç. Yani şanslıysak bunu elde ederiz. Ve buradaki boğumların
derinliklerini toplayacak olursanız bu size ağacı aramanın maliyetini
verir. Ve özellikle de şu en alttaki n/2 boğumlarının derinliği logn
dir. Bu nedenle hepsi için en azından n log n’yi harcamanız gerekir.
Eğer dengeli değilseniz o zaman bu daha da kötü olacaktır. Bunun
kanıtlanmaya ihtiyaç vardır ama bu doğrudur. Yani her zaman
Ω(n log n)
değerini alır.
Ama başka
durumlar da olabilir; elemanlarınızın sıralı olduğunu biliyorsanız bunu
doğrusal sayı karşılaştırmalarıyla çözebilirsiniz, ama burada bunu
yapamazsınız. Bu soruyla ilgili başka tahmini olan var mı? Evet? Büyük
O(n²). Güzel. Neden? Doğru. Çünkü biz n işlem yapıyoruz ve her düğümün
yüksekliği en azından n. Yani araya yerleştirdiğimiz eleman başına
yaptığımız karşılaştırma sayısı en çok n. Bu nedenle de bu en fazla n²
olur. Başka yanıt var mı? Bu algoritmanın n² zamanını alma olasılığı var
mı? Bu değerin Teta (n²) olması için bazı durumlar olabilir mi? Bu eğer
sıralı bir haldeyse bu kötü olacaktır. Yani bu zaten sıralanmışsa veya
tersten sıralıysa o zaman kötü bir durumda olursunuz. Çünkü şuna benzer
bir ağaç elde edersiniz. Bu sıralanmış haldir. Ve sonra hesaplarsınız.
Böylece ağaçtaki toplam zaman için, tüm düğümlerin derinliğinin
toplamını x değiştikçe alırsınız. Durumumuzda bu 1+2+3+4 yani aritmetik
bir seri olur. Bunlardan n tane var o zaman da Teta n²
olacaktır; yani n kare bölü 2 gibi bir şey. Ve bu kötü haberdir.
Bu algoritmanın en kötü durumda koşma süresi n² olur. Bu size bir yerden
tanıdık geliyor mu? Yani algoritmaların en kötü durumda koşma süresinin
n² olduğu sıralanmış bir durumda? Ama eğer şanslıysak yani şanslı
durumda o zaman zaten bu sıralanmış dengeli bir ağaçtır. Bu çok iyi
olmaz mı? Omega logn yüksekliğindeki herhangi bir şey bize n logn
zamanında çalışan bir sıralama algoritması verir.
Yani
şanslı durumda n logn yi elde ediyoruz. Ama şansız durumda n² elde
ediyoruz ve bu şanssızlık sıralanmış olmaktan kaynaklanıyor. Bu size
daha önce gördüğünüz bir algoritmayı hatırlatıyor mu? Çabuk sıralama. Bu
algoritmanın koşma süresi
çabuk sıralamanın koşma süresine sıkı sıkıya bağlıdır. Öyle ki bu
algoritmanın yaptığı karşılaştırmalar çabuk sıralamanın yaptığı
karşılaştırmalarınla tıpatıp aynıdır. Bunu başka bir sırada yapar ama
aslında aynı algoritmanın bir şekil değiştirmiş hali gibidir. Buradaki
sürpriz de bu.
Daha önce
çabuk sıralamayı analiz etmiştik. Burada da o çözümlemenin yan faydasını
bedelsiz olarak elde edeceğiz. Buradaki ilişki BST sıralamasıyla çabuk
sıralamanın aynı karşılaştırmaları başka bir düzende yapmalarıdır. Şimdi
daha önce kullandığımız örneği bir kez daha ele alacağım: 3, 1, 8, 2, 6,
7, 5. Şimdi burada bir dizilim var. Bu dizilimin üzerinde çabuk
sıralamanın belli bir türünü çalıştıracağız. Burada biraz dikkatli olmam
gerekiyor. Aslında çabuk sıralamanın hemen göze çarpan bir versiyonu
olacak. Hatırlarsanız uygulamada standart olarak o sıkıcı çabuk
sıralamada ilk elemanı bölüntü elemanı olarak alıyordunuz. Bu nedenle
burada 3’ü alacağım. Ve sonra 3’ten küçük olan elemanları yani 1 ve 2’yi
bölüntünün bir bölümüne alacağım. Ve 3’ten büyük olan elemanları yani 8,
7, 6 ve 5’i alacağım ve çabuk sıralamanın bu türünde 8, 6, 7 ve 5
elemanların sıralarını değiştirmeyeceğim. Burada sıranın değişmeyeceğini
sıranın korunacağını söylememiz lazım aksi takdirde eşitlik tutmaz.
Sonuçta bu bir tür dengeli bölüntü algoritmasıdır. Ama oldukça kolaydır.
Bu çabuk sıralamanın belirli bir türüdür. Ve yakında bunu rastgele hale
getireceğiz. Ve bunu rastgele hale getirdikten sonra da farklılık
ortadan kalkacak. Tamam şimdi bölüntü elemanımızda yarattığımız soldaki
özyinelemeye bakalım. Burada 1 den küçük olan şey,
0 yada yok. 1 den büyük olan şeyler var
ki bu değer 2. Sonra da bizim
bölüntü elemanımız geliyor. Burada işimiz bitti. Bu tarafta da 8 ile
bölüntüyü yapacağız. Burada her şey 8 den küçük; bu durumda 6, 7, 5 elde
ediyoruz ve sağ tarafta da bir şey kalmıyor. Sonra 6 ile bölüntüyü
uygulayacağız. 6 dan küçük olan değer
5 ve 6 dan büyük olan değer de 7. ve bunlar da aslında
bölüntü elemanları ama çabuk yoldan elde edildiler. Şimdi bölüntü
elemanlarıyla elde edilen bu ağaç şu ağaca müthiş benziyor. Aslında aynı
ağaç olması gerekiyor. Adım adım gidersek, çabuk sıralama hangi
karşılaştırmaları yapıyor? Aslında önce her şeyi 3’le karşılaştırıyor;
kendisi dışında her şeyi. Şimdi şuraya bakarsanız yeni elemanları araya
yerleştirdiğimizde ne oluyordu? Olan şey her seferde bir eleman
yerleştirdiğimizde ilk yapılan bunun 3 ile karşılaştırılması. Eğer 3 den
küçükse o zaman sol dallanmaya gidiyoruz; eğer 3 den büyükse o zaman sağ
dallanmaya gidiyoruz. Yani 3 ile olan tüm bu karşılaştırmaları her iki
durumda da yapıyoruz. Sonra eğer 3 den küçük bir eleman varsa, bu ya 1
yada 2 dir. Eğer 1’se işimiz bitiyor. Burada bir birle
karşılaştırılmıyor ama 2’yi 1 ile karşılaştırıyoruz. Aslında 2’yi araya
yerleştirirken 3’le karşılaştırıyoruz ama aynı zamanda 1’le
karşılaştırıyoruz. Sonra burada da benzeri oluyor; aynı çabuk sıralamada
olduğu gibi. 3 den büyük elemanların durumunda biz her şeyi 8 ile
karşılaştırıyoruz. Çünkü burada 8’e göre bir bölüntü yaptık, şurada ise
3’ten sonra gelen boğum 8. 8’i araya yerleştirdiğimizde de her şeyin 8
den küçük olup olmadığını karşılaştırıyoruz ve böyle gidiyoruz; yani
yaptığımız karşılaştırmaların hepsi aynı ama sıraları biraz farklı. Yani
90 derece dönüyoruz. Aslında hoş bir durum. Ve bunun çözümlemede bazı
sonuçları ortaya çıkıyor. Özellikle en kötü durum halinde yürütüm süresi
Teta n² oluyor ve bu da çok
heyecan verici değil.
Bizi
burada gerçekten ilgilendiren rastgele düzenlenmiş hali . Çünkü bu durum
iyi sonuç verir. Rastgele hale getirilmiş BST sıralaması rastgele çabuk
sıralamanın çok benzeridir. Sonuçta yaptığınız ilk şey dizilimi tek
biçimli ve rastgele olarak değiştirmek ve bütün permütasyonları eşit
olasılıklı hale getirmektir. Sonra da BST sıralamasını çalıştırırız. Bu
temelde rastgele çabuk sıralamanın formüle edilmiş bir halidir. Bundan
sonrada rastgele BST sıralaması rastgele çabuk sıralamayla aynı
karşılaştırma işlemlerini yapar. Burada kökü rastgele seçiyoruz ve
şuradaki çabuk sıralamada da bölüntü elemanını rastgele seçiyoruz.
İkisinde de aynı farklılık var. Bu nedenle de bu algoritmanın süresi
rastgele çabuk sıralamanın aynısıdır. Çünkü her iki 2 durumda da
aynı karşılaştırmaları yapıyoruz ve yapılan karşılaştırmanın
sayısı eşit; bu aslında rasgele değişkenler içinde böyledir. Bu
algoritmanın rasgele değişkeni ve yürütüm süresi şu algoritmanın rasgele
süresine ve rasgele değişkenine eşittir; özelikle de umulanlar birbirine
eşittir. Ve bu durumda biz rasgele çabuk sıralamanın n elemanla beklenen
koşma süresini biliyor muyuz? Evet.
Θ(n
logn ). İyi burada biraz endişelenmiştim. Tamam özellikle BST’ nin
beklenen koşma süresi n log n. Tabii bu sıralama bağlamında çok heyecan
verici değil. Sıralamayı burada bu ilişkiyi ortaya çıkarmak için
kullandım. Burada bizi ilgilendiren şey ve BST sıralamasını anlatmamım
nedeni ağacın nasıl görüneceğidir. Bizim aslında istediğimiz bir arama
ağacıdır. Arama ağacı sıralamadan daha fazla şeyler de yapar. n
düzeyindeki adımlamalar bir arama ağacında yapılacak sıkıcı işlemlerden
biridir. Aramayı bir arama ağacında yaparsınız; bu da çok heyecan verici
değildir. Aslında elemanları önce sıralarsınız, sonra da bunları bir
dizilime yerleştirip ikili arama yaparsınız. Ama ikili arama ağaçlarıyla
ikili arama dizilimlerini karşılaştırdığınız zaman, ağaçların farkı
dinamik olarak güncellenebilmeleridir. Bu işlemi bugün bu derste
yapmayacağız daha sonraki problem setlerimizden bir tanesinde ele
alacağız. Şu anda sadece ısınma turlarını atlıyoruz. Diyelim ki
elemanlar değişmiyor. Bir ağacı en baştan yapılandırıyoruz. n sayıda tüm
elemanlarımız işin başında elimizde var. Ve biz bunu rastgele olarak
yapılandıracağız. Yani bu dizilimi rastgele olarak devşireceğiz, sonrada
tüm elemanları bir ikili arama ağacının içine atacağız. BST
sıralamasının yaptığı iş budur. Sonra n düzeyinde bir adımlama devreye
girer ama bu n düzeyindeki adımlama aslında beni ilgilendirmez. Beni
ilgilendirmiyor çünkü zaten bunu çözümlemiştik. Ama eğer işim bitmiş
olsaydı bu ders çok kısa olurdu. İstediğimiz şey aslında bir BST’ yi
rasgele yapılandırmak ve bu algoritmanın yaptığı işte budur. Bu ağaç
rastgele BST sıralamasından ortaya çıkar, yani basit ağaç araya
yerleştirme algoritmasını kullanarak bu elemanların oluşturduğu dizilimi
rastgele devşiririz. Buradaki soru bu ağaç neye benzeyecek? Ve özellikle
bundan gerçekten çıkarabileceğimiz bir sonuç var mıdır? BST
sıralamasının beklenen koşma süresi n logn. Dikkat ettiyseniz şu ana
kadar BST sıralamasının koşma süresinin ne olduğunu birkaç kez
tekrarladım. BST sıralamasının n eleman üzerinde toplam süresi, tüm
düğümler yani x değerleri değiştikçe düğümlerin derinliklerinin
toplamına eşittir. Derinlik sıfırdan başlar ve kök elemanına kadar
gider, onun ötesinde başka bir karşılaştırma yapmazsınız çünkü kök
elemanında karşılaştırma yapmazsınız; tüm karşılaştırmalar derinlik her
neyse o boyutta olur. Bu durumda da buradakinin beklenen cinsinden n
logn olduğunu biliyoruz. Bu bize ağaç hakkında ne söyler? Yani ağaçtaki
tüm düğümler, yani x’ler konusunda? Örneğin bu bize ağacın yüksekliği
hakkında bir bilgi verir mi? Evet? Doğru sezgisel olarak bu bize ağacın
yüksekliğinin
Θ(log n)
olduğunu ve n olmadığını söyler. Ama gerçekte bunu bize göstermez. Ve
bunu sadece sezgisel olarak ele aldığınızda bunun doğru olmayabileceğini
de düşünmeniz lazımdır. Aslında doğru da değildir. Size bunun gerçekte
ne olduğunu anlatayım. Şimdi eğer her iki tarafta da bekleneni ele
alırsak burada (n log n) elde ederiz. Yani buradaki beklenen değer (n
log n) dir. Şimdi burada ise beklenen toplam derinliği elde ederiz ki bu
çok heyecan verici bir şey değildir. Şimdi beklenen ortalama derinliğe
bir bakalım. Şimdi (1/n)’ye bakacak olursam bu ağaçtaki tüm n düğümün x
derinliğindeki toplamları alındığında bu tüm düğümler üzerindeki
ortalama derinliktir.
Burada
elde etmem gereken
Θ (n log
n) /n ‘dir çünkü her iki tarafı da n ye böldüm. Burada kullandığım
beklenenin doğrusallığıdır ve bu da
Θ(log
n) ye eşittir. Böylece burada karşılaştığım gerçek, beklenen koşma
süresinin bana ağacın ortalama derinliğinin log n olduğunu söylediğidir;
ama bu aslında ağacın yüksekliğinin log n olduğu anlamına gelmeyebilir.
Şimdi hatırladığınız gibi ağacın yüksekliği herhangi bir düğümün
maksimum derinliğiydi. Burada biz
ortalama yüksekliği sınırlıyoruz.
Şimdi
ağaçla ilgili bir örneğe bakalım; yine en çok sevdiğim resmi çizeceğim.
Şimdi burada hoş bir dengeli ağaç var diyelim ki sevdiğim ağacın
düğümlerinin yarısı kadar veya birazcık fazla. Sonra da bir yapraktan
uzayan oldukça uzun bir yol var. Hangisinden olduğu önemli değil. Ve
diyeceğim ki bu yolun toplam uzunluğu karekök n‘dir ve bu da log n’den
oldukça büyüktür. Bu yaklaşık log n’dir. Aslında bu,
log (n – kök n) gibi
bir şey olur. Yani bu düğümlerin logaritmik yükseklikleri, pardon
logaritmik derinlikleri vardır. Bu ağaçta ortalama derinliği
hesaplayacak olursanız bir çok düğümün,
örneğin n düğümün yüksekliği (log n) olsun; aşağıda geri kalan en
çok kök n sayıda düğümün derinliği de en fazla kök n olsun. Yani bu en
çok kök n çarpı kök n olur. Aslında bakarsanız bu yaklaşık şunun yarısı
kadardır ama bu çok önemli değildir. Yani bunlar n eder. Böylece bu n
log n olur, af edersiniz ortalama derinlik için: her şeyi n’ye bölmek
zorundayım. n log n aslında ortalama yükseklik ya da ortalama derinlik
olarak biraz büyük kalacak. Bu durumda buradaki ortalama derinlik (log
n) dir, ama ağacın yüksekliği (karekök n) dir. Yani bu yeterli değildir.
Ortalama derinliğin log n olduğunu bilmek yüksekliğin log n olduğu
anlamına gelmez. Ama bugünkü teoremin anlatmak istediği şey rastgele
yapılanmış bir ikili arama ağacının ortalama yüksekliğinin gerçekten de
log n olduğudur. BST = O(log n) düzeyindedir. Bilmek istediğimiz de
zaten bu, çünkü bu bize diyor ki bir ikili arama ağacını rastgele
yapılandırırsak o zaman bunun içindeki aramayı log n sürede yapabiliriz.
Bu, sıralama açısından o kadar önemli değildir. Biz bu ağacı
oluşturmanın beklenen koşma süresiyle ilgileniyoruz. Ve diyoruz ki bu
teoremi kanıtlayabilirsek aramayı çoğunlukla hızlı bir beklenen sürede
yapabiliriz. Onun için bugünkü dersin geri kalan süresini bu teoremin
kanıtlamasına ayıracağız. Hayal edebileceğiz gibi bu oldukça şaşırtıcı
olacak. Bu çabuk sıralama ya da benzeri durumlarda önemli bir olasılık
çözümlemesi oluşturacak.
Şimdi
eğer teoremle ilgili başka sorular yoksa ben kanıtlamanın çerçevesiyle
işe başlayacağım. Ne kanıtlamak istediğimiz aslında oldukça açık olmalı.
Şu ana kadar gördüğümüz çözümlemelerin hepsinden daha garip bir
çözümleme olacak. Ve burada bir rastgele değişkenin üstelini almayı
kullanarak güzel bir numara yapacağız. Ve bunu yapabilmemiz için de
Jensen’in eşitsizliği denilen bir gereç kullanmamız gerekiyor. Şimdi
bu gereci yada aracı kanıtlayacağız. Genelde olasılık araçlarını ya da
yöntemlerini kanıtlamayız. Ama bunu kanıtlayacağız. Çok zor bir iş
değil. Ayrıca temel bir çözümlemedir. Şimdi önkuram diyor ki; eğer
elimizde dışbükey bir fonksiyon f varsa ve bunun ne demek olduğunu
hepinizin bilmesi gerekiyor ama eğer unuttuysanız bunun tanımını
birazdan yaparım; Eğer elinizde dışbükey yada konveks bir fonksiyon f ve
rastgele bir x değişkeni varsa, beklenenin f’si,
en çok o rastgele
değişkenin f’sinin beklenenidir. Bununla ilgili yeterince düşünün ve
sezgisel olarak dışbükeye yakın bir fonksiyonu çizin. Ama biz bunu
kanıtlayacağız. Bunun bize sağlayacağı kolaylık ağacın yüksekliğini
gösteren rastgele değişkeni çözümlemek yerine, burada
Şimdi bu
istenen rastgele değişken olan
İlk
yapmamız gereken şey dışbükey bir fonksiyonu tanımlamaktır, çünkü
tanımlama ile oldukça fazla uğraşacağız. Şimdi bu gerçek bir
çözümlemeden çıkan bir kavram olacak; eğer ilgili çözümleme dersini
almadıysanız, burada çözümleme calculus yerine kullanılacak takma sözcük
olacak. Calculus dersinde dışbükeyliğin ne olduğunu görmüş olmanız
gerekirdi. Bir dışbükey fonksiyon şuna benzer bir şeydir. Tamam, iyi
oldu. Bu kavramı resmi hale getirmenin bir yolu eğri üzerindeki iki
noktayı ele almaktır. Bu evrede sadece gerçek değerleri ele alan
fonksiyonlarla ilgileniyorum
Onun için şöyle görünecektir: Bu
bir şeylerin f’ sidir; ve burası da o bir şeylerdir. Bu eğrinin
üzerindeki iki noktayı aldığımda ve bu iki nokta arasında bir doğru
çizdiğimde, bu doğru her zaman o eğrinin üzerinde bir yerde olur.
Dışbükeyliğin tanımı budur. Bunun geometrik bir kavramı da vardır ama
temelde aynıdır. Ama fonksiyonlar açısından bu doğru diliminin eğrinin
üzerinde yer alması gerekir. Bu parçanın dışındaki doğru parçaları,
eğrinin üzerinde yer almaz. Eğer bunu daha da uzatırsam o zaman eğrinin
altına doğru geçecektir doğal olarak. Ama bu dilimde parça eğrinin
üzerinde kalmalıdır.
Şimdi bunu biraz daha tanımlanır bir
hale getireceğim. Buna x diyeceğim. Böylece şu f(x) olacak. Ve buna da y
diyeceğim bu da f(y) olacak. Buradaki iddiam, x ile y arasında herhangi
bir sayıyı alıp baktığımda, eğrinin üzerindedir diyebilmektir. Bu
noktanın karşılığı doğru parçamda şuradadır. O noktanın y değeri bu
durumda şuradaki y değerinden daha büyük yada ona eşit olmalıdır, değil
mi? Bu noktanın hesaplanmasında biraz geometriye ihtiyacımız olacak.
Aynı zamanda eminim ki bu bir çözümleme konseptidir. Ama ben geometriye
daha yakın olduğum için buna geometri diyorum. Eğer elinizde p ve q gibi
iki nokta olursa ve bunların arasındaki doğru parçasını parametrize
etmek isterseniz, ki ben burada şu 2 nokta arasını parametrize etmek
istiyorum. Bunu yapmanın yolu bir doğrusal kombinasyon yada
birleştirmedir. Eğer biraz doğrusal cebir biliyorsanız, doğrusal
birleşim şöyle bir şeye benzer. Burada affine combination yada ilgin
birleşim denen bir kavramı ele alacağız. Ve bu kavram çerçevesinde
α
+
β =
1 olur.
Bunun sonucunda böyle noktaları ele aldığınızda
α
gibi bir sayıyı p noktasıyla çarparsınız, buna
β
gibi bir sayıyı q noktası ile çarparsınız ve elinizde
α
+
β=
1 vardır; eğer bütün bu noktaları alırsanız o zaman buradaki bütün
çizgiyi elde edersiniz ve bu biraz karışıktır. Ama biz tüm çizgiyi
istemiyoruz. Eğer alfa ve betanın negatif olmaması sınırlamasını
getirirseniz o zaman şu doğru parçası elde edilir. Böylece bu
α ve
β‘yı
0 ile 1 arasında değerler almaya zorlar. Çünkü bunların toplamı zaten
birdir ve tabii negatif değillerdir. Bu nedenle burada yapacağımız şey
α
x +
β
y yi ele almaktır. Bu bizim
şu 2 sınır arasındaki noktamız olacaktır:
α +
β
=1 ve (α
+
β)
IR içindeki tüm x ve y değerleri için,
α
ve
β
Bu
noktaların tanımladığı poligonu alırsınız. Bunlar doğru parçalarıdır.
Bunun içini alırsınız. Bunun gibi bir ilgin birleşim oluşturursanız,
poligonun içindeki veya sınırındaki bir noktayı elde edersiniz. Buradaki
iddia bütün bu noktaların eğrinin yukarısında olduğudur. Tekrar ediyorum
sezgisel olarak güzel kanonik bir dışbükey eğri çizerseniz bu doğrudur
ama aslında cebirsel olarak da doğrudur. Bu her zaman iyi bir şeydir. Bu
teoremi yada bu önkuramı nasıl kanıtlayacağımız konusunda öneriler var
mı? Aslında çok kolay. Bunu
kanıtlamak için kullanacağımız teknik ne olabilir? Tek kelime ile:
Tümevarım. Bu her zaman iyi bir yanıttır, evet. Tümevarım size “ben
buradayım” diye seslenecektir çünkü bunun n=2 durumunda dışbükeyliğin
tanımı kapsamında doğru olduğunu biliyoruz. Taban durumumuz da oldukça
net. Aslında burada daha da basit bir taban durumu var; bu durumda n =1
‘dir. Eğer
n = 1 ise, elinizdeki bire eşit olacak şekilde toplanacak tek sayı
olduğundan ,
α(1)
= 1 olur. Böylece burada herhangi bir şey olmaz. Bu başka bir yaklaşımla
(1kere
Bunun neden doğru olduğunu
görebilirsiniz, çünkü (1-
Ve o da
işte burada. Yani f dışbükeydir. Bunun doğru olduğunu, herhangi iki x
değeri için geçerli olduğunu biliyoruz; tabii bu ikisinin toplamının 1
olması durumunda. Yani bunun doğru olduğunu biliyoruz. Tabii bu
tümevarımı uyguladığımız durumda oluyor. Şimdi bu sağdaki terimle
tümevarım yoluyla oynayacağız. Dikkat edin, daha önceden n’nin 2’den
daha büyük bir tam sayı olabileceğini bilmiyorduk. Ama n’nin (n-1)’den
daha büyük olduğunu biliyoruz. Bu kadarından emin olabilirim. Böylece bu
(1-
Ama bu
derste yapabileceğimin en fazlası bu olabilir. Bu önkuramımız. Şimdi
burada kanıtlamak istediğim şey bu toplamanın en çok E[f(x)] olduğudur.
Aslında buna eşittir. Baktığınız zaman da eşit gibi görünüyor, değil mi?
Elinizde bir takım olasılıkların toplamı kere f(x) var. Bu aslında f( x)
in tanımı gibi görünüyor ama öyle değil. Burada biraz dikkatli olmanız
lazım çünkü E[f(x)]’in aslında f(x) in belirli bir değere eşit olma
olasılığını göstermesi gerekir. Bu ikisini şöyle ilişkilendirebiliriz.
Çok zor bir şey değil. f’in aldığı tüm değerlere bakabilirsiniz ve ondan
sonra da x’e eşlemlenebilecek tüm k değerlerine bakabilirsiniz. Yani
f(k)’nın X’e eşit olduğu bütün k değerlerinin toplamında x’in
k’ya eşit olduğu olasılığı ele alabilirsiniz. Bu f(X)’in x’e eşit olma
olasılığının başka bir anlatım biçimidir. Böylece, başka bir anlatımla
terimleri özel bir şekilde grupluyorum. Diyorum ki f(X) bazı değerler
alıyor. Burada bir düzeltme yapmam akıllıca olur; daha önce k’ları
tanımsız kullanmıştım. Bu nedenle şunlara
başka bir şey diyeyim. Burada bunlara y diyeyim. Af
edersiniz, burada simgelemi değiştiriyorum. Ama böyle daha anlamlı
oluyor. X’in x’e eşit olması olasılığına bakmalıyım. Burada beni
ilgilendiren bu f(X) değerlerinin hangi değerleri aldığıdır. Buna y
diyelim ve y’nin f olabilecek hangi değerleri aldığına bakalım; bu f’in
aralığıdır. Sonra x’in bütün değerlerine f(X)’in y’ye eşit olması
durumunda bakacağım. Bu olasılıkların hepsini toplayacağım, çünkü burada
x’in değişik değerleri olduğunda bunlar bağımsız olaylardır. Böylece
f(X)’in y’ye eşit olma olasılığı bu toplam olacak. Buradaki büyük X’dir.
Bu küçük y’dir. Ve sonra bunu y ile çarparsam, o zaman f (X)’in
beklenenini elde ederim. Şimdi bu konuda düşündüğünüzde bu iki
eşitsizliğin geçerli olduğunu görürsünüz. Bu burada biraz garip
görünebilir, çünkü şu toplamlar potansiyel olarak sonsuz olabilir. Ama
doğrudur. Ve böylece Jensen’in eşitsizliği kanıtlanmış olur. Gördüğüz
gibi o kadar zor değildi, birkaç tahta tuttu, ama temelinde bu güçlü
dışbükeylik önkuramı vardı. Yani burada sadece dışbükeyliği kullandık.
Ve aynı zamanda E(X) in tanımını kullandık. Dışbükeyliği kullandık ve bu
bize küçük f’leri içeri alma şansı verdi. Sonra bu terimleri tekrar
grupladığımızda gördük ki çıkan E[f(x)] miş. Yani buradaki tek
eşitsizlik dışbükeylikten kaynaklandı.
Evet,
şimdi sırada algoritmalar var. Şu ana kadar sadece temel olasılık
olgularıyla uğraştık ve bu bize iyi bir pratik sağladı. Bununla
testlerde karşılaşabilirsiniz onun için şaşırmayın. Bu benim içinde bir
çözülmesi gereken durumdu. Algoritmalar söz konusu olunca sezgiye çok
ihtiyacınız olur. Her hangi bir şey algoritma ile ilgili olunca bu
yaklaşım çok akılcıdır, çünkü bildiğiniz gibi bazı şeylere dayanmak
durumundasınız, çünkü siz bilgisayar bilimcilerisinizdir veya o türden
bir şeysinizdir. Bu dersin kapsamında siz bilgisayar bilimcilerisiniz.
Ama burada olduğu gibi temel olasılıklar işin içindeyse ve siz de
matematikçi değilseniz, bu daha az sezgisel bakış yaratır ve anlaması o
kadar kolay değildir. Ve testlerde hız oldukça önemlidir. Final
sınavınızda da hız önemli olacaktır. Ev ödevleri size kesinlikle zarar
vermez; ev ödevi sınav tarzı enteresandır, çünkü akıllı olmayı
gerektirir. Aslında yaratıcı olmak zorundasınızdır ve bu algoritma
tasarımını gerçekten sınayan bir durumdur. Şu ana kadar sadece çözümleme
yetimizi sınadık ve olasılıklarla ne kadar çalışabileceğimizi gördük
yani örneğin rastgele çabuk sıralamanın yürütüm süresi neydi, hatırlıyor
musunuz gibi şeylerle uğraştık. İkinci test aslında yaratıcılığınızı
sınayacak, çünkü daha fazla zamanınız olacak. İki saatte yaratıcı
olmanız biraz zordur. Evet, sonuçta rastgele yapılandırılmış bir ikili
arama ağacının beklenen yüksekliğini çözümlemek istiyoruz.
Bunu daha
önceden tanımlamıştım ama tekrar edeyim; bu bir sene önce bu dersin en
başındaydı. Ben n düğümü olan rastgele yapılandırılmış bir ikili arama
ağacının yüksekliği ile ilgili rastgele değişkeni alacağım. Yani
buradaki n değerleri rastgele haldedir ve bir rastgele permütasyon
kullanarak bu değerleri soldan sağa doğru ağacın içine yerleştireceğim.
Ne yükseklikte bir ağaç elde edersiniz? Her düğümün maksimum derinliği
nedir? X(n)’e fazla bakmayacağım; bunun yerine X(n)’in üstel haline
bakacağım. Bu durumda hala bir şeyler sezemeyebiliriz, ama 2’nin
X(n) üsteli bir dışbükey
fonksiyondur ve şöyle görünür: Bu oldukça diktir. Bu yapabildiğim en iyi
çizim; histogramı nasıl çizdiğimi görmüştünüz. Bundan sonra bu rastgele
değişkeni cebir ile bir şeyler olarak yazmak istiyorum. Bu yöntemde ana
uygulama bunu durumlara bölmektir. Bu bizim takip ettiğimiz genel
yoldur, çünkü burada olup biteni anlatan çok fazla senaryo vardır. Yani
bir ağacı en baştan nasıl yapılandırmaya başlarız? İlk yaptığımız şey
birinci düğümü ele almaktır. Bunu çizimimize koyarız ve kök yaparız.
Yani dizilimimizdeki ilk değeri, ki daha önceden bunun sıralamada nereye
geleceğini bilmeye imkan yoktur, kök olarak tanımlarız. Ve bu kök olarak
kalır. O noktadan sonra hiçbir şekilde kökü değiştirmeyiz. Bu evreden
sonra kalan elemanların bir kısmı kök değerinden daha küçüktür onun için
onlar buraya gelir. Şimdilik kökteki bu değere r diyelim. Ve bunların
bazıları da r’den büyüktür. Onlar da şuraya gider. Belki burada daha
fazla eleman vardır, belki de şurada. Kim bilir? Rastgele bölüntüleme
daha doğrusu tekbiçimli rastgele bölüntüleme çerçevesinde, ki bunun size
tanıdık gelmesi gerekiyor, burada k sayıda elemanın olması ve şurada da
(n-k) sayıda elemanın olmasının olasılığı, herhangi bir k değeri için
eşittir; çünkü bu seçim tekbiçimli yapılmıştır. Kök tekbiçimli olarak
seçilmiştir. Rastgele bir permütasyonun içindeki ilk elemandır. Bu
nedenle bunu kullanarak parametreler oluştururum. Burada kaç eleman var
ve şurada kaç eleman var? Bu bir rastgele yapılanmış ikili arama ağacı
olduğundan, şurada kaç boğum olacağı belirlenmiştir; çünkü kimin solda
kimin sağda yer alacağı r seçimine bağlıdır. Ve böylece çabuk
sıralamadaki gibi bölüntülemelerimi yapabilirim. r nin solunda ve
sağında kalan elemanları kullanarak, özyineleme ile rastgele
yapılandırılmış bir ikili arama ağacını iki alt permütasyon olarak
kuramlarım. Çünkü tekbiçimli permütasyonların alt permütasyonları da tek
biçimlidir. Yani sonuçta bunlar özyinelemeli problemlerdir. Ve biz
özyinelemeli problemlerin nasıl çözümleneceğini biliyoruz. Bütün
bilmemiz gereken burada (k-1) elemanının olduğu ve şurada da (n-k)
elemanının olduğu. Ve bu r nin k rütbesinde olduğu anlamına gelir;
hatırlarsanız rütbeyi ben sıralanmış dizilimlerin
dizini bağlamında kullanıyorum. Şimdi nereyi kullanmalıyım? Eğer kök
r’nin rütbesi k ise ve bu da rastgele olan bu olayın durumu ile ilgili
bir veri ise, o zaman
Burada
bir adet iki faktörü var Burada da bir maksimum var. Ama sezgisel olarak
biz rastgele değişkenleri bir sabitle nasıl çarpacağımızı biliyoruz
çünkü burada iki tane birbirine yaklaşık eşit özyinelemeli alt problem
var; bunlar ne olduklarını bilmesek de şu ikisinin maksimumu kadar. Ama
burada artı 1 var ve bunu
nasıl kullanacağımızı henüz bilmiyoruz. Diğer taraftan bizim
kullandığımız teknikler özyinelemeli çözümlerin sabit faktörlere kadar
olan durumlarında oldukça iyiler. Öte yandan bu artı 1 değeri bizim
sabit faktörümüzü çok fazla etkilemeyecek gibi görünüyor. Ama bu önemli
bir sorun olabilir çünkü üstel uygulamalarda bu 2 faktörüne yol açar. O
nedenle burada şu artı 1 değerinin ne olduğunu görmek o kadar kolay
değildir. Şimdi benim burada
Bu
kanıtlamayı bitirince neden
Eski
arkadaşlarınız göstergesel rastgele değişkenleri hatırlıyorsunuz değil
mi? Bütün bu analizler hep göstergesel rastgele değişkenleri kullanır.
Bu olayı da onlarla anlatacağız ve buna
Bu
durumda kökün rütbesinin ne olacağı konusunda n sayıda olasılık vardır.
Bu tek biçimli bir permütasyon olduğundan bunların her birinin olasılığı
eşittir. Böylece şimdi bu şartlı anlatımı bir toplam olarak yazabilirim
ve bu toplamda
Evet,
beklenenin doğrusallığı; bunu hatırlamak kolaydı. Şimdi bir toplamımız
var. E’ yi bunun içine koyalım. Evet şimdi çarpımımızın beklenenini elde
ettik. Burada ne kullanmalıyız? Bağımsızlık prensibini. Bunların
birbirinden bağımsız olduğunu umuyoruz. O zaman bunu yazabiliriz. Eğer
öyleyse bu da çarpımın bekleneni olacaktır. Burada şu 2’yi de köşeli
parantezin dışına çıkaralım, çünkü onu burada tutmanın hiçbir yararı
yok.
Buradaki Y’ler X gibi görünmeye başladı; ben bile artık bunları
okuyamıyorum. Bunun için özür
dilerim. Bunların hepsi Y olmalıydı. Ve bunların hepsi akıllı rastgele
değişkenler. Pekiyi, bunlar neden bağımsız? Burada baktığımız şey kökün
seçimi ile ilgili; kökün rütbesinin n boyutunda bir problemde ne
olduğuna bakıyoruz. Burada ise köke bakıyoruz ama esas baktığımız bu tip
arama ağaçlarında kökün sol tarafında neler olduğu ve sağ tarafında
neler olduğudur. Bunlar bağımsız seçimlerdir. Çünkü burada her şey
tekbiçimlidir. Onun için bu elemanın seçimi tekbiçimli oldu ve bu da sol
ve sağ taraflarla ilgili bölüntüleri sağladı. Sol ve sağdaki alt
ağaçların kökünün kim oldukları tamamen bağımsız özyinelemeli seçimlerle
belirlendi. Bu nedenle bu alıştığımızdan biraz daha karmaşık bir
durumdur.
Daha önce bu algoritmalar da rastgele seçimlerdi; şimdi ise bunlar
başlamadan önce seçtiğimiz rastgele sayılar ve yapılandırılmaya sonradan
gidiliyor. Bu komik bir durum ama bunlar hala birbirinden bağımsız ve bu
nedenle biz bunları aynı çabuk sıralamada olduğu gibi elde ediyoruz.
Tamam. Şimdi devam edelim. Ve artık biraz dağınık olmanın zamanı geldi.
Burada bildiğimiz bir şey var. E[
Ve buradaki kandırmaca da aslında çok büyük bir numarada değildir ama bu
maks’ın en çok toplama eşit olduğudur. Hatırlayın burada negatif olmayan
değerler vardı. Böylece 2/n
çarpı k’nın 1 den n’ye kadar olan değişiminin maks yerine toplamların
bekleneni elde edilir. Şimdi bu evre bir bakıma bizim sınır
tanımlamamızda bir şeyleri kaybettiğimiz adımdır. Şu ana kadar hep kesin
anlamlı gitmiştik. Şimdi bayağı bir dağınık çalışıyoruz. Bu maks’ın en
çok toplam olduğu doğrudur. Ama işler ilerledikçe bu bayağı gevşek bir
üst sınır hale gelir. Bunu ilerisi için aklımızda tutmak zorundayız. Bu
toplamayla başka ne yapabiliriz? Şimdi bunun size tanıdık geleceğini
umuyorum.
Şimdi elimizde iki şeyin toplamı varken ben bunu tek şeyin toplamı
halinde değerlendirmek istiyorum. Pardon? Evet, beklenenin
doğrusallığını kullanabilirsiniz. İyi. Evet, bu yapmam gereken ilk
işlem. Beklenenin doğrusallığı kavramı benim bunu ayırmama izin verir.
Şimdi elimde 2n şeyinin toplamı var. Ve ben bunu şu elemanların toplamı
ve bu elemanların toplamı olarak ikiye bölmek istiyorum. Bu iki toplam
hakkında bildiğimiz bir şey var mı? Bu iki toplamla ilgili bilinen
bildiğimiz bir şey var mı? Bunların ikisi de aynı. Buradaki terimlerin
her biri ikişer defa görünüyor. Birincisi
k-1 diyor. Ötekide n-k diyor. Ve bunlar tek sayı bile olsa bu
yine geçerli olacak. Yani bu durumda bu toplamlardan sadece bir tanesini
alıp sonra bunu 2 ile çarpabiliriz. Bu durumda bu 4/n çarpı şu toplam
olur ve ben bunu k’nın 0’dan n-1’e kadar olan değerlerindeki toplam
olarak yazacağım; bu da E [
Şimdi kontrol etmeniz gereken [
Yerine koyma metodu tümevarım yoluyla yapılan bir kanıtlama metodudur.
Ve her tümevarımla kanıtlama yönteminin iki yönü vardır; aslında çok
özentili değilse hemen her kanıtlamanın iki yönü vardır. Önce bunun bir
taban durumu olmalıdır. Ve buradaki taban durumu n = O(1), yani
birinci düzeyde
olma durumudur. Bunu yazmadım ama tabii ki eğer sabit bir ağaç
boyunuz varsa bunun yüksekliği de sabittir.
Bu durumda bunun doğru olması için bizim c yi yeterince büyük
seçmemiz gerekir. Yani bunu hiçbir zaman unutmamalısınız. Birçok kişi
bunu testlerde unutur. Burada biz taban durumunu bile belirttik ama
genelde taban durumunu fazla belirtmeyiz. Ve burada mutlaka bir tane
olduğunu varsaymanız gerekir. Ve tümevarım yöntemiyle yapacağınız her
kanıtta da bunu belirtmeniz gerekir. Şimdi tümevarım adımındayız. Burada
iddiam
Şimdi dikkat ederseniz k her zaman
n’den daha küçüktür. Bu durumda biz tümevarımı uygulayabiliriz. Şimdi bu
en çok 4/n çarpı k’nın 0’dan (n-1)’e kadar değiştiğinde
c kere k küpün toplamına eşittir.
Bu tümevarım hipotezidir. Hoş bir durum. Şimdi bu toplam için bir üst
sınıra ihtiyacım var. Ve eğer hafızanız iyiyse bu toplamın kapalı
formunu anımsayabilirsiniz. Ama benim eskiden olduğu kadar iyi bir
belleğim yok. Çocukken bu toplamı hiçbir zaman ezberlememiştim. Ve 12
yaşımdan beri ezberlediğim her şeyi de hatırlayamıyorum.
Bu toplamı yaklaşık bir değere
getirecek iyi yol ne olabilir? Entegral, evet, iyi. Bu nedenle c’ yi
dışarıya çıkaracağım. Böylece bu 4c/n olur. Ve toplamda en çok bu
entegral olur. Eğer aralığı doğru saptarsanız üst sınırı bir
arttırabilirsiniz. Böyle bir durumda n-1 yerine
n değerine çıkabilirsiniz. Bu kitapta var. Bu işlem monoton bir
fonksiyonunuz varsa oldukça da sezgiseldir. İşte işin anahtarı budur. Bu
nedenle elinizde şuna benzer bir şey olur. Ve bildiğiniz gibi toplam
bunların her birini almak ve bunları 1 değeri ile ağırlandırmakla
yapılır. Buradaki entegral bu eğrinin altındaki alanı hesaplamak
anlamına gelir. Özellikle bu durumda entegralin yaklaşıklaştırılmasıyla
ilgili söyleyeceğim şey, bu işlemin sonuna kadar birer değer
arttırılarak gidildiğinde toplam sonunda bu entegral olacaktır. Şimdi bu
şekilsel bir kanıtlama oldu. Ama bunu kitapta okuyabilirsiniz. Bunu da
daha önceki derslerinizden birinden bildiğinizi sanıyorum.
Şimdi umuyorum ki entegralleri
çözebilirsiniz. x³ ün entegrali
Şimdi geri kala bir dakikamda bununla
ilgili bir şeyler söylemek istiyorum. Sonuca nasıl ulaştığımızı
hatırlamaya çalışalım. Bunu yazmayacağım, çünkü yeterince zamanım yok.
Biraz önce
:3 log n
+ O(1). bu rastgele yapılanmış ikili bir arama ağacı için çok sıkı bir
sınırdır. Yani ağacın beklenen yüksekliği ile ilgili sıkı bir sınırdır
demeliyim. Aslında
Burada
neden
Yani
burada biz aslında k-1’e karşı n-k’ya bakıyoruz. Ve gerçekte burada bir
polinomsal versiyon var. Yani a ve b gibi iki değeri alıp a çarpı b nin
en büyük değeri, en çok a+b olabilir dersiniz. Öteki taraftan şunu da
diyebilirsiniz: 2 nin a’nıncı kuvvetinin maksimumu ve 2 nin b’ ninci
kuvvetinin maksimumu en çok
Ama
burada bunu k-1 ve n-k kapsayan bütün bölüntüleri çözmeye çalışıyoruz.
Bu nedenle eğer ortada bazı durumlarda tam eşit bölündüklerinde sorunlar
çıkarsa bu kabul edilebilir. Ama eğer bir skew yani kayıklık durumunda
bu şuna çok yakın olacaktır. Ve şu da bundan çok uzak olacaktır. Burada
çok fazla kayba uğramamak için kenara çok yaklaşmanız gerekir. Ya da
şurada çok fazla kaybedersiniz. İşte bu sezgiseldir. Şimdi bunu deneyin
ve
Gelecek
derste görüşmek üzere.
|