İleri Algoritma Analizi

Slides:



Advertisements
Benzer bir sunumlar
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Advertisements

STRİNG FONKSİYONLARI.
Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
KÜMELER.
Kofaktör Matrisler Determinantlar Minör.
BAĞINTI SAYISI VE ÇEŞİTLERİ Kim korkar matematikten?
MATLAB’İN SAYI YUVARLAMA FONKSİYONLARI
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Çizge Algoritmaları.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
MATRİS-DETERMİNANT MATEMATİK.
BM-103 Programlamaya Giriş Güz 2014 (8. Sunu)
MATLAB’te Döngüler.
C PROGRAMLAMA DİZİLER (ARRAYS).
JAVA’DA DİZİLER Dr.Galip AYDIN.
KONU: FONKSİYONLARIN LİMİTİ
BM-103 Programlamaya Giriş Güz 2014 (4. Sunu)
TEMEL KAVRAMLAR.
TEK FONKSİYON-ÇİFT FONKSİYON
Lineer Cebir Prof.Dr.Şaban EREN
KARTEZYEN ÇARPIM Sıralı İkili İki Kümenin Kartezyen Çarpımı
SONLU ELEMANLAR YÖNTEMİ
Çizge Algoritmaları Ders 2.
TOPLAMA İŞLEMİ VE ALIŞTIRMALAR.
HAZIRLAYAN: MURAT KULA
MATLAB’ de Programlama
Karenin Çevresi ve Alanı
Öğretmenin; Adı Soyadı :
MATLAB’ de Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Bilgisayar Programlama Güz 2011
TAM SAYILAR.
Hosoya Üçgeninin Üçgenleri
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
n bilinmeyenli m denklem
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Dinamik programlama ve açgözlü yaklaşım soruları.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
BİLGİSAYAR PROGRAMLAMA DERSİ 6. DERS NOTU Konu: Matlab’ de Diziler ve Matrisler.
İleri Algoritmalar 1. ders.
Algoritmalar II Ders 5 Açgözlü Algoritmalar.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Algoritmalar II Ders 10 Dinamik Programlama ve Açgözlü Yaklaşım Soruları-2.
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
Algoritmalar II Ders 7 Açgözlü Algoritmalar.
Algoritmalar II Ders 4 Dinamik Programlama Yöntemi.
C Sharp 9. hafta - dIZILER.
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
İleri Algoritma Analizi
Diziler.
Algoritmalar II Ders 11 Çizgeler. Çizgelerin bilgisayarda gösterimi. BFS algoritması.
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
İleri Algoritma Analizi
Chapter 6 Dönüştür ve Yönet (Transform-and-Conquer)
İleri Algoritma Analizi
doğal sayısındaki rakamların sayı değerleri toplamı kaçtır?
İleri Algoritma Analizi
Algoritmalar II Ders 3 Dinamik Programlama Yöntemi.
İleri Algoritmalar Ders 3.
İleri Algoritma Analizi
Konu : Fonksiyonların Lİmiti
İleri Algoritma Analizi
Diziler(Arrays).
Sunum transkripti:

İleri Algoritma Analizi Ders11: Algoritma problemleri Prof. Dr. Şahin EMRAH İleri Algoritma Analizi

Problem1 n>=1 tam sayı, x de 1<=x<=n koşuluna uyan bilinmeyen bir sayıdır. Bu x sayısını 1<=i<=n olmak üzere mümkün oldukça az x<=i türü karşılaştırma yaparak bulmak gerekir. (örneğin, n=10 olsun. Kullanıcıya 1<=x<=10 koşuluna uyan bir x sayısı düşün diyoruz ve kullanıcıya evet veya hayır yanıtı verebileceği sorular soruyoruz. x<=7 mi Evet x<=4 mü Hayır x<=6 mı Evet x<=5 mi Hayır cevap 6). Aşağıdaki 3 durum için en kötü durumda da log2n den daha az karşılaştırma yapan ve ikili arama algoritmasına benzer bir algoritma yazınız ve sonra en kötü durum için karşılaştırma sayısını tam olarak bulunuz. x tek sayıdır. x=y2 ve y tam sayıdır. x=2y ve y pozitif tam sayıdır.

