Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu



Benzer belgeler
BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

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

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

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

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

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

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Algoritma Analizi Big O

Bilgisayar Programlama. 1.Hafta

Algoritma ve Akış Şemaları

Dr. Musa KILIÇ Öğretim Görevlisi

A (B C) = {4, 5, 6} {2, 3, 4, 6, 7} = {4, 6} ; ve (A B) (A C) = {4, 6} {6} = {4, 6}. 6. Dağıtıcı yasayı Venn şeması yoluyla doğrulayınız.

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

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

1- Sayı - Tam sayıları ifade etmek için kullanılır. İfade edilen değişkene isim ve değer verilir.

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

MİNTERİM VE MAXİTERİM

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

BLM 111 ALGORİTMA VE PROGRAMLAMA I

Algoritmik Program Tasarımı, Akış Şemaları ve Programlama. Bilgisayar Mühendisliğine Giriş 1

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

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

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

Bireylerin yaşadığı çevreye uyum sağlaması durumunda ortaya çıkan olumsuzluklara PROBLEM denir.

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 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

ALGORİTMA VE PROGRAMLAMA II

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

GÜMÜŞHANE ÜNĐVERSĐTESĐ MÜHENDĐSLĐK VE DOĞA BĐLĐMLERĐ FAKÜLTESĐ ELEKTRĐK-ELEKTRONĐK MÜHENDĐSLĐĞĐ EEM 114 ALGORĐTMA TASARIMI VE PROGRAMLAMA DĐLLERĐ

O NOTASYONU. Abdullah Gazi Emre DAĞLI

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Ö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

Algoritma ve Akış Diyagramları

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Lineer Cebir. Doç. Dr. Niyazi ŞAHİN TOBB. İçerik: 1.1. Lineer Denklemlerin Tanımı 1.2. Lineer Denklem Sistemleri 1.3. Matrisler

BM202 SAYISAL ÇÖZÜMLEME

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

YMT219 VERİ YAPILARI ÖDEV-1

1 PROGRAMLAMAYA GİRİŞ

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

Algoritmanın Hazırlanması

Hafta 13 Fonksiyonlar

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

Algoritma kelimesinin kökeni:

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

DEĞERLENDĐRME ÖDEV % 20 ARASINAV % 30 FĐNAL SINAVI % 50

CEVAP ANAHTARI. Tempo Testi D 2-B 3-A 4-A 5-C 6-B 7-B 8-C 9-B 10-D 11-C 12-D 13-C 14-C

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Ana Bellek (RAM) İşlemci (CPU) Depolama

7. BÖLÜM BARA ADMİTANS VE BARA EMPEDANS MATRİSLERİ

Ayrık Fourier Dönüşümü

C++ Dilinde Bazı Temel Algoritmalar

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

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

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

ALGORİTMA VE PROGRAMLAMA II

YZM 2116 Veri Yapıları

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

İNÖNÜ ÜNİVERSİTESİ MALATYA MESLEK YÜKSEKOKULU DERS TANITIM FORMU. Kredisi AKTS Eğitim Dili Tipi: Zorunlu/ Saat

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

BÖLÜM 3: AKIŞ DİYAGRAMLARI

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

Dr. Fatih AY Tel: fatihay@fatihay.net

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Matris İşlemleri Uygulaması

Algoritmalar ve Programlama. Algoritma

Matris Cebiriyle Çoklu Regresyon Modeli

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

İleri Diferansiyel Denklemler

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

PROGRAMINIZI ANĠ SONLANDIRMAK ĠSTEDĠĞĠNĠZ YER BĠR DÖNGÜNÜN ĠÇĠ ĠSE NE OLUR?????????

Bilgisayar Programı Nedir?

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

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

Algoritma ve Programlama: Karar Yapıları ve Döngüler

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

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

Algoritmalar ve Karmaşıklık

Algoritma ve Akış Şemaları

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)


Matlab da Dizi ve Matrisler. Mustafa Coşar

Problem Set 1 Çözümler

PROBLEM ÇÖZME PROGRAMLAMA ve ÖZGÜN ÜRÜN GELİŞTİRME

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

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

Mustafa Sezer PEHLİVAN. Yüksek İhtisas Üniversitesi Beslenme ve Diyetetik Bölümü

BİLGİSAYAR PROGRAMLAMA DERSİ

Algoritmalar. 3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.

Transkript:

Algoritmalar, Akış Şemaları ve O() Karmaşıklık Notasyonu Öğr. Gör. M. Ozan AKI r1.0

