b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

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

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

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

Algoritmalar ve Karmaşıklık

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

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

Özyineleme (Recursion)

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);

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ü

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

Alıştırma 1: Yineleme

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

YZM 2116 Veri Yapıları

Problem Set 1 Çözümler

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

Algoritmalara Giriş Eylül 21, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Çalışma notu 6

Algoritmalara Giriş Ekim 17, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Dağıtım 15.

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

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

Ağaç (Tree) Veri Modeli

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

BIL222 Veri Yapıları ve Algoritmalar

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

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

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

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

Problem Seti 4 Çözümler

Arasınav Örnek Soruları Bahar 2018

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

BIP116-H14-1 BTP104-H014-1

{ x,y x y + 19 = 0, x, y R} = 3 tir. = sonlu kümesinin 32 tane alt kümesinde

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

Pratik Ara Sınav 1 Çözümleri

ALGORİTMA VE PROGRAMLAMA I

Algoritmalar. DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar Kırmızı-siyah ağacın yüksekliği Rotation / Dönme Insertion / araya yerleştirme

13.Konu Reel sayılar

Dr. Fatih AY Tel: fatihay@fatihay.net

Ara Sınav 1. Algoritmalara Giriş 14 Ekim 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Kitapçık 14

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

YZM 2116 Veri Yapıları

Algoritmalara Giriş 6.046J/18.401J

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

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

YZM 2116 Veri Yapıları

ALGORİTMA VE PROGRAMLAMA I

YMT219 VERİ YAPILARI ÖDEV-1

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir? Örnek...4 : Genel terimi w n. Örnek...1 : Örnek...5 : Genel terimi r n

YZM 2116 Veri Yapıları

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

Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

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

C PROGRAMLAMA D İ L İ

Veri Yapıları Laboratuvarı

BİL1001 Bilgisayar Bilimlerine Giriş 1

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

MIT OpenCourseWare Ekonomide İstatistiksel Yöntemlere Giriş Bahar 2009

Temel Kavramlar 1 Doğal sayılar: N = {0, 1, 2, 3,.,n, n+1,..} kümesinin her bir elamanına doğal sayı denir ve N ile gösterilir.

p sayısının pozitif bölenlerinin sayısı 14 olacak şekilde kaç p asal sayısı bulunur?

Temel Kavramlar. (r) Sıfırdan farklı kompleks sayılar kümesi: C. (i) Rasyonel sayılar kümesi: Q = { a b

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Algoritmalara Giriş 6.046J/18.401J

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

Merge Sort Bireşen Sıralama

SAYILAR DOĞAL VE TAM SAYILAR

Sivas Fen Lisesi Ortaokul 2. Matematik Olimpiyatı Sınavı A A) 55 B) 50 C) 45 D) 40 E) 35

6.Hafta Bilinen Probleme İndirgeme Tasarım Yöntemi

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

6.Hafta Kıyım Fonksiyonu (Hashing), BST. Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Örnek...3 : Aşağıdaki ifadelerden hangileri bir dizinin genel terim i olabilir?

köşe (vertex) kenar (edg d e)

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BLM 210 PROGRAMLAMA LABORATUVARI II PROJELERİ

HSancak Nesne Tabanlı Programlama I Ders Notları

YZM YAPAY ZEKA DERS#6: REKABET ORTAMINDA ARAMA

VERİ YAPILARI DATA STRUCTURE GİRİŞ

Yrd. Doç. Dr. Caner ÖZCAN

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

ab H bulunur. Şu halde önceki önermenin i) koşulu da sağlanır ve H G bulunur.

Diziler (Arrays) Çok Boyutlu Diziler

ÖZEL EGE LİSESİ FİBONACCİ DİZİLERİ YARDIMIYLA DEĞERİNİ HESAPLAYAN BİR FORMÜL

1. GRUPLAR. c (Birleşme özelliği) sağlanır. 2) a G için a e e a a olacak şekilde e G (e ye birim eleman denir) vardır.

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

Sevdiğim Birkaç Soru

2017 MÜKEMMEL YGS MATEMATİK

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Sınav Dağılım & IMKB Endeks

10. DİREKT ÇARPIMLAR

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

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

2. Dereceden Denklemin Köklerini Bulan Program

C++ Dilinde Bazı Temel Algoritmalar

Bu tanım aralığı pozitif tam sayılar olan f(n) fonksiyonunun değişim aralığı n= 1, 2, 3,, n,

YZM 2116 Veri Yapıları

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

