MIT 503 Veri Yaplar ve algoritmalar Algoritmalara giri

  • Slides: 60
Download presentation
MIT 503 Veri Yapıları ve algoritmalar Algoritmalara giriş Yrd. Doç. Dr. Yuriy Mishchenko

MIT 503 Veri Yapıları ve algoritmalar Algoritmalara giriş Yrd. Doç. Dr. Yuriy Mishchenko

Algoritmalara giriş Ders planı • Algoritmalar nedir • Algoritma “olmayan” algoritmalar – Günlük hayatta

Algoritmalara giriş Ders planı • Algoritmalar nedir • Algoritma “olmayan” algoritmalar – Günlük hayatta algoritmalar – Sayı ekleme ve çarpma süreçleri • Arama – İkiye bölme arama, sözlükler ve kataloglar – KD arama, anahtar kelime arama

Algoritmalar nedir • Algoritmalar herhangi bir problem için detaylı ve biçimsel çözüm planıdır •

Algoritmalar nedir • Algoritmalar herhangi bir problem için detaylı ve biçimsel çözüm planıdır • Herhangi algoritmanın temel adımları – Problem yada sorun kesinleştirmek – Problemin çözüm fikrini almak – Problemin çözüm yöntemi kesinleştirmek – Problemin çözüm planı yazdırmak, yani bu noktada algoritma vardır

Algoritmalar nedir • Genel anlamda algoritmalar bir çok durumda günlük hayatımızda kullanırız, günlük hayattaki

Algoritmalar nedir • Genel anlamda algoritmalar bir çok durumda günlük hayatımızda kullanırız, günlük hayattaki eylemlerimizin algoritmalar olmasını bile düşünmeyiz

Algoritma “olmayan” algoritmalar Örneğin, yemek pişirme tariflerinin hepsi algoritmadır • Yemek pişirmenin problemi –

Algoritma “olmayan” algoritmalar Örneğin, yemek pişirme tariflerinin hepsi algoritmadır • Yemek pişirmenin problemi – yemek pişirmektedir • Pişirme tarifi, bu problemini çözümdür • Yemek tarif websitelerinde tipik olarak bunun gibi tarifler görünülebilir. . .

Algoritma “olmayan” algoritmalar “Mercimek çorbası”: 2 su bardağı mercimek, 7 su bardağı su, 2

Algoritma “olmayan” algoritmalar “Mercimek çorbası”: 2 su bardağı mercimek, 7 su bardağı su, 2 adet soğan, 1 tablet tavuk suyu kalıbı hazırlayın. İlk önce soğanları ince doğrayıp yağda kavurun. Önceden yıkadığımız mercimeği, 1 tablet tavuk suyu kalıbını soğanların bulunduğu tencereye atın. Ardından kaynar su ilave edin. Bu şekilde yaklaşık 10 dakika kaynatın. 10 dakika sonra tenceredeki malzemeleri ince bir süzgeç yardımıyla süzün. Süzdükten sonra tekrar tencereye alarak bir kere daha kaynatın. Son kaynama sırasında ağız tadınıza göre tuz ekleyin. Mercimek çorbası hazır!

Algoritma “olmayan” algoritmalar • Bu bir algoritma şeklinde değil çünkü – Tarif adım ve

Algoritma “olmayan” algoritmalar • Bu bir algoritma şeklinde değil çünkü – Tarif adım ve yapılandırılmış şekilde değil, tüm adımlar hep birlikte ve karışık tek paragraftır – Tarif çok detaylı değil, birçok eylem tek cümle içinde karışık şekilde anlatır – “Tadınıza göre” gibi ifadeler belirli değil • Bunun sorun, daha önce yemek hiç pişirmemiş kişi bu tarifi gereken şekilde uygulayamaz

“Mercimek çorba tarifi” algoritma şeklinde 2 su bardağı mercimek alın, M olsun 7 su

“Mercimek çorba tarifi” algoritma şeklinde 2 su bardağı mercimek alın, M olsun 7 su bardağı su alın, SU olsun 2 adet soğan alın, SO olsun 1 tablet tavuk suyu kalıbı alın, TS olsun Tencere alın, T olsun SO ince doğrayıp yağda kavurun, K olsun K, T’ye atın M, yıkayın M , T’ye atın SU T’ye ekleyin, Ç olsun Ç’yi kaynatın 10 dakika bekleyin Ç’deki malzemeleri süzgeç yardımıyla süzün Ç’yi tekrar kaynatın 1 dakika bekleyin 1 çay bardağı tuz ekleyin Mercimek çorbası hazır!