Algoritmalar (Algorithms) Algoritma, bir problemin çözümünü sağlayan ancak deneme-yanılma ve sezgisel çözüme karşıt bir yöntemdir. (V. Nabiyev) Problemin çözümü için yapılması gereken işlemleri adım adım ve sırasıyla açıklar. Algoritmalar, herhangi programlama diline bağımlı değildir. Bu nedenle Pseudo Code olarak yazılırlar. Pseudo Code, herhangi programlama dili için geçersiz, ancak konuşma diline yakın, işlemleri açıkça tanımlayan komutlar olarak tanımlanabilir.

Algoritmalar Algoritmalar, genellikle spesifik bir işi açıklarlar. Bu iş parçaları büyük bir yazılımın ya da programın bir parçası olabilirler. Günlük hayatımızdaki bir kek tarifi, algoritma olarak düşünülebilir. Tarifte işlemler ve malzemeler vardır, bilgisayarda ise, işlemler ve veriler.

Algoritmalar Sonlu sayıdaki bir dizideki maksimum sayının bulunması için örnek bir algoritma şöyle yazılabilir; 1. Dizinin ilk elemanını al. 2. Dizinin sonraki elemanı ile karşılaştır 3. Karşılaştırılan eleman daha büyükse onu al 4. Kontrol edilmemiş eleman kaldıysa 2 ye git 5. Son

Akış Şemaları (Flow Charts) Akış şemaları, algoritmaların şematik olarak gösterilmesidir. Ancak akış şemalarındaki ifadeler, daha çok kullanılacak programlama dilindeki ifadelere yakındır. Akış şemalarında, farklı şekiller, farklı görevleri sembolize eder.

Akış Şemaları Akış şemaları, algoritmaların şematik olarak gösterilmesidir.

İki sayının aritmetik ortalamasını bulan akış şeması Akış Şemaları

Koşullu Dallanma Simgesi Koşullu Dallanma simgesi baklava dilimi şeklindedir. Bir girişi ve iki çıkışı vardır. Çıkışlardan biri doğru ya da evet, diğeri yanlış ya da hayır çıkışıdır.

Koşullu Dallanma Simgesi Koşullu dallanma simgesi, çok sayıda şartı kontrol etmek gerektiğinde ardaşık olarak kullanılabilir.

Döngü Simgesi Döngü simgesi, basık altıgen şeklindedir. Göngüde belirtilen koşul doğru olduğu sürece döngü devam edecektir.

Döngü Simgesi Tipik bir for döngüsü ise aşağıdaki gibi gösterilebilir. Ancak, ilk değer ve artım işlemlerini her defasında ayrıca göstermek yerine, bunları döngü simgesi içerisine yazmak daha pratik olacakır.

İç İçe Döngüler İç içe döngüler kurulabilir. İç içe döngüler aynı tipte olabileceği gibi, farklı tipte döngülerden de oluşabilir.

Örnekler Bir faktöryel hesabının akış şemasını çiziniz.

Örnekler İkinci dereceden iki bilinmeyenli denklemin köklerinin hesaplanması

Örnekler OBEB ve OKEK hesaplanması

Örnekler En küçük ve en büyük dizi elemanının bulunması

Örnekler Matris toplamı

Örnekler Matris çarpımı

Yürütme Zamanı T(n) Bir yazılım kodunda, toplam kaç birim işlem yapıldığının göstergesidir. Buradaki her bir birim işlem, her bir dil (örn, C dili) ifadesi olarak ele alınabilir. n olarak ifade edilen birim işlemlerin toplamı T(n) yürütme zamanı fonksiyonunu verecektir. Ancak birçok algoritma veri işleridğinden dolayı, n i belirleyen en büyük faktör veri sayısı olacaktır.

Yürütme Zamanı T(n) int ortalama(int dizi[], int len) { int i,ort,top=0; for(i=0; i<len; i++) top += dizi[i]; 1+(n+1)+n n ort = top / len; 1 return ort; 1 } T(n) = 2n + 2 + n + 1 + 1, T(n) = 3n + 4

Yürütme Zamanı T(n) void matristopla (int A[m,n], int B[m,n], int C[m,n]) { int i,j; for(i=0; i<m; i++) 1+(m+1)+m for(j=0; j<n; j++) m*(1+(n+1)+n) C[i,j] = A[i,j]+B[i,j]; m*n } T(n) = 2m+2 + m*(2n+2) + mn T(n) = 3mn + 4m + 2, Eğer m == n olursa; T(n) = 3n 2 + 4n + 2 olur.