(14) (19.43) de v yi sağlayan fonksiyona karşılık gelen u = F v fonksiyonunun ikinci türevi sürekli, R de 2π periodik ve

Transkript:

2014 Soru 1. (15 puan) 5,2,4,1,15,8,11,13,7,6 dizisinin elemanlarından maksimum özellikli bir yığın(heap) oluşturulmasını adım adım yazınız. Heapsort algoritmasının yardımıyla yapılacak sıralamayı anlatınız. Soru 2. (15 puan) Verilen bir (a n ) dizisi için a 0 =a n+1 = tanımlayalım. 1 i n olmak üzere bir a i elemanı için a i-1 a i ve a i+1 a i koşullarının ikisi de sağlanıyorsa a i elemanına güzel eleman denir. Bir dizinin birden fazla güzel elemanı olabilir. Örneğin, 1,5,7,6,8,10,4,11,3 dizisi için a 1 =1, a 4 =6, a 7 =4 ve a 9 =3 güzel elemanlardır. Verilen bir (a n ) dizisinin güzel elemanlarından birini O(log n) işlem zamanında bulabilen algoritma yazınız ve algoritmanızın gerçekten de O(log n) işlem zamanında çalıştığını kanıtlayınız. Not: Bu soruda O(log n) den daha fazla işlemle tasarlanmış ve doğru yazılmış algoritma için 5 puan verilecektir. 2012 Soru3. n elemanı olan A dizisi veriliyor. a) A dizisinin birbirine eşit ikililerinin sayısını bulabilen ve işlem zamanı O(n 2 ) den daha az olan bir algoritma tasarlayınız. b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz c) A dizisinin her bir elemanının 1,2,...2n değerlerinden birine eşit olan bir tamsayı olduğunu varsayalım. Bu bilgiyi kullanarak a) şıkkındaki soruyu yeniden çözünüz. Tasarladığınız algoritmanın işlem zamanı a) şıkkında tasarladığınız algoritmanın işlem zamanından daha iyi olmalıdır. Not: A dizisinin birbirine eşit olan 3 veya daha çok elemanının olmadığını varsayınız. Soru4. Her biri 3 tane birim kareden oluşan aşağıdaki gibi L biçimli taşlar veriliyor. Bu taşlarla verilen bir karesi çıkartılmış 2 n x2 n boyutlu satranç tahtasını kapatmak istiyoruz. L biçimli taşlar birbirinin üzerine gelemez. Bu problemi çözmek için böl ve yönet yöntemi ile bir algoritma tasarlayınız. 2013 Soru 5. Birbirinden farklı 8 tam sayı arasında bulunan 2. en büyük sayıyı en fazla 9 karşılaştırma ile bulabilen bir algoritma tasarlayınız. Örneğin, giriş verileriniz 5,7,13,11,3,9,1,6 ise algoritmanız en fazla 9 defa bu sayıları birbiriyle karşılaştırarak 11 sayısını bulmalıdır. 2011 Soru 6. 50,47,40,21,26,17 sayılarını teker teker boş bir kırmızı siyah ağaca ekleyiniz

2013 Soru7. Her terimi 3,6 veya 7 sayılarından biri olan n elemanlı bir diziyi doğrusal zamanda ve başka bir dizi kullanmadan sıralayabilen bir algoritma tasarlayınız. 2015 Soru 8. Aşağıdaki kırmızı siyah ağaca (2, 5, 8 ve 15 değerli düğümler kırmızıdır) 3 değerini ekleyiniz. Soru9. Fibonacci sayıları aşağıdaki gibi tanımlanmaktadır. F 0 =0, F 1 =1 ve her n>1 için F n =F n-1 +F n-2 Verilen n sayısı için O(n) işlem zamanında ve hafızayı O(1) düzeyinde kullanarak (yani Fibonacci dizisi dahil herhangi bir dizi tanımlamadan) F n sayısını bulabilen algoritmanın sözde kodunu (pseudocode) yazınız. Soru10. 2013

Soru11. Soru12. 2013 Soru13. Her biri artan sıralı n tane sayıdan oluşan k tane dizi veriliyor. Bu dizilerinin elemanlarını içeren artan sıralı k.n elemanlı bir A dizisi oluşturmak istenmektedir. A dizisini a) (10 puan) 1-azaltma (decrease by one) yöntemiyle b) (10 puan) Böl ve yönet (divide and conquer) yöntemiyle oluşturabilen algoritmaları tasarlayınız. c) (10 puan) Her iki algoritma için rekürens yazınız ve çözünüz. (Böl-yönet yönteminde k sayısını 2 nin kuvveti olarak alınız.)