Algoritma “olmayan” algoritmalar • Bu tarifin ana farkları – Tarif adım şekilnde yazılmıştır –

Algoritma “olmayan” algoritmalar • Bu tarifin ana farkları – Tarif adım şekilnde yazılmıştır – Tarif biçimsel yatay sırada yazılmıştır – Eylemlerde kullanılacak malzemeler detaylı ve belirli şekilde tanımlanmıştır – “Tadınıza göre” gibi belirsiz ifadeler yokmuş

Algoritma “olmayan” algoritmalar • Bu örnekte önemli bir kavramı da karşılaştık, yani değişken –

Algoritma “olmayan” algoritmalar • Bu örnekte önemli bir kavramı da karşılaştık, yani değişken – “tencere, T olsun” gibi ifadeler, uzun ifadeyi daha sonra daha kolayca birkaç defa tekrar kullanmak için faydalıdır – Değişken, bu anlamda daha önce belirtilmiş ve daha sonra kullanılacak bir uzun ifadenin temsili – Örneğin “mercimek, soğan, ve su içeren tencereyi kaynatın” tekrar yazmamak için, “T” sembolünü kullanarak, sadece “T’yi kaynatın” yazmamıza gerek var

Algoritma “olmayan” algoritmalar – Diğer açıdan değişken, aynı zamanda farklı ifadeler veya değerler içerebilir

Algoritma “olmayan” algoritmalar – Diğer açıdan değişken, aynı zamanda farklı ifadeler veya değerler içerebilir bir konteyner olarak düşünülebilir – “T olsun” derken, “T” adlı konteynere birşeyin atanmasını düşünürüz – “T” tekrar kullanacak zamanda, önce atanmış değerin tekrar kullanılması anlamına gelir

Algoritma “olmayan” algoritmalar • İşte değişken, yani başka bir uzun ifade/değer/işlemin sonucu/vb içeren ve

Algoritma “olmayan” algoritmalar • İşte değişken, yani başka bir uzun ifade/değer/işlemin sonucu/vb içeren ve anlamına gelen bir sembol

Algoritma “olmayan” algoritmalar • Ana okulda öğrenilmiş ekleme ve çarpma işlemleri de algoritmalar •

Algoritma “olmayan” algoritmalar • Ana okulda öğrenilmiş ekleme ve çarpma işlemleri de algoritmalar • Yani, ekleme işlemi – İki sayı birbirinin altında yazıp basamak eklemeye başlıyoruz – Eğer bir adımda sonuç 9 dan büyükse, 1 hatırlıyoruz ve sonraki basamakların toplamına ekliyoruz – Tüm basamaklar için bu şekilde ekleme işlemini yapıyoruz

Algoritma “olmayan” algoritmalar • Örnek: 38399 18389 56788 x 1 x 11

Algoritma “olmayan” algoritmalar • Örnek: 38399 18389 56788 x 1 x 11

Algoritma “olmayan” algoritmalar • Bunun nasıl yapılacağını hepimiz biliyoruz, algoritma/işlem sırası şeklinde bunu yazmak

Algoritma “olmayan” algoritmalar • Bunun nasıl yapılacağını hepimiz biliyoruz, algoritma/işlem sırası şeklinde bunu yazmak çok basit soru değildir • Deneyelim. . .

“Sayı ekleme” A, 1. giriş sayı olsun B, 2. giriş sayı olsun //basamakları sağdan

“Sayı ekleme” A, 1. giriş sayı olsun B, 2. giriş sayı olsun //basamakları sağdan sayılmayı deyelim A’nın 1. basamak elde edin, a olsun B’nın 1. basamak elde edin, b olsun a ve b’nın toplamı ekleme tablosunu (9 x 9) kullanarak bulun, C olsun Eğer C 9’dan büyük ise 1 hatırlayalım, H olsun Aksi halde H sıfır olsun C‘nin son basamağı sonucun 1. basamak olarak yazın ------ sonra A’nın 2. basamak elde edin, a olsun B’nın 2. basamak elde edin, b olsun a ve b’nın toplamı ekleme tablosunu kullanarak bulun, C olsun Eğer H 1’e eşit ise C‘nın sonraki sayı elde edin, yine C olsun Eğer C 9’dan büyük ise 1 hatırlayalım, H olsun Aksi Halde H sıfır olsun C‘nin son basamağı sonucun 2. basamak olarak yazın ------ sonra A’nın 3. basamak elde edin, a olsun B’nın 3. basamak elde edin, b olsun a ve b’nın toplamı ekleme tablosunu kullanarak bulun, C olsun. . .

