31
VERİ YAPILARI ve ALGORİTMA ALGORİTMA VERİ YAPISI

1-algoritma ve veri yapıları

  • Upload
    frhtngn

  • View
    366

  • Download
    22

Embed Size (px)

Citation preview

Page 1: 1-algoritma ve veri yapıları

VERİ YAPILARI ve ALGORİTMA

ALGORİTMA

VERİ YAPISI

Page 2: 1-algoritma ve veri yapıları

İnsanlar düşünme ve problem çözme yeteneğini algoritmalarla makinelere aktarırlar.

Veri Yapıları ve AlgoritmaVeri Yapıları ve Algoritma

Page 3: 1-algoritma ve veri yapıları

Bir işi gerçekleştirmek için gerekli olan işlem bilgileri ve çözüm yöntemleri algoritmalara adım adım nakşedilir.

Page 4: 1-algoritma ve veri yapıları

Bir makinenin yeteneğini belirleyen en önemli unsur bu yönden bakıldığında algoritmalardır.

Page 5: 1-algoritma ve veri yapıları

Eğer bir problemin algoritmasını oluşturabiliyorsak o problem makinelerle çözülebilir ve bunun terside doğrudur. Yani bir problem için algoritma kurulamıyorsa gücü ne olursa olsun bu problem makine (bilgisayar) ile çözülemez.

Page 6: 1-algoritma ve veri yapıları

Sanal makineden soyutlanma (Abstraction of virtual machine)

int sum(int[] x) {int sum(int[] x) { int sum = 0;int sum = 0; n = 0;n = 0; while (n < x.length) {while (n < x.length) { sum += x[n];sum += x[n]; }} return sum;return sum;}}

0010101010101000101010101010101010111110101010101111101011101010101110111010101011100010101010101000101010101010

......

Page 7: 1-algoritma ve veri yapıları

Algoritma Nedir?

Algoritma bir problemi çözüme ulaştırmak için uygulanan kurallar dizisidir.

Herhangi bir giriş verisine karşılık, çıkış verisi elde edilmesi gereklidir. Bunun dışındaki durumlar algoritma değildir.

Page 8: 1-algoritma ve veri yapıları

Algoritmanın önemli özellikleri

Yazılan komutun tek bir anlama gelmesi ve herkes tarafından anlaşılır olması gereklidir.

Yazılan komutların uygulanabilir olması gereklidir.

Her algoritmanın sonlanması, çalıştırılan komut sayısının sonsuz olmaması gereklidir.

Page 9: 1-algoritma ve veri yapıları

Algoritma Süreci Tasarım (design) Doğruluğunu ispat etme (validation) Analiz (analysis) Uygulama (implementation) Test

Page 10: 1-algoritma ve veri yapıları

Algoritma Analizi Neden algoritmayı analiz ederiz?

Algoritmanın performansını ölçmek için Farklı algoritmalarla karşılaştırmak için Daha iyisi mümkün mü? Olabileceklerin en iyisi

mi? Özelliklerinin analizi

Algoritmanın çalışma zamanı Hafızada kapladığı alan

Page 11: 1-algoritma ve veri yapıları

Çalışma Zamanı Analizi

N giriş verisi

Algoritma 1

Çalışma zamanı T1(n)

N giriş verisi

Algoritma 2

Çalışma zamanıT2(n)10001010101000111110001100011101010101010101010010001010101000100000000000011110101000111010

Algoritma 1 T1(N)=1000N

Algoritma 2 T2(N)=N2

Page 12: 1-algoritma ve veri yapıları

Çalışma Zamanı Analizi

Giriş verisi N

Çal

ışm

a za

man

ı T(N

)

Algoritma 2

Algoritma 1

1000

Page 13: 1-algoritma ve veri yapıları

N T1 T2

10 10-2 sec 10-4 sec

100 10-1 sec 10-2 sec

1000 1 sec 1 sec

10000 10 sec 100 sec

100000 100 sec 10000 sec

N değerinin 1000’den küçük olduğu durumlarda iki algoritma arasındaki çalışma zamanı ihmal edilebilir büyüklüktedir.

Page 14: 1-algoritma ve veri yapıları

Sıralama Algoritmaları

Arama Algoritmaları

Page 15: 1-algoritma ve veri yapıları

Niçin Veri Yapısı Kullanılır?

İşlemci-Bellek

Page 16: 1-algoritma ve veri yapıları

İnsanların zekalarını etkin bir biçimde kullanabilmeleri hafızalarınında güçlü olması gerekir. Hafızasını etkin kullanamayan yada hafızası zayıf olan insanlar bu yüksek zekalarından yeterince faydalanamayabilirler.

Page 17: 1-algoritma ve veri yapıları

Aynen bunun gibi bilgisayarın problemin çözümünde göstereceği performans bellek ile çok yakından ilgilidir. Bilgisayarın gücü ne kadar yüksek olursa olsun bellek kapasitesi düşük ise bilgisayar bu gücünü etkin olarak gösteremeyecektir. Belleğin kapasitesine göre çalışacaktır. Bu bakımdan bilgisayar belleğinin en iyi biçimde kullanılması ve gereksiz bellek harcaması yapılmaması çok önemlidir.

Page 18: 1-algoritma ve veri yapıları