Çözüm Soru1. Verilen sayılar soldan sağa ikili bir ağaca yerleştirilir 5 2 4 1 15 8 11 13 7 6 Sonra sondan başa doğru ilk iç düğümden başlanarak max-heap özelliğini sağlamayan her düğüm kendisinden büyük olan en büyük çocuğu ile yerdeğiştirilir ve her iç düğüm için bu işleme yapraklara ulaşılana kadar devam edilir. İlk bakılacak iç düğüm A[5]=15 ama bu düğüm max-heap özelliğini sağlar Sonra A[4]=1 düğümü 13 ile yerdeğiştirir 5 2 4 13 15 8 11 1 7 6 Sıradaki A[3]=4 değeri 11 ile yerdeğiştirir 5 2 11 13 15 8 4 1 7 6 Şimdi sıra A[2]=2 de, bu değer önce 15 le, sonra da 6 ile yerdeğiştirir 5 15 11 13 6 8 4 1 7 2 En sonda A[1]=5 değeri önce 15, sonra 13 ve en son 7 ile yerdeğiştirir. 15 13 11 7 6 8 4 1 5 2 Heap oluştu. Heapsort algoritması heapte son eleman kalana kadar aşağıdakileri yapar: heapteki son elemanla ilk elemanın yerini değiştirir, heapsize değişkenini 1 azaltır ve ilk elemandan Heapify fonksiyonunu çağırır. Örneğin ilk işlem aşağıdaki gibi olacaktır: Heapifydan önce

2 13 11 7 6 8 4 1 5 15 Heapifydan sonra 13 7 11 5 6 8 4 1 2 15 Sonra heapteki ilk eleman olan 13 le son eleman olan 2 yer değiştirecek, heapsize bir azaltılacak, ilk elemandan Heapify çağrılacak ve bu işleme heapte tek eleman kalana kadar devam edilecek. Sonuç sıra ile aşağıdaki gibi olacaktır: 11 7 8 5 6 2 4 1 13 15 8 7 4 5 6 2 1 11 13 15 7 6 4 5 1 2 8 11 13 15 6 5 4 2 1 7 8 11 13 15

5 2 4 1 6 7 8 11 13 15 4 2 1 5 6 7 8 11 13 15 2 1 4 5 6 7 8 11 13 15 1 2 4 5 6 7 8 11 13 15 Çözüm Soru2. Fikir: Özyinemeli olarak dizinin ortanca elemanına bakarız.bu eleman a m olsun. Eğer a m-1 < a m ise sol tarafta bir güzel eleman vardır,aksi durumda (yani bu koşulda solda güzel eleman yoksa) a m-2 <a m-1 olmalıdır ( aksi durumda a m-1 güzel eleman olurdu). Benzer olarak a m-3 <a m-2,...a 1 <a 2 olmalıdır ama son eşitsizlik a 1 in güzel eleman olması demektir, bu da solda güzel eleman yoktur varsayımıyla çelişmektedir. Yani eğer a m-1 < a m ise sağ tarafı atar, güzel elemanı sol tarafta ararız. Eğer a m-1 < a m değilse (yani a m-1 a m ise) a m >a m+1 eşitsizliğini control ederiz. Eğer a m >a m+1 ise güzel eleman sağ taraftadır. Aksi durumda (yani sağ tarafta güzel eleman yoksa) a m+1 >a m+2 olmalıdır (aksi durumda a m+1 güzel eleman olurdu). Benzer olarak a m+2 >a m+3, a n-1 >a n olmalıdır ama son eşitsizlik a n in güzel eleman olması demektir, bu da sağda güzel eleman yoktur varsayımıyla çelişmektedir. Yani eğer a m-1 a m ve a m >a m+1 ise sol tarafı atar, güzel elemanı sağ tarafta ararız. Eğer a m-1 a m ve a m a m+1 ise güzel eleman a m dir. İşlem zamanı analizi: T(n)=T(n/2)+Θ(1) master teoremden bu rekürensin çözümü Θ(log n) olur. Input A[1...n] Algoritma : Call Nice(A,1,n) Nice(A,l,r) while (l<=r) if (r==l) return A[l] if (r-l==1) if A[l] <A[r] return A[l] else return A[r] m=floor((l+r)/2) if A[m-1] <A[m] r=m-1 else if A[m] >A[m+1] l=m+1 else return A[m]

