Mit503 veri yap lar ve algoritmalar algoritmalar a giri
This presentation is the property of its rightful owner.
Sponsored Links
1 / 60

MIT503 Veri Yapıları ve algoritmalar Algoritmalar a giriş PowerPoint PPT Presentation


  • 199 Views
  • Uploaded on
  • Presentation posted in: General

MIT503 Veri Yapıları ve algoritmalar Algoritmalar a 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

Download Presentation

MIT503 Veri Yapıları ve algoritmalar Algoritmalar a giriş

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

MIT503 Veri Yapıları ve algoritmalarAlgoritmalaragiriş

Yrd. Doç. Dr. Yuriy Mishchenko


Algoritmalara giri

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

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

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 algoritmalar1

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 algoritmalar2

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


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

“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 algoritmalar3

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 algoritmalar4

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 algoritmalar5

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 algoritmalar6

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 algoritmalar7

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 algoritmalar8

Algoritma “olmayan” algoritmalar

  • Örnek:

    38399

    18389

    56788

    x1x11


Algoritma olmayan algoritmalar9

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


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

“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

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 algoritmalar10

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 varEğer C 9’dan büyük ise H birDeğilse H yok

    • Bunun gibi “ise” işlemlere koşullu işlem diyoruz


Algoritma olmayan algoritmalar11

Algoritma “olmayan” algoritmalar

  • İkincisi önemli kavram olarak, fark edin ki algoritmamızda baya bir birine benzer işlem var, yaniA’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


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

“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 algoritmalar12

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


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

“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 algoritmalar13

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 algoritmalar14

Algoritma “olmayan” algoritmalar

  • Örnek:

    38399

    389

    345591

    307202

    115197

    14938311


Algoritma olmayan algoritmalar15

Algoritma “olmayan” algoritmalar

  • Algoritmasını nasıl yazarız ?


Algoritma olmayan algoritmalar16

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


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

“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 algoritmalar17

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 algoritmalar18

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

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


Arama1

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

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 arama1

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 arama2

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 arama3

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 arama4

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 arama5

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 arama6

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

22

23

30

hedef

aramasının sırası


Bir boyutlu arama7

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

22

23

30

hedef

aramasının sırası


Bir boyutlu arama8

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 arama9

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 arama10

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 arama11

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 arama12

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 arama13

Bir boyutlu arama

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

İkiye bölme araması:


Bir boyutlu arama14

Bir boyutlu arama

İkiye bölme arama algoritması

giriş nesne dizisi, D olsun

hedef nesnesi, H olsunD’nin ortasındaki nesnesi, A olsunA 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

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

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

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

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

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

(anahtar1,anahtar2)

2. kategori anahtar

1. kategori anahtar


Ok boyutlu arama5

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

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

Çok boyutlu arama

İkiside birlikte, hangi bölüm yapar?

I

II

2. boyut

III

IV

1. boyut


Ok boyutlu arama8

Ç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

I

II

2. boyut

III

IV

1. boyut


Ok boyutlu arama9

Ç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

I

II

2. boyut

III

IV

1. boyut


Ok boyutlu arama10

Çok boyutlu arama

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 arama11

Ç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ırhedef: (anahtar1, anahtar2,anahtar3,...)


Ok boyutlu arama12

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

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


Mit503 veri yap lar ve algoritmalar algoritmalar a giri

“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


  • Login