Algoritma “olmayan” algoritmalar • Burada iki yeni kavrama karşılaşıyoruz – Koşullu işlemler; yani eğer

Algoritma “olmayan” algoritmalar • Burada iki yeni kavrama karşılaşıyoruz – Koşullu işlemler; yani eğer bir koşul doğruysa bir işlem, değilse diğer işlem yapmamıza gerek var Eğer C 9’dan büyük ise H bir Değilse H yok – Bunun gibi “ise” işlemlere koşullu işlem diyoruz

Algoritma “olmayan” algoritmalar • İkincisi önemli kavram olarak, fark edin ki algoritmamızda baya birine

Algoritma “olmayan” algoritmalar • İkincisi önemli kavram olarak, fark edin ki algoritmamızda baya birine benzer işlem var, yani A’nın 2. basamak elde edin, a olsun B’nın 2. basamak elde edin, b olsun a ve b’nın toplamı ekleme tablosunu kullanarak bulun, C olsun Eğer H 1’e eşit ise C‘nın sonraki sayı elde edin, yine C olsun Eğer C 9’dan büyük ise 1 hatırlayalım, H olsun Aksi Halde H sıfır olsun C‘nin son basamağı sonucun 2. basamak olarak yazın • Bu durumda “döngü” olduğunu diyoruz, yani birçok defa tekrarlanması gereken bir işlem

“Sayı ekleme” algoritması A, 1. giriş sayı olsun B, 2. giriş sayı olsun H

“Sayı ekleme” algoritması A, 1. giriş sayı olsun B, 2. giriş sayı olsun H yok olsun //basamakları sağdan sayılmayı deyelim A’nın K. basamak yada B’nın K. basamak var IKEN A’nın K. basamak alın, a olsun B’nın K. basamak alın, b olsun a ve b’nın toplamı ekleme tablosunu kullanarak bulun, C olsun Eğer H varsa C‘nın sonraki sayı alın, yine C olsun Eğer C 9’dan büyük ise H var olsun Değilse H yok olsun C‘nin son basamağı sonucun K. basamağı olarak yazın K’nin sonraki sayı alın, K olsun //yani sonraki basamağa gidin

Algoritma “olmayan” algoritmalar • İşte koşullu işlemler ve döngüler – Koşullu işlem algoritmanın bir

Algoritma “olmayan” algoritmalar • İşte koşullu işlemler ve döngüler – Koşullu işlem algoritmanın bir koşula bağlı, yani bir koşul doğru İSE, işlemdir – Döngü birkaç defa, yani bir koşul doğru İKEN, tekrarlanması gereken işlemdir

“Sayı ekleme” algoritması A, 1. giriş sayı olsun B, 2. giriş sayı olsun H

“Sayı ekleme” algoritması A, 1. giriş sayı olsun B, 2. giriş sayı olsun H yok olsun A’nın K. basamak yada B’nın K. basamak var IKEN A’nın K. basamak elde edin, a olsun B’nın K. basamak elde edin, b olsun a ve b’nın toplamı ekleme tablosunu kullanarak bulun, C olsun Eğer H var ise C‘nın sonraki sayı elde edin, yine C olsun Eğer C 9’dan büyük ise H var olsun Aksi Halde H yok olsun C‘nin son basamağı sonucun K. basamağı olarak yazın K’nin sonraki sayı alın, K olsun //yani sonraki basamak alın

Algoritma “olmayan” algoritmalar • Benzer şekilde çarpma işlemini inceleyelim; – İki sayı birbirinin altında

Algoritma “olmayan” algoritmalar • Benzer şekilde çarpma işlemini inceleyelim; – İki sayı birbirinin altında yazıyoruz – Önce, birinci sayı basamak ikinci sayının son basamakla çarpıyoruz; – Böyle çarpmaların sonuçları birbirinin altında her zaman soğa 1 basamak kayarak yazıyoruz – Sonuçta bütün elde edilen öyle sayıları topluyoruz (toplama işlemi biliyoruz, yani önceki algoritma)

