Ana içerik
Konu: Bilgisayar Bilimi > Ünite 1
Ders 1: AlgoritmalarTahmin Oyunu
Şimdi aynı problem için geliştirilen farklı algoritmaların ne derece farklı verimliliklerinin olabileceği hakkında bize fikir veren bir oyun oynayalım. Bilgisayar 1'den 16'ya kadar rastgele bir tam sayı seçecek. Bu sayıyı buluncaya kadar sayı tahmin edeceksiniz ve bilgisayar, her seferinde tahmininizin büyük yada küçük olduğunu söyleyecek.
Sayıyı bulduğunuzda, her tahmininizden sonra gelecek olan yeni tahmininiz için izlediğiniz yolu bir düşünün.
Belki doğru sayıyı buluncaya kadar 1, sonra 2, sonra 3, sonra 4 ve bu şekilde devam ederek tahmin etmiş olabilirsiniz. Bu yaklaşıma doğrusal arama denir, çünkü sayıları sıraya dizilmiş gibi tahmin ettiniz. Bu işe yarardı fakat en çok kaç tahmin hakkına ihtiyacınız olurdu? Eğer bilgisayar 16'yı seçseydi 16 kere tahmin etmek zorunda kalacaktınız. Eğer şansınıza bilgisayar 1'i seçseydi, o zaman ilk tahmininizde sayıyı bulmuş olacaktınız. Peki ortalama hakkında ne söyleyebiliriz? Eğer bilgisayar 1'den 16'ya kadar herhangi bir sayıyı eşit ihtimalle seçecek olursa, ortalama 8 tahmine ihtiyacınız olacaktır.
Fakat 1, 2, 3, 4 gibi sıralı şekilde tahmin etmekten daha verimli bir şey yapabilirsiniz, değil mi? Bilgisayar size tahmin ettiğiniz sayının büyük, küçük,yada eşit olduğunu belirttiği için tahmin etmeye 8'den başlayabilirsiniz. Eğer bilgisayarın seçtiği sayı 8'den küçükse 8'den 16'ya kadar bütün sayıları eleyebilirsiniz; çünkü biliyorsunuz ki 8 üst limittir. Eğer bilgisayarın seçtiği sayı 8'den büyükse, 1'den 7'ye kadar bütün sayıları eleyebilirsiniz. İki şekilde de sayıların yarısını eleyebilirsiniz. Bir sonraki tahminde kalan sayıların yarısını eleyin. Bu şekilde her seferinde kalan sayıların yarısını eleyin. Bu yarılama yaklaşımına ikili arama denir ve bu yöntemle bilgisayarın 1'den 16'ya kadar seçtiği sayıya bağlı olmaksızın, sayıyı en fazla 4 tahminde bulabilirsiniz.
Şimdi 1'den 300'e kadar olan bir sayı için anlattığımız yöntemi deneyin. Bunun için 9'dan fazla tahmine ihtiyacınız olmayacak.
Bu sefer kaç tahminde sayıyı buldunuz? Neden hiçbir zaman 9 tahminden fazlasına ihtiyacınız olmaz? (Matematiksel bir açıklama bulabilir misiniz)?
İkili aramaya tekrar döneceğiz ve onu bir JavaScript dizisindeki bir elemanı aramak için nasıl kullanabileceğimizi göreceğiz. Ama ilk önce daha zor bir problem için hazırlanan bir algoritmaya bakalım.
Bu içerik Dartmouth Bilgisayar Bilimleri öğretim görevlileri Thomas Cormen ve Devin Balkcom ile Khan Academy bilgisayar bölümü içeriklerini hazırlayan takımın işbirliği ile hazırlanmıştır. İçerik CC-BY-NC-SA lisanslıdır.
Tartışmaya katılmak ister misiniz?
- 2. oyunda sayıyı bulmamız için neden 9 deneme gerekti? Açıklar mısınız?(3 oy)
- 9 deneme yapmanıza gerek yok. 9 defadan az tahminle bilmeniz lazımdı. ki bu da oldukça makul. 300 sayılık bir dizide ilk tahmini, (tahmin edilecek yığın sayısı/2) olarak belirtmek, (daha fazla ya da daha az ipucunu verdiği için) yanlış cevapların yarısını elememizi sağlıyor.
150 ilk tercih. (sayı büyükse) 150'den küçük diğer sayıları eledik. elimizde 151-300 arası sayılar kaldı. sonra 225 deriz. daha küçükse 151 - 225 arası, daha büyükse 226-300 arrası sayılar üzerinde tahmine devam ederiz. böylelikle yanlış cevap evrenini hızlı elemiş oluruz.(23 oy)
- evet ay küçük fakat dünya güneşe daha uzak aya daha yakın olduğu için nesne persfektifi gereği ay her zaman güneşi kısmende olsa kapatacaktır(2 oy)
- Actually ı didn't understand what article means. I'm sorry :((2 oy)
- İkincisince 6 denemede buldum(2 oy)
- 1+2+36+9+5+86+35+6+89+6(1 oy)
- ben hala nerelerde kullanabileceğimizi anlamadım :((1 oy)
- let me be honest, ı did understand everything from here but explicitly most of students in turkey couldn't. unless yo do add turkish subtitles nobody will comprehend anything but if u do add than all of us would be proud for turkey.(1 oy)
- Ay, ikinci paragrafta yazıldığı üzere, güneşi engelleyecek kadar büyük olabilir mi? Güneş çok daha büyük değil mi?(1 oy)
- Termodinamiğin ikinci yasası entropi mümkünmü ?(1 oy)