Çözüm

Problem2 n x n boyutlu M matrisi n2 sayıda farklı tam sayılardan oluşmuştur. Bu matrisin her satırı soldan sağa ve her sütunu yukarıdan aşağıya artan sıralıdır. x sayısı M in bir elemanı olsun. M de x in yerini bulmak için verimli bir algoritma tasarlayınız. Algoritmanızın en kötü durumdaki karşılaştırma sayısını bulunuz.

Çözüm

Çözüm (devam)

Problem3 A dizisi sıralı olmayan n (n≥4) tane farklı sayıdan oluşan n elemanlı bir dizidir ve bu dizinin terimleri arasında n den çok büyük pozitif tam sayılar da vardır. Bu dizinin 2 en büyük ve 2 en küçük elemanını bulabilen verimli bir algoritma tasarlayınız. Algoritmanızın en kötü durumdaki karşılaştırma sayısını kesin olarak bulunuz.

Çözüm

Çözüm devam Örnek. Algoritmayı 16 elemanlı 1,2,3,...16 dizisine uygulayalım. İlk turda komşu sayıları karşılaştıralım. Bu durumda 8 karşılaştırma sonucunda “Büyükler”={2,4,6,8,10,12,14,16} ve “küçükler”={1,3,5,7,9,11,13,15} kümelerini belirleriz. “Büyükler” arasında eleme usulü turnuva (2<4, 6<8, 10<12, 14<16 sonra 4<8, 12<16 sonra 8<16) ile 7 karşılaştırma ile “şampiyon” olarak 16 yı buluruz. 16 nın elediği sayılar {15, 14, 12, 8} arasında 3 karşılaştırma ( 14<15, 8<12, 12<15) yaparak 2.büyük sayı olan 15 i buluruz. Benzer olarak “küçükler” arasındaki minimum sayıyı bulmak için eleme usulü turnuva (1<3, 5<7, 9<11, 13<15 sonra 1<5, 9<13 sonra 1<9) ile 7 karşılaştırma ile “şampiyon” olarak 1 i buluruz. 1 in elediği sayılar {2, 3, 5, 9} arasında 3 karşılaştırma ( 2<3, 5<9, 2<5) yaparak 2. Küçük sayı olan 2 yi buluruz. Toplam 28 karşılaştırma oldu.

Problem4

Çözüm Önce SELECT algoritmasının yardımıyla A dizisinin medianını buluruz. (Dizide esas eleman varsa bu eleman median olmalıdır.) Sonra da diziyi baştan sona tarayarak (örneğin, bir for döngüsü ile) bu dizide medianın kaç defa geçtiğini sayarız. Eğer en az defa geçiyorsa median esas elemandır, aksi durumda esas eleman yoktur. Algoritmanın işlem süresi Θ(n)+Θ(n)=Θ(n) dir. (SELECT algoritmasının işlem süresi+döngünün çalışma süresi)

Problem 5 A dizisi artan sıralı n tane farklı tam sayıdan oluşan bir dizidir. A[i]=i koşuluna uyan elemanı bulabilen (eğer böyle bir eleman varsa) verimli bir algoritma tasarlayınız. Algoritmanızın işlem süresini bulunuz.

Çözüm

Problem6 A[1...n] dizisinin elemanları [1, n] aralığından olan farklı tam sayılardır. Eğer A[i1]=i2, A[i2]=i3,...A[ik-1]=ik ve A[ik]=i1 ise (i1,i2, ...ik) indisler dizisine k uzunluklu döngü denir. Bir i için A[i]=i ise (i) 1 uzunluklu döngüdür. Örneğin, 4, 6, 3, 5, 8, 7, 2, 1 dizisinde (1, 4, 5, 8) dizisi 4- uzunluklu döngüdür. Bu dizide (2, 5, 7) dizisi 3 uzunluklu ve (3) ise 1 uzunluklu döngülerdir. Yani bu dizide 3 adet döngü vardır. Verilen bir dizinin döngü sayısını bulabilen verimli bir algoritma tasarlayınız. Algoritmanızın işlem süresini bulunuz.

