VERİ YAPILARI YAZ OKULU. Teknoloji Fakültesi - Bilgisayar Mühendisliği Öğr.Gör.Günay TEMÜR

Benzer belgeler
BMT207 VERİ YAPILARI DATA STRUCTURE

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Yrd. Doç. Dr. Ümit ATİLA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

Veri Yapıları. Yrd. Doç. Dr. Şadi Evren ŞEKER

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

VERİ YAPILARI DATA STRUCTURE GİRİŞ

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Algoritma Analizi. Özelliklerinin analizi Algoritmanın çalışma zamanı Hafızada kapladığı alan

YZM 2116 Veri Yapıları

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#2: ALGORİTMA ANALİZİ

BİL-341 ALGORİTMALAR BÜYÜK O NOTASYONU AHMET ATAKAN atakanahmet@hotmail.com KIRGIZİSTAN-TÜRKİYE MANAS ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

YZM 2116 Veri Yapıları

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

YZM 2116 Veri Yapıları

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Azalt ve Fethet Algoritmaları

Algoritma Geliştirme ve Veri Yapıları 1 Temel Algoritma Kavramları. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

VERİ YAPILARI DERS NOTLARI BÖLÜM 2 ALGORİTMA ANALİZİ. Yard. Doç. Dr. Deniz KILINÇ

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

Alıştırma 1: Yineleme

Bölüm Özeti. Algoritmalar. Fonksiyonların Büyümesi. Algoritmaların Karmaşıklığı. Örnek Algoritmalar Algoritmik Paradigmalar

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

VERİ YAPILARI. GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi ÖĞR.GÖR.GÜNAY TEMÜR 1

GRAPH LAR Düzce Üniversitesi Teknoloji Fakültesi VERİ YAPILARI. Bilgisayar Mühendisliği ÖĞR.GÖR.GÜNAY TEMÜR 1

BLM-431 YAPAY ZEKA. Ders-4 Bilgisiz Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

YZM 2116 Veri Yapıları

f(x) ve g(x) reel sayılarda tanımlı iki fonksiyon olmak üzere, x > k olacak şekilde bir k vardır öyle ki,

YZM 2116 Veri Yapıları

3.Hafta Master Teorem ve Böl-Fethet Metodu

Algoritma Analizi Big O

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Ağaçlar (Trees) Ağaçlar (Trees)

ALGORİTMA İ VE PROGRAMLAMA

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Algoritma Nedir? Algoritma

Çizgeler (Graphs) Doç. Dr. Aybars UĞUR

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

I Java Veri Yapıları 1

Selection Sort Insertion Sort

{\} /\ Suhap SAHIN Onur GÖK

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

Yrd. Doç. Dr. Caner ÖZCAN

BLM-431 YAPAY ZEKA. Ders-5 Bilgili Arama Yöntemleri. Yrd. Doç. Dr. Ümit ATİLA

YZM VERİ YAPILARI DERS#9: HASH FONKSİYONLARI

Ağaç (Tree) Veri Modeli

YZM 2116 Veri Yapıları

Final Sınavı Örnek Soruları Bahar 2018

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Arasınav Örnek Soruları Bahar 2018

5.Hafta Alt Sınırları Sıralama Doğrusal-Zaman (linear time) Sıralaması (devam)

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

Veri Yapıları. Öğr.Gör.Günay TEMÜR Düzce Üniversitesi Teknolojis Fakültesi

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Veri Yapıları Dersi. Proje#2

BIP116-H14-1 BTP104-H014-1

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#3: ALGORİTMA ANALİZİ#2

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA VE PROGRAMLAMA I

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

Final Sınavı Soruları Bahar 2018

Veri Yapıları. Ağaçlar

YMT219 VERİ YAPILARI ÖDEV-1

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

BÖLÜM 11: YAPISAL VERİ TİPLERİ

Yrd. Doç. Dr. Caner ÖZCAN

Veri Yapıları Laboratuvarı

Algoritmalar. DERS 3 Böl ve Fethet(Divide and Conquer) İkili arama Sayı üstelleri Fibonacci sayıları Matriks çarpımı Strassen in algoritması

YZM 2116 Veri Yapıları

AĞAÇ-TREE VERİ YAPISI

Yrd. Doç. Dr. Caner ÖZCAN

Algoritma Analizi ve Büyük O Notasyonu. Şadi Evren ŞEKER YouTube: Bilgisayar Kavramları

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Algoritmalar ve Karmaşıklık

YZM 2116 Veri Yapıları

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Pratik Ara Sınav 1 Çözümleri

