MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş

Slides:



Advertisements
Benzer bir sunumlar
MIT503 Veri Yapıları ve algoritmalar
Advertisements

STRİNG FONKSİYONLARI.
IT503 Veri Yapıları ve algoritmalar
Bilgisayar Programlama Güz 2011
ÖNERMELER VE MANTIK HAZIRLAYAN: AYDIN EREN KORKMAZ
ORAN VE ORANTI ÖZGE ALTUNTAŞ.
MIT503 Veri Yapıları ve algoritmalar Algoritma Oluşturma – Açgözlü algoritmalar ve buluşsallar Y. Doç. Yuriy Mishchenko.
PROBLEM ÇÖZME TEKNİKLERİ
Matematik Günleri.
Kesirler 1/2 1/8 1/3 6/8 3/4.
MIT563 Yapay Zeka ve Makine Öğrenmesi
MATEMATİK.
Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği
CLUSTERING USING REPRESENTATIVES Hazırlayan: Arzu ÇOLAK
MIT503 Veri Yapıları ve algoritmalar Algoritmalara giriş
MIT503 Veri Yapıları ve algoritmalar En önemli graf problemleri
SUNUMLARLA MATEMATİK SAYESİNDE MATEMATİK BİR KABUS OLMAKTAN ÇIKACAK.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
Prof. Dr. Halil İbrahim Karakaş
ÜSLÜ SAYILAR DERS : Matematik SINIF : 8 ÖĞRENME ALANI : Sayılar
MIT505 İnternet ve Web Programlama: Dinamik web sayfaları, javascript
Tam Sayılarla Toplama Çıkarma.
TBF Genel Matematik I DERS – 1 : Sayı Kümeleri ve Koordinatlar
VERİ TABANI VE YÖNETİM SİSTEMLERİ  Birincil Anahtar Türleri  Access Veri Tabanında Bulunan İlişkiler  İlişkileri Tanımlama Bir – Çok İlişkisi Çok –
MIT503 Veri Yapıları ve algoritmalar Sıralama algoritmaları
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
TBF - Genel Matematik I DERS – 8 : Grafik Çizimi
BPR152 ALGORİTMA VE PROGRAMLAMA - II
KESİRLER.
Kareköklü Sayılar.
KESİRLERİ TANIYORUM Kesir nedir? Kesir çeşitleri
FONKSİYONLAR f : A B.
İŞLEM ve MODÜLER ARİTMETİK.
ÜSLÜ SAYILAR ileri.
SAYI ÖRÜNTÜLERİ ANAHTAR KAVRAMLAR MODELLEME ÖRÜNTÜ SAYI ÖRÜNTÜSÜ ÜS
İLKÖĞRETİM MATEMATİK 7.SINIF
 Merkezi eğilim ölçüleri: Ortalama Ortanca Mod  Ortalama: İki veya ikiden fazla sayının toplamının toplanan sayıların adedine bölünmesiyle elde edilen.
DOĞAL SAYILAR.
MATEMATİK ÖĞRENEBİLİR
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Lineer Cebir Prof.Dr.Şaban EREN
TAM SAYILARI SAYI DOĞRUSUNDA GÖSTERME TAM SAYILARDA DÖRT İŞLEM
İLKÖĞRETİM MATEMATİK 8.SINIF
BAĞINTI & FONKSİYONLAR.
MATEMATİK EŞİTSİZLİKLER.
Sayı Sistemleri Geçen Hafta Kayan Noktalı Sayılar
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
ANALOG-SAYISAL BÜYÜKLÜK VE SAYI SİSTEMLERİ
ALGORİTMA NEDİR? İster bilgisayarda, ister matematikte, isterse günlük hayatta karşımıza çıkan her problemin çözüm yolu vardır. Örneğin yemek yerken farkında.
BİL3112 Makine Öğrenimi (Machine Learning)
beraber yapalım Değişme özelliği Problemler gibi şeyler var.
TAM SAYILARLA ÇARPMA VE BÖLME İŞLEMLERİ
TAM SAYILARIN KUVVETİ.
RASYONEL SAYILAR.
RASYONEL SAYILAR.
Doğal Sayılarda Toplama Ve Çıkarma İşlemi
Doğal Sayılarda Çarpma ve Bölme İşlemi
İŞLEM KAVRAMI.
Algoritma ve Akış Şemaları
Bilgisayar Mühendisliği Bölümü
Bilgisayar ile Çeviri Sistemleri
RASYONEL SAYILAR MATEMATİK 7 A-) RASYONEL SAYILARDA ÇIKARMA İŞLEMİ
TAM SAYILAR.
İŞLEM KAVRAMI.
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Problem Çözme ve Algoritmalar
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritma Analizi
Sunum transkripti:

MIT503 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 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 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 eylemlerimizin algoritmalar olmasını bile düşünmeyiz

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 adet soğan, 1 tablet tavuk suyu kalıbı hazırlayın. İlk önce soğanları ince 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 ama algoritma şeklinde değil çünkü Tarif adım 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 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 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 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 “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 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 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 anlamına gelen bir sembol

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 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 x1x11

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 “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 (9x9) 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 Aksi Halde C‘nin son basamağı sonucun 2. basamak olarak yazın A’nın 3. basamak elde edin, a olsun B’nın 3. basamak elde edin, b olsun ...

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 bir 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 “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 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 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 “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 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 yazıyoruz Önce, birinci sayı basamak 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 Algoritmasını nasıl yazarız ?

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 “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 (9x9, 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 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ü 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ı 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 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ığı 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 daha 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 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 22 23 30 hedef aramasının sırası

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 22 23 30 hedef aramasının sırası

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 22 23 30 hedef aramasının sırası

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 22 23 30 hedef aramasının sırası

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

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

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 22 23 30 hedef aramasının sırası

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; 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ü 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 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 bölme araması:

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” (yani K-boyutlu 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, 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 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, “birçok boyutlu” aramada kullanılan ve ikiye bölmeye benzer bir yöntemdir

Çok boyutlu arama 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 (anahtar1,anahtar2) “ 1. kategori anahtar 2. kategori anahtar (anahtar1,anahtar2)

Çok boyutlu arama 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 2. boyut 1. boyut

Ç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? C 2. boyut D 1. boyut

Çok boyutlu arama I II III IV İkiside birlikte, hangi bölüm yapar?

Çok boyutlu arama I II III IV 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 I II 2. boyut III IV 1. boyut

Çok boyutlu arama I II III IV 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 I II 2. boyut III IV 1. boyut

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

Ç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: (anahtar1, anahtar2,anahtar3,...) Hedef belgesinin yerini bulmak için, hedef belgesinin anahtarları kullanılır hedef: (anahtar1, anahtar2,anahtar3,...)

Ç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 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 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