Çözüm. Soru3. (a) Önce A dizisini sıralarız, sonra da sıralanmış dizinin birbirine eşit olan ardışık ikililerinin sayısını sayarız. (b) Sıralamayı O(n lg n) işlem zamanında yapabiliriz, sıralı dizide eşit ardışık ikilileri ise O(n) işlem zamanında buluruz. Sonuç olarak, O(n lg n) işlem zamanı bulunur. (c)boyutu 2n olan bir T dizisi oluşturalım. Önce bu dizinin tüm elemanlarına sıfır atayalım. Sonra da A dizisinin elemanlarını teker teker tarayarak T[A[i]] değerini 1 artıralım. Şimdi T dizisindeki 2 lerin sayısı A dizisinin birbirine eşit ikililerinin sayısı kadar olacaktır. Bu algoritmanın işlem süresi O(n) olur. Çözüm soru4. Önce tahtayı tam ortasından 4 tane 2 n-1 x2 n-1 boyutlu tahtaya böleriz. Sonra ise L biçimli taşı, 2 n x2 n boyutlu satranç tahtasının tam ortasına L nin kareleri, çıkarılmış kareyi içeren parçaya gelmeyecek biçimde yerleştiririz. Şimdi boyutları 2 n-1 x2 n-1 olan 4 tane aynı soru var. Bu işleme 2x2 boyutlu karelere ulaşana kadar devam ederiz. Çözüm. Soru5. n sayı arasındaki en büyük sayıyı n-1 karşılaştırma yaparak bulabiliriz. Örneğin, sayılar arasında eleme yöntemiyle ( Avrupa futbol şampiyonlar ligine çeyrek finallerinden başlayarak benzer olacak biçimde) turnuva düzenleyerek bunu gösterebiliriz. Yani önce 1. sayı ile 2. sayıyı, 3. sayı ile 4. sayıyı, 5. sayı ile 6. sayıyı, 7. sayı ile 8. sayıyı karşılaştırırız ve büyük olanları alırız. 4 karşılaştırma yaptık ve elimizde en büyük sayı için aday olan 4 sayı kaldı. Şimdi bu 4 sayıdan 1. si ile 2. sini ve 3. sü ile 4. sünü karşılaştırırız ve yine büyükleri alırız. Bu defa 2 karşılaştırma yaptık ve elimizde 2 sayı kaldı. Bu iki sayıyı da karşılaştırarak 8 sayı arasında bulunan en büyük sayıyı 4+2+1=7 karşılaştırma ile bulmuş oluruz. 2. En büyük sayı, en büyük sayının karşılaştırılarak yendiği (yani büyük olduğu) sayılar arasında olmalıdır. Bu turnuva sırasında en büyük sayı, 3 sayı ile karşılaştırılmıştı. (çeyrek final, yarı final ve final). Bu 3 sayı arasındaki en büyük sayıyı yukarıda anlatılan algoritma ile 2 karşılaştırma ile buluruz. ( Yani 1. si ile 2. sini karşılaştırız ve büyük olanla 3. sünü karşılaştırırız.) Algoritmayı yukarıda verilen örnek için uygularsak, 5 ile 7 karşılaştır kazanan 7 13 ile 11 karşılaştır kazanan 13 3 ile 9 karşılaştır kazanan 9 1 ile 6 karşılaştır kazanan 6 7 ile 13 karşılaştır kazanan 13 9 ile 6 karşılaştır kazanan 9 13 ile 9 karşılaştır kazanan 13 ve 13 şampiyon(en büyük sayı) oldu. 13 ün karşılaştığı sayılar 11, 7, 9 dur 11 ile 7 karşılaştır kazanan 11 11 ile 9 karşılaştır kazanan 11 Sonuç: 11

Çözüm Soru6 1) 50 2) 50 3) 50 durum 3 babayı siyah dedeyi kırmızı yap 4) 50 47 47 47 40 40 Dedeye göre RIGHT-ROTATE uygula 5) 47 6) 47 durum 1 babayı ve 40 50 40 50 21 amcayı siyah, dedeyi kırmızı yap ve yeni eklenen eleman dede olsun. 7) 47 8) 47 9) 47 durum 2 babayı eklenen eleman yap ve Babaya göre LEFT-ROTATE uygula 40 50 40 50 40 50 21 21 21 10) 47 durum3 e dönüştü 11) 47 12) 47 26 40 50 40 50 26 50 26 26 21 40 21 21 13) 47 14) 47 26 50 durum1 26 50 21 40 21 40 17 17

Çözüm soru7.

Çözüm Soru8.

Çözüm 9.

Çözüm 10.

Çözüm11

Çözüm12.

Çözüm 13.