BIL222 Veri Yapıları ve Algoritmalar

YIĞINLAR YIĞINLAR. Yığın İşlemleri Postfix, Prefix, Infix. G. Ü. Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

Transkript:

VERİ YAPILARI YAZ OKULU

Bilgisayarda verinin saklanması (tutulması) ve organizasyonu için bir yoldur. Ne için gereklidir? Veri Yapıları Dersinin Amacı Gelişen ve sürekli büyüyen bilgi dünyasında veriye dayalı bazı problemler karşımıza çıkmaktadır. Zaman verimliliği (Time efficiency) -Erişim Hafıza verimliliği (Memory efficiency) -Saklama Bu problemler ile başa çıkmak için bazı yöntemler kullanılmaktadır. Veri Yapıları ve Veri Modelleri Arama Algoritmaları Sıralama Algoritmaları

Veri Yapıları Dersinin Amacı Bir şekilde verilerin hafızada saklanması gerekmektedir. Saklanmış veriler içerisinden istediğimiz bir veriye ulaşmak için de arama yapmamız gerekmektedir. Verilerin düzenli olması ve saklama sonrası daha hızlı ulaşmak amacıyla sıralanması gerekmektedir.

Veri Yapıları Dersinin Amacı Tüm bu işlemleri gerçekleştirirken bazı algoritmalar kullanılacaktır. Aynı zaman da bu algoritmalar için de bellek kullanımı gerçekleştirilecektir. Tam bu noktada amacımız; En az bellek kullanımı ile en hızlı çalışacak algoritmalardan faydalanmak veya geliştirmek.

Verileri tanımlayan veri tiplerinin, birbirleriyle ve hafızayla ilgili tüm teknik ve algoritmik özellikleridir. Veri Yapısı

Neleri Bilmeliyiz Değişken, Sabit, Operatör Kavramları Döngü Denetim Deyimleri Fonksiyon Tasarımı, Fonksiyon Çağırma, Parametre Aktarımı Diziler ve Bellek Düzeni İşaretçiler; İşaretçiler ve Diziler Arasındaki İlişki Dinamik Bellek Kullanımı Rekürsif Fonksiyonların Çalışması

Veri Yapılarına ilişkin genel tanımlar, (Ön Bilgi), Özyinelemeli ve Özyinelemesiz Algortimalarda Zaman Analizi, Bellek Gereksinimleri, Sıralama ve Arama Algoritmaları, Neler Öğreneceğiz Bağlı Liste ve Dizi Veri Yapıları, Yığın, Kuyruk Veri Yapıları, Ağaç Veri Yapısı, Prefix, Infix, Postfix kavramları, Heap Veri Modeli, Graf Veri Modeli, Hash Tablosu Veri Modeli, Hashing Uygulamaları Veri Sıkıştırma

Yürütme Zamanı: Temel Kavramlar Bir programın veya algoritmanın işlevini yerine getirebilmesi için, temel kabul edilen işlemlerden kaç adet yürütülmesi gerektiğini veren bir bağıntıdır. n elemanlı bir küme için yürütme zamanı T(n) dir.

Temel Kavramlar Zaman Karmaşıklığı: Büyüme Oranı Bir algoritmanın asimtotik notasyona göre karmaşıklık mertebesini gösteren bir ifadedir. O(n) -> big Oh Ω(n) -> big Omega Θ(n) -> big Teta şeklinde isimlendirildikleri gibi En iyi, Ortalama, En kötü / Best, Avarage,Worst Case Durumları için tanımlanmaktadırlar. Asimtotik ifadeler

Zaman Karmaşıklığı

Zaman Karmaşıklığı

YÜRÜTME ZAMANI ANALİZİ Algoritma Analizi int ortalama(int dizi[], int len) { int i, ort, top = 0; for (i = 0; i<len; i++) top += dizi[i]; ort = top / len; return ort; } BÜYÜME ORANI ANALİZİ int ortalama(int dizi[], int len) { int i, ort, top = 0; for (i = 0; i<len; i++) top += dizi[i]; ort = top / len; return ort; }

YÜRÜTME ZAMANI ANALİZİ Algoritma Analizi int ortalama(int dizi[], int len) // len= n { int i, ort, top = 0; -> 1 for (i = 0; i<len; i++) -> 1+(n+1)+n top += dizi[i]; -> n ort = top / len; -> 1 return ort; -> 1 } T(n) => 5+3n BÜYÜME ORANI ANALİZİ int ortalama(int dizi[], int len) { int i, ort, top = 0; for (i = 0; i<len; i++) top += dizi[i]; ort = top / len; return ort; } n+3 => O(n)