Bilgisayar biliminde belleğin en iyi kullanımı ve organizasyonu için veri yapıları tasarlanmaktadır. Bu veri yapıları sayesinde bilgilerin bellekteki organizasyonu ve bilgilere erişim için mekanizmalar geliştirilmektedir.

Page 19: 1-algoritma ve veri yapıları

Niçin Veri Yapısı Kullanılır?

Yazılım-Donanım

Page 20: 1-algoritma ve veri yapıları

PROBLEM

Anabellek sıra sıra dizilmiş hücreler biçiminde düzenlenmiştir.

Herbir hücre belli hacimde bilgiyi saklar ve Gerektikçe buradaki bilgilere ulaşılmak için

kullanılır. Karmaşık bir problemin çözümü için gerekli

verileri bellek hücrelerine yüklerken donanımdaki sıraya bağımlı kalınmaktadır

Bu tasarım aşamasını zorlaştırmaktadır.

Page 21: 1-algoritma ve veri yapıları
Page 22: 1-algoritma ve veri yapıları

PROBLEM (devam)

Kullanıcı donanımla alakalı birçok detayı bilmek zorundadır.

Kullanıcı bu detay içerisinde boğulacak Sonuca yakınsamak karmaşık bir hal

alacaktır

Page 23: 1-algoritma ve veri yapıları

ÇÖZÜM

Problemin yapısına uygun soyut veri yapılarını düzenlemek ve

Bu soyut yapıları bilgisayar donanımında somut olarak gerçekleştirmenin yollarını araştırmak

Page 24: 1-algoritma ve veri yapıları

Gri tonlardan oluşan bir görüntüyü bilgisayar ortamında işlemek ve saklamak için herbir gri tonu tamsayılarla gösterdikten sonra, iki boyutlu bir matris oluştururuz. Bu matristeki herbir eleman görüntüdeki bir noktaya ait rengin sayısal değerini gösterir.

Bu iki boyutlu veriyi bilgisayar belleğine kaydetmek ve işlemek için veri yapısı oluşturmak gerekir.

Page 25: 1-algoritma ve veri yapıları

Örnek(devam)

Bu veri yapıları programlamayı verimli ve kolay hale getirir ve

Bilgisayar belleğini amaca uygun kullanmayı sağlar

Önemli olan bilgisayarın iç işleyişinden çok, problemin nasıl çözüleceğidir.

Page 26: 1-algoritma ve veri yapıları

HEDEF

Program tasarlanırken makinenin iç organizasyonuna göre değil, probleme cevap veren soyut yapıya göre düşünülmelidir ve

Bu soyut yapı bilgisayar belleği içerisinde gerçeklenmelidir.

Bu soyut düzenlemeleri gerçekleyen araçlar veri yapılarıdır.

Bilginin anlamlı sırada bir saklama biriminde tutulma biçimine VERİ YAPISI denir.

Page 27: 1-algoritma ve veri yapıları

Bazı Veri Yapıları

Bağlantılı Liste, Ağaç, Kuyruk Yığıt, Graflar

Page 28: 1-algoritma ve veri yapıları

DERSİN AMACI Bu dersin amacı, program geliştirmenin temel araçları olan veri

yapıları ve algoritmaların etkin kullanımını sağlamak üzere bu konularda genel bilgileri sunmaktır.

Dersin algoritmalar kısmının içeriği özetle şu konuları içermektedir: Algoritma süreci, genel program geliştirme araçları, Özyineleme kavramı, Altprogramlama, Sırlama algoritmaları ve arama algoritmaları, algortimaların etkinlikleri ve karmaşıklıkları. Yapısal özellikleri ve güçlü olanakları ile her programcının mutlaka bilmesi gereken bir dil olan C/C++ programlama dilinin temel özellikleri algoritma kavramı ile ilişkili olarak ortaya konulacaktır. Ayrıca çeşitli konularda algoritma örnekleri verilecektir. Veri yapıları kısmında ise: Diziler, Yığıt ve uygulamaları, Kuyruk veri yapısı ve uygulamaları, bağlı liste veri yapısı ve uygulamaları, ağaçlar ve ikili ağaç uygulamaları, graf ve uygulamaları konuları incelenecektir

Page 29: 1-algoritma ve veri yapıları

FAYDALANILABİLECEK KAYNAK KİTAPLAR Rifat Çölkesen, Veri Yapıları ve Algoritmalar ,

Papatya Yayıncılık, 2004, İstanbul Sefer Kurnaz, Veri Yapıları ve Algoritma

Temelleri, Papatya Yayıncılık, 2004, İstanbul. İbrahim Akman, C ile veri Yapıları, SAS, 2006,

Ankara.

Page 30: 1-algoritma ve veri yapıları

FAYDALANILABİLECEK KAYNAK KİTAPLAR Fatoş Tünay Yarman, Yusuf Murat Erten,

Bilgisayar Sistemleriı, Akademi Kitabevi TBV ortak yayını.Seçkin Yayıncılık, 2006, Ankara.

Ömer Akgöbek, C programlama ve programcılık sanatı, Beta yayınları, 2001.

Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık, 2002, Ankara.

Page 31: 1-algoritma ve veri yapıları

FAYDALANILABİLECEK KAYNAK KİTAPLARM.Ümit Karakaş, Bilgisayar

yazılımında veri yapıları ve Algoritmalar, Beta yayınları, 2000.

Vasif V. Nabiyev, Teoriden Uygulamalara Algoritmalar, Seçkin Yayıncılık, 2007, Ankara.