Çözüm. İlk elemandan başlarız, sonra bu dizinin bu elemanının değeri olan indise gideriz. Başladığımız indise geri döndüğümüzde döngü sayısını tuttuğumuz sayacı bir artırırız ve 2. elemana geçeriz. Eğer bu elemanda daha önceden bulunmadıysak aynı algoritmayı bu elemana uygularız, bulunduysak, gezinmediğimiz elemanı bulana kadar veya tüm indislere gidilene kadar indisi bir artırırız. Gezindiğimiz indislerin bilinmesi için değerleri 1 veya 0 olan n boyutlu bir B dizisi kullanırız. Dizinin her elemanına sadece bir defa bakıldığına göre işlem süresi O(n) olur.

Problem7 A dizisi n (n≥5) tane farklı çok büyük pozitif tam sayıdan oluşan bir dizidir. Aşağıdaki problemlerin her biri için en kötü durumda karşılaştırma sayısının en az olduğu verimli bir algoritma tasarlayınız. Algoritmanızın en kötü durumdaki karşılaştırma sayısını bulunuz. Dizinin en büyük veya en küçük olmayan bir elemanını bulunuz. Dizinin en büyük veya 2. en büyük veya en küçük veya 2. en küçük olmayan bir elemanını bulunuz. 1≤k≤n/2 koşuluna uyan k sayısı için dizinin ilk k en büyük veya ilk k en küçük elemanı arasında olmayan bir elemanını bulunuz.

Çözüm. a) 1. , 2. ve 3. elemanları birbiri ile karşılaştırarak ortanca (birinden büyük, diğerinden küçük olan) elemanı buluruz. Bu eleman istenen koşulu sağlar. Sadece 3 karşılaştırma yaptığımıza göre işlem süresi O(1) olur. b) İlk 5 elemanı bir biriyle karşılaştırarak ortanca (ikisinden büyük, diğer ikisinden küçük olan) elemanı buluruz. Bu eleman istenen koşulu sağlar. Sadece 10 karşılaştırma yaptığımıza göre işlem süresi O(1) olur. c) SELECT algoritmasını kullanarak (k+1). istatistiği buluruz. Bu eleman k elemandan büyüktür, n-k-1 elemandan küçüktür. k<n/2 olduğundan k+1≤n/2, buradan da n-k-1=n-(k+1)≥n-n/2=n/2>k olur. Yani (k+1). istatistik istenen koşulu sağlar. SELECT algoritmasının işlem süresi O(n) dir.

Problem 8 Bir x pozitif tamsayısı ve ikisi de doğal sayılardan oluşan ve artan sıralı n elemanlı A ve B dizileri veriliyor. (x ve dizilerin elemanları çok büyük sayılar olabilirler.) A[i]+B[j]=x koşuluna uyan A[i] ve B[j] sayılarını bulabilen (eğer varsa) verimli bir algoritma tasarlayınız. Algoritmanızın en kötü durumdaki işlem sayısını bulunuz.

Çözüm A yı baştan, B yi sondan başlayarak A[i] +B[j] ile x i karşılaştırırız. (Yani i nin başlangıç değeri 1, j nin başlangıç değeri n dir). Eğer eşit çıkarsa bulundu. Küçük çıkarsa A nın bir sonraki elemanı (yani i yi bir artırırız) ile B[j] nin toplamını x ile karşılaştırırız. Büyük çıkarsa A[i] ile B nin bir önceki elemanının toplamını x ile karşılaştırırız. (yani j yi bir azaltırız.) Karşılaştırma sayısı en fazla 2n-1 olur, yani işlem süresi O(n) dir.