Algoritma “olmayan” algoritmalar • Örnek: 38399 389 345591 307202 115197 14938311

Algoritma “olmayan” algoritmalar • Örnek: 38399 389 345591 307202 115197 14938311

Algoritma “olmayan” algoritmalar • Algoritmasını nasıl yazarız ?

Algoritma “olmayan” algoritmalar • Algoritmasını nasıl yazarız ?

Algoritma “olmayan” algoritmalar • Çarpma işlemde iki döngü var, yani – Bütün 2. sayının

Algoritma “olmayan” algoritmalar • Çarpma işlemde iki döngü var, yani – Bütün 2. sayının basamakları için, ve. . . – o 2. sayının basamağı için Bütün 1. sayının basamaklarını çarpmak gerekir • Döngüler içinde iki sayıların basamakları çarpılır; • Çarpımın son basamağı sonuca gider ve ilk basamağı hatırlanır ve sonraki basamakların çarpımını etkiler

“Sayı çarpma” algoritması A, 1. giriş sayı olsun B, 2. giriş sayı olsun B’nın

“Sayı çarpma” algoritması A, 1. giriş sayı olsun B, 2. giriş sayı olsun B’nın K. basamak var İKEN H, sıfır olsun A’nın M. basamak var İKEN B’nın K. basamak ve A’nın M. Basamak çarpım tablosu kullanarak (9 x 9, sonuçlar 81’den küçük) çarpın, C olsun C’ye H ekleyin, D olsun D’nin son basamağı eklenecek K. sonucun M. basamağı olarak yazın Eğer D 9 dan küçük ise H sıfır olsın Yoksa H D’nin ilk basamağı olsun Sonraki M basamağı alın Eklenecek K. sonuca sağda (K-1) sıfırı ekleyin //yani K. sonucu sola K-1 basamak kaydırmak lazım Sonraki K basamağı alın Elde edilmiş bütün eklenecek K sonucu birbiriyle ekleyin

Algoritma “olmayan” algoritmalar • Günlük hayatımızda düşünmeden birçok algoritma kullanırız, ama – Genellikle bu

Algoritma “olmayan” algoritmalar • Günlük hayatımızda düşünmeden birçok algoritma kullanırız, ama – Genellikle bu algoritmaları nasıl işletmeyi bilip biçimsel şekilde anlatamayız – İşlemi öğrenince tarifleri hatırlayamayız – Öyle algoritmaların detaylı talimatlarını yazmak bizim için zordur (örneğin ekleme, çarpma, çıkartma, bölme)

Algoritma “olmayan” algoritmalar • Algoritmaların açık, detaylı ve biçimsel temsillerini verebilmemiz gerekir çünkü –

Algoritma “olmayan” algoritmalar • Algoritmaların açık, detaylı ve biçimsel temsillerini verebilmemiz gerekir çünkü – Yeni durumda aynı algoritmayı uygulamak için algoritmanın iyi tanımı gerekmektedir – Algoritma diğerlere anlatmak için bu algoritmanın iyi tanımı gerekmektedir (özellikle bir algoritma bilgisayara anlatmak için) – Algoritmanın davranışı ve onun özelliklerini anlamak için algoritmanın gerçek tanımı gerekmektedir – Algoritmadan yeni algoritmaları çektirmek için algoritmanın gerçek tanımı gerekmektedir

Arama • Yukarıdaki basit algoritmalarla biz ilgilemeyeceğiz, yani ekleme çıkartma gibi işlemlerin nasıl yapılmasını

Arama • Yukarıdaki basit algoritmalarla biz ilgilemeyeceğiz, yani ekleme çıkartma gibi işlemlerin nasıl yapılmasını bilgisayar/işçinin bilmesini varsayırız • Daha önemli algoritmalar, bu temel işlemler üstünde olan ve daha zor problem çözen algoritmalardır

Arama • Arama, bunun gibi hem matematik hem bilgisayar işlemleri hem de günlük hayat

Arama • Arama, bunun gibi hem matematik hem bilgisayar işlemleri hem de günlük hayat için çok önemli bir konu • Örnekler: arkadaşların telefon numarası, katalogda ürünler, ucağın zaman tablosu, vb • Arama, algoritma bilimin en önemli konularından biri dir

Bir boyutlu arama • Genel arama, “n” nesne arasında bir hedef nesneyi olup olmadığı