int faktoryel(int n) { if (n <= 1) Rekürsive Fonk. İçin Yürütme Zamanı Analizi } return 1; else return n*faktoryel(n - 1); Programın çalışma süresi, programın bir parçasının çalışma süresine bağlıdır.

n elemanlı bir hesaplama için, n-1 olan çalışma süresine bağlıdır. n=1 için T(1)=1 dir. Yani Rekürsive Fonk. İçin Yürütme Zamanı Analizi T(n) = 1+ T(n-1) T(n-1) = 1+ T(n-2) T(n-2) = 1+ T(n-3).. T(n-3). = 1+. T(n-4).. T(1) = 1+ 0

n elemanlı bir hesaplama için, n-1 olan çalışma süresine bağlıdır. n=1 için T(1)=1 dir. Yani T(n) = 1+ T(n-1) Rekürsive Fonk. İçin Yürütme Zamanı Analizi T(n-1) = 1+ T(n-2) T(n-2) = 1+ T(n-3) T(n-3) = 1+ T(n-4)...... T(1) = 1+ 0 T(n) = 1.n n ε O(n) n

float aritmatikort(int A[], int N) { Bellek Gereksinimi Hesabı int A[20] = { 7,65,3,23,64,58,69,35,34,79, 62,12,38,62,52,46,47,95,24,27 }; int k, toplam = 0; float ort; for (k = 0; k<20; k++) toplam += A[k]; ort = (float)toplam / 20.0; printf("ortalama değer = %f\n", ort); }

Bellek Gereksinimi Hesabı Öncelikle bellekte yer işgal edecek değişken bilgileri edinilir. A,k, toplam, ort İnt ve Float değişkenlerinin bellekte 4 byte yer tuttuğunu bildiğimizden 4*20+4*1+4*1+4*1= 92 byte bellek ihtiyacımız vardır.

ALGORİTMALAR SIRALAMA ve ARAMA

Bilgisayar bilimlerinde verilmiş olan bir grup sayının küçükten büyüğe (veya tersi) sıralanması işlemini yapan algoritmalara verilen isimdir. Bunlardan bazıları Seçerek Sıralama (Selection Sort) Sıralama Algoritmaları Ekleme Sıralaması ( Insertion Sort) Kabarcık Sıralaması (Baloncuk sıralaması, Bubble Sort) Hızlı Sıralama Algoritması (Quick Sort Algorithm) Birleştirme Sıralaması (Merge Sort) Sayarak Sıralama (Counting Sort) Yığınlama Sıralaması (Heap Sort)

Arama Algoritmaları Bilgisayar bilimlerinde, çeşitli veri yapılarının (data structures) üzerinde bir bilginin aranması sırasına kullanılan algoritmaların genel ismidir. Örneğin bir dosyada bir kelimenin aranması, bir ağaç yapısında (tree) bir düğümün (node) aranması veya bir dizi (array) üzerinde bir verinin aranması gibi durumlar bu algoritmaların çalışma alanlarına girer. Yapısal olarak arama algoritmalarını iki grupta toplamak mümkündür. Uninformed Search (Bilmeden arama) Informed Search (Bilerek arama)

Her durumda aynı şekilde çalışan algoritmalara uninformed search (bilmeden arama) ismi verilir. Arama Algoritmaları Genelde kullanılan arama algoritmalarının temelini bu grup oluşturmaktadır. Bu aramaların bazıları şunlardır: Listeler (diziler (array)) üzerinde çalışan arama algoritmaları: Doğrusal Arama (Linear Search) İkili arama (binary search)

Arama Algoritmaları Şekiller (graflar (Graphs) ) üzerinde çalışan algoritmalar Kruskal Algoritması Dijkstra Algoritması Bellman Ford Algoritması İkili arama ağacı (Binary Search Tree) Sığ öncelikli arama (Breadth First Search, BFS) Derin öncelikli arama (depth first search)

Arama Algoritmaları Metin arama algoritmaları (bir yazı içerisinde belirli bir dizgiyi (string) arayan algoritmalar) Kaba Kuvvet Metin Arama Algoritması (Brute Force Text Search, Linear Text Search) Horspool Arama Algoritması Knuth-Morris Prat arama algoritması Boyer-Moore Arama algoritması

Insertion Sort (Araya Ekleme Sıralaması)

Selection Sort

Bubble Sort (Kabarcık Sıralaması)

Merge Sort (Birleştir Sırala)

Quick Sort (Hızlı Sırala)

Linear Search (Doğrusal Arama)

Binary Search (İkili Arama)

Karşılaştırma