Karmaşıklık (Complexity) Karmaşıklık ifadesi, özellikle çok sayıda ya da büyüyen veri sayısı karşısında faklı algoritmaların nasıl davrandığını gösteren bir kavramsal ifadedir. Karmaşıklığı ifade etmek için asimptotik ifadeler kullanılmaktadır. En çok kullanılan asimptotik karmaşılık ifadesi «büyük O» notasyonudur ve O() ile gösterilir. O(n) fonksiyonuna verilen n değişkeni, algoritmanın işlediği veri sayısını göstermektedir.

Karmaşıklık (Complexity) Bir algoritmanın çalışma zamanı bulunduktan sonra, ne tür bir karmaşıklığa sahip algortma olduğunu çıkarsamak için; T(n) bulunduktan sonra, tüm değişkenler tek tip değişkene dönüştürülür, sabitler ve düşük dereceli terimler atılar ve en yüksek dereceli terim, O(n) karmaşıklık foksiyonunu ifade eder.

Karmaşıklık (Complexity) Örneğin, Daha önce ortalama alan fonksiyonun bulunan T(n) yürütme zamanı, T(n) = 3n + 4 Karmaşıklık notasyonu; O(n) Olur.

Karmaşıklık (Complexity) Örneğin, Daha önce matris toplayan fonksiyonun bulunan T(n) yürütme zamanı, T(n) = 3mn + 4m + 2 Tek tip değişkene dönüştürürsek, T(n) = 3n 2 + 4n + 2 Buradan; O(n 2 ) Bulunur.

Örnek Karmaşılık ve Yürütme Zamanları 1GHz işlemcili bir bilgisayarda, 1 saniyede 1.000.000.000 işlem (instruction) yürütüldüğü varsayıldığında, her bir veriyi işlemek için 10-9 saniye zaman harcanır. Buna göre, çeşitli karmaşıklığa sahip algoritmalar karşılaştırıldığında; O() n 10.000 100.000 1.000.000 250.000.000 O(log2n) 13 ns 17 ns 20 ns 28 ns O(n) 0.00001 s 0.0001 s 0.001 s 0.25 s O(nlog 2 n) 0.00013 s 0.00166 s 0.01993 s 6.97 s O(N 2 ) 0.1 s 10.0 s 16 d 40 s ~1.98 yıl O(N 3 ) 16 d 40 s ~11 gün 14 sa ~32 yıl ~500.000.000 yıl O(2 n ) ~6*10 2993 yıl???

Çalışma Zamanını Ölçülmesi Bir algoritmanın çalışma zamanı teorik olarak bulunabileceği gibi, ölçülerek te bulunabilir. Bunun için basitçe, algoritma başlamadan önce sistem saati okunur, algoritma çalıştırılır ve algoritma sonlandığında sistem saati tekrar okunur. İki zaman arasındaki fark, algoritmamızın, o bilgisayardaki çalışma zamanını ölçer. Ancak bu zaman, sadece o bilgisayar için geçerli olup, bire bir gerçek algoritma zamanını vermez. Çünkü işlemci aynı zamanda çok görevli (multitasking) işletim sisteminde diğer arkaplan proseslerini de çalıştırmaktadır.

Çalışma Zamanını Ölçülmesi Ancak, farklı algoritmaları birbirleriyle kıyaslamak (benchmarking) için, aynı bilgisayarda çalıştırmak koşulu ile bu çalışma zamanı kullanılabilir. Basitçe; #include <time.h> time_t begin, end;... time(&begin); suresi_olculecek_algoritma(); time(&end); printf(«%.3f saniye\n», difftime(end,begin));

Çalışma Zamanını Ölçülmesi difftime ile zamanı ölçmenin bir dezavantajı, zaman çözünürlüğünün saniye bazında olmasıdır. Saniyeden daha küçük zaman dilimlerini ölçebilmek için clock() fonksiyonu kullanılabilir. clock() fonksiyonu, geçen süreyi işlemci saat darbe sayısı olarak ölçer. CLOCKS_PER_SEC ile bölünerek saniye cinsinden süre elde edilir. #include <time.h> clock_t sure;... sure=clock(); suresi_olculecek_algoritma(); sure=clock()-sure; printf(«%.3f saniye\n», (double)sure/clocks_per_sec);