Bir boyutlu arama • Genel arama, “n” nesne arasında bir hedef nesneyi olup olmadığı söyleme demektir, hedef varsa onunn pozisyonunu da bulmak gerekir • Diyoruz ki, “n” nesne dizisi vardır ve bu dizide bir hedef nesneyi aramamız lazım • En basit yaklaşımda, hedefi bulmak için dizideki bütün nesnelerin incelenmesi gerekir, yani ortalama n/2 incelenme işlemi yapılmalı 2 5 7 11 12 13 17 22 23 30

Bir boyutlu arama • Sıralanmış dizi varsa, arama dah çok hızlı gerçekleştirilebilir • Sıralanmış

Bir boyutlu arama • Sıralanmış dizi varsa, arama dah çok hızlı gerçekleştirilebilir • Sıralanmış dizi demek ki, nesneler veya dizideki sayılar bir şekilde sıralanmıştır, en küçük en büyüğe kadar artmakta 2 5 7 11 12 13 17 22 23 30

Bir boyutlu arama • İkiye bölme algoritmanın ana fikri, ilk adımda dizinin ortasına bakmaktır

Bir boyutlu arama • İkiye bölme algoritmanın ana fikri, ilk adımda dizinin ortasına bakmaktır • Eğer ortasında var olan sayı hedeften büyük ise, dizi sıralanmış olduğu için, hedef dizinin sadece sol yarısında olabilir, aksi halde – sağ yarısında olmalıdır İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • Öyleyse, ikinci adımda arama sol veya sağ yarısında devam eder

Bir boyutlu arama • Öyleyse, ikinci adımda arama sol veya sağ yarısında devam eder • İlişkili taraftaki orta sayısının hedeften daha büyük veya daha küçük olmasına göre, arama tekrar kalan dizinin parçasının yada sol yada sağ yarısında devam eder İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • İkiye bölme sıralanmış dizide hedefi çok hızlı bulmaya fırsat sağlar

Bir boyutlu arama • İkiye bölme sıralanmış dizide hedefi çok hızlı bulmaya fırsat sağlar çünkü kalan nesnenin sayısı her zaman iki kat azalır • Örnek n=1000 sayı, ilk adımda dizinin ortasına bakınca yada alt yada üst yarısında devam ederiz, yani hedef için olabilir nesne sayısı 500 nesnedir İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • İkinci adımda o yarısında çalışırken ortasına bakıyoruz, ve hedefin yeni

Bir boyutlu arama • İkinci adımda o yarısında çalışırken ortasına bakıyoruz, ve hedefin yeni yada alt yada üst yarısında olmasını öğreniyoruz, yani şimdi kalan nesne sayısı 250 • Üçüncü adımda kalan nesne sayısı 125 İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • 4. adımda, kalan nesne sayısı 65 • 5. adımda, kalan

Bir boyutlu arama • 4. adımda, kalan nesne sayısı 65 • 5. adımda, kalan nesne sayısı 33 • 6. adımda, kalan nesne sayısı 17 İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • • • 7. adımda, kalan nesne sayısı 9 8. adımda,

Bir boyutlu arama • • • 7. adımda, kalan nesne sayısı 9 8. adımda, kalan nesne sayısı 5 9. adımda, kalan nesne sayısı 3 10. adımda, kalan nesne sayısı 2 11. adımda, kalan nesne sayısı 1, ve hedefi bulmaya garanti var İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • Yani, 1000 nesne arasında biri bulmak için en çok 10

Bir boyutlu arama • Yani, 1000 nesne arasında biri bulmak için en çok 10 adım gerekliliği garantisi vardır • Bütün dizi incelersek, en çok 1000 adım gerekebilirdi • Bu yüzden sıralanmış dizinde ikiye bölme kullanarak arama çok hızlı yapılabilir İkiye bölme araması. . . 2 5 7 11 12 13 17 hedef 22 23 30 aramasının sırası

Bir boyutlu arama • İkiye bölme algoritması, sadece sayısal diziler için değil, çok genel

Bir boyutlu arama • İkiye bölme algoritması, sadece sayısal diziler için değil, çok genel durumda faydalı olabilir İkiye bölme araması:

Bir boyutlu arama • Sözlükler, sıralanmış bilgi deposudur, yani birçok kelime içeren sıralanmış dizi;

Bir boyutlu arama • Sözlükler, sıralanmış bilgi deposudur, yani birçok kelime içeren sıralanmış dizi; sözlükte gereken kelimeyi bulmak için ikiye bölme kullanılabilir – İlk önce sözlüğün ortasına bakmamız lazım, oradaki kelimelerin daha “büyük” yada daha “küçük” olmasını öğrenmemiz lazım; ona göre arama yada ilk yada son sözlüğün yarısında devam edilebilir, vb İkiye bölme araması:

Bir boyutlu arama • Ürün katalogları da düzenli şekilde ürün içerir; kataloglarda gereken ürünü

Bir boyutlu arama • Ürün katalogları da düzenli şekilde ürün içerir; kataloglarda gereken ürünü bulmak için, ikiye bölme yöntemi kullanılabilir – İlk önce katalogunun ortasına bakmamız lazım, oradaki ürünün daha “büyük” yada daha “küçük” olmasını öğrenmemiz lazım; ona göre arama yada ilk yada son katalogun yarısında devam edilecektir İkiye bölme araması:

Bir boyutlu arama • Telefon kıtapları da sıralanmış diziler, yani arkadaşınızın numarasını bulmak için

Bir boyutlu arama • Telefon kıtapları da sıralanmış diziler, yani arkadaşınızın numarasını bulmak için en hızlı yöntem şudur: önceden telefon kıtabının ortasına bakmak sonra yada ilk yada son yarısında aramaya devam etmektir İkiye bölme araması:

Bir boyutlu arama • Gördüğümüz gibi, ikiye bölme algoritması önemli genel arama yöntemidir İkiye

Bir boyutlu arama • Gördüğümüz gibi, ikiye bölme algoritması önemli genel arama yöntemidir İkiye bölme araması:

Bir boyutlu arama İkiye bölme arama algoritması giriş nesne dizisi, D olsun hedef nesnesi,

Bir boyutlu arama İkiye bölme arama algoritması giriş nesne dizisi, D olsun hedef nesnesi, H olsun D’nin ortasındaki nesnesi, A olsun A H’ye eşit değil ve D’nin boyut 1’den büyük İKEN EĞER A H’den büyük İSE yeni D D’nin sol yarısı olsun AKSİ HALDE yeni D D’nin sağ yarısı olsun D’nin ortasındaki nesnesi, A olsun Eğer A H’ye eşit değil İSE Hedef bulunamadı

Çok boyutlu arama • Aramanın ikinci önemli örnek, KD-arama algoritmasıdır • KD-arama “K-Dimensional search”

Çok boyutlu arama • Aramanın ikinci önemli örnek, KD-arama algoritmasıdır • KD-arama “K-Dimensional search” (yani Kboyutlu arama) demektir • KD-arama, birçok boyutlu verilerde verimli arama için bir yöntemdir

Çok boyutlu arama • Bir boyutlu arama - sözlük yada kitapta arama olarak düşünülebilir,

Çok boyutlu arama • Bir boyutlu arama - sözlük yada kitapta arama olarak düşünülebilir, yani bir kelime/isim kullanarak bir sırada düzenlenmiş kayıtlar arasında bir kayıdı bulmak için

Çok boyutlu arama • Çok boyutlu arama, birkaç kategoriye göre düzenlenmiş kütüphane katalogu olarak

Çok boyutlu arama • Çok boyutlu arama, birkaç kategoriye göre düzenlenmiş kütüphane katalogu olarak düşünülebilir • Yani, tüm belgelere birkaç kategoriden (edebiyet türü, ülke, yazar, vb) anahtar kelimeleri atanmış durumda belirli anahtarlara göre hedef belgenin yerini bulmak lazım

Çok boyutlu arama • İkiye bölme, “bir boyutlu” arama için efektif yöntemdir • KD-arama,

Çok boyutlu arama • İkiye bölme, “bir boyutlu” arama için efektif yöntemdir • KD-arama, “birçok boyutlu” aramada kullanılan ve ikiye bölmeye benzer bir yöntemdir

Çok boyutlu arama 2. kategori anahtar Eğer 1. kategorinin bütün anahtarları bir eksene 2.

Çok boyutlu arama 2. kategori anahtar Eğer 1. kategorinin bütün anahtarları bir eksene 2. kategorinin anahtarları 2. eksene koyarsak, tüm belgeler bu şekilde 2 boyutlu uzayında bir nokta olarak temsil edilecektir, yani “belge (anahtar 1, anahtar 2) “ (anahtar 1, anahtar 2) 1. kategori anahtar

Çok boyutlu arama 2. boyut KD-arama; 1. adım: bütün belgeleri 1. anahtara göre iki

Çok boyutlu arama 2. boyut KD-arama; 1. adım: bütün belgeleri 1. anahtara göre iki kümeye bölünce hedef hangi bölümde olması lazım? A B 1. boyut

Çok boyutlu arama 2. adım: tüm belgeleri 2. anahtara göre iki kümeye bölünce hedef

Çok boyutlu arama 2. adım: tüm belgeleri 2. anahtara göre iki kümeye bölünce hedef hangi bölümde olması lazım? 2. boyut C D 1. boyut

Çok boyutlu arama İkiside birlikte, hangi bölüm yapar? II IV 2. boyut I 1.

Çok boyutlu arama İkiside birlikte, hangi bölüm yapar? II IV 2. boyut I 1. boyut

Çok boyutlu arama Yani, farklı eksenleri sırayla ikiye bölüp hedefin hangi bölgede olmasını belirleyip

Çok boyutlu arama Yani, farklı eksenleri sırayla ikiye bölüp hedefin hangi bölgede olmasını belirleyip belge sayısını her zaman 2’ye azaltırız II IV 2. boyut I 1. boyut

Çok boyutlu arama 2 adımdan sonra, kalan belge sayısı 4 kat düşük, 4 adımdan

Çok boyutlu arama 2 adımdan sonra, kalan belge sayısı 4 kat düşük, 4 adımdan sonra - 16 kat, 10 adımdan sonra - 1, 000 kat düşüktür II IV 2. boyut I 1. boyut

Çok boyutlu arama 20 adımdan sonra – kalan belge sayısı 1, 000 kat düşüktür

Çok boyutlu arama 20 adımdan sonra – kalan belge sayısı 1, 000 kat düşüktür II IV 2. boyut I 1. boyut

Çok boyutlu arama KD arama • Bir belge kümesi vardır, bütün belgelere K kategoriye

Çok boyutlu arama KD arama • Bir belge kümesi vardır, bütün belgelere K kategoriye göre anahtar kelimeleri atanmıştır, belge: (anahtar 1, anahtar 2, anahtar 3, . . . ) • Hedef belgesinin yerini bulmak için, hedef belgesinin anahtarları kullanılır hedef: (anahtar 1, anahtar 2, anahtar 3, . . . )

Çok boyutlu arama • Hedefi bulmak için, ilk önce belgeler 1. anahtara göre iki

Çok boyutlu arama • Hedefi bulmak için, ilk önce belgeler 1. anahtara göre iki bölgeye bölünür (mesela, bütün var olan 1. anahtarların orta noktasına göre belgeler küçükler ve büyüklere bölünür) • Hedef 1. anahtarını kullanarak hedefin hangi bölgede olduğu öğrenilir; dolayısıyla o bölgede var olan belgeler elde tutulur (böyle taranacak belge sayısı 2 kat azaltılır)

Çok boyutlu arama • Kalan belgeler 2. anahtara göre iki bölgeye bölünür (yani bütün

Çok boyutlu arama • Kalan belgeler 2. anahtara göre iki bölgeye bölünür (yani bütün var olan 2. anahtarların orta noktasına göre küçükler ve büyüklere bölünür) • Hedef 2. anahtarına göre hedefin hangi bölgede olduğu öğrenilir; dolayısıyla sadece o bölgede olan belgeler elde tutulur (yeni tekrar belge sayısı 2 kat azaltılır) • Devam. . .

“KD arama” (K boyutlu arama) giriş belge dizisi, B olsun bütün kategorilerin anahtarlarının değişim

“KD arama” (K boyutlu arama) giriş belge dizisi, B olsun bütün kategorilerin anahtarlarının değişim aralıkları, A olsun // yani K tane M, 1. kategori olsun B’nin boyut 1’den büyük İKEN hedefin k. anahtarı, H olsun M. A aralığının ortası, O olsun EĞER O H’den büyük İSE yeni B, O’dan küçük M. anahtara sahip olan B’deki tüm belgeler olsun yeni M. A aralığı kendinin alt yarısı olsun AKSI HALDE yeni B, O’dan büyük M. anahtara sahip olan B’deki tüm belgeler olsun yeni M. A aralığı kendinin alt yarısı olsun yeni M sonraki kategori olsun