Veri Yapıları ve Algoritmalar

Slides:



Advertisements
Benzer bir sunumlar
Karmaşıklık Giriş.
Advertisements

Yinelemeli Algoritma Analizi & Asimptotik Notasyon
Diziler (Arrays).
DİZİLER Arrays.
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
Determinant Bir kare matrisin tersinir olup olmadığına dair bilgi veriyor n- boyutlu uzayda matrisin satırlarından oluşmuş bir paralel kenarın hacmine.
Algoritma Analizi Algoritma Algoritma bir problemi çözmek için izlenen komutlar kümesidir. Verilen bir problemin birden fazla çözümü dolayısıyla.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
ALGORİTMA KARMAŞIKLIĞI
BİLGİSAYAR PROGRAMLAMA MATLAB Yrd.Doç.Dr. Cengiz Tepe.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
Bağlama ve Kapsam Kavramları
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
ÇOK BOYUTLU SİNYAL İŞLEME
Bölüm 2 C Dilinin Temelleri
BİLGİSAYAR PROGRAMLAMA DERSİ
0-1 Sırt Çantası Problemi
Fonksiyonlar ve Diziler
İÇİNDEKİLER NEGATİF ÜS ÜSSÜ SAYILARIN ÖZELLİKLERİ
HİPOTEZ TESTLERİ VE Kİ-KARE ANALİZİ
Algoritma ve Programlamaya Giriş
KDV BEYANNAMESİ / MUHTASAR BEYANNAME / KURUMLAR VERGİSİ BEYANNAMESİ / GEÇİCİ VERGİ BEYANNAMESİ’NDE ORTAK ÖZELLİKLER F5 PENCERESİ Beyannamelerde yer alacak.
Bölüm 2: Bir Boyutta Hareket. Bölüm 2: Bir Boyutta Hareket.
EETE233 Mikrodenetleyiciler ArduIno ile Programlama
TAM SAYILAR.
Tüm ikililer arasında en kısa yollar
Bilgisayar Donanım ve Sistem Yazılımı
ÖRNEKLEME.
Problem Çözme ve Algoritmalar
CEBİRSEL İFADELER.
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H05
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
DOĞAL SAYILAR TAM SAYILAR
Ünite 9: Korelasyon Öğr. Elemanı: Dr. M. Cumhur AKBULUT.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
Algoritma ve Programlamaya Giriş
Bilginin Organizasyonu
İleri Algoritma Analizi
DOSYA BÜYÜKLÜKLERİ İkili Sistem Dosya Büyüklükleri ve Hesaplamalar
GELECEK PİYASASI İŞLEMLERİ
KORELASYON VE DOGRUSAL REGRESYON
PROBLEM ÇÖZME VE ALGORİTMALAR
PARAMETRİK HİPOTEZ TESTLERİ
Bölüm 7 İfadeler ve atamalar.
İleri Algoritma Analizi
NİŞANTAŞI ÜNİVERSİTESİ
Arduino Programlama Dili
Bilgisayar Mühendisliğine Giriş
Ölçme Değerlendirmede İstatistiksel İşlemler
İleri Algoritma Analizi
ÖLÇME-DEĞERLENDİRME 1.DERS
Bilgisayar Bilimi Koşullu Durumlar.
BÖLÜM 3: ARZ VE ÜRETİM TEORİSİ
Sonlu Özdevinirlere Giriş
NİŞANTAŞI ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Değerler ve Değişkenler
Evren-Örneklem, Örnekleme Yöntemleri 1
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
8. Ders Tüm ikililer arasında en kısa yollar
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Veri Yapıları ve Algoritmalar Günay TEMÜR DERS_2

SAYILAR SAYILAR Fixed point (Sabit Noktalı) 2 Floating Point (Kayan Noktalı) 3,14 Günay TEMÜR

32 ve 64-bitlik IEEE 754 kayan noktalı sayı özellikleri Parametre 32-bitlik kayan noktalı 64-bitlik kayan noktalı İşaret bit’i 0, artı; 1, eksi sayı Çarpan uzunluğu (bit) 23 52 Üs uzunluğu (bit) 8 11 Üs tabanı (bit) 2 tabanı Üssün en büyük değeri 127 1023 Üssün en küçük değeri -126 -1022 10 tabanında en küçük üs değeri 10-38 10-308 10 tabanında en büyük üs değeri 1038 10308 Kesir sayısı/genişliği 223= 8 Mega 252= 2048 Tera Sıfır sayısı için Ü=0, Ç=0 Sonsuz gösterilim için Ü=255, Ç=0 Ü=2047, Ç=0 Günay TEMÜR

32 ve 64-bitlik IEEE 754 kayan noktalı sayı için bit haritası İşaret biti (i) Üs Çarpan 32 bit 0/1 8 bit 23 bit 64 bit 11 bit 52 bit Günay TEMÜR İ (işaret) Üs K (çarpan) Sayı= (-1)i*(1+k)*2n=üs-bias

Pointer / İşaretçiler int *p; /* bir tam sayının bellekte adresini tutmak için */ float *q /* bir gerçel sayının bellekte adresini tutmak için*/ Char *r /* karakter verinin bellekte adresini tutmak için*/ Günay TEMÜR

Algoritma ve Program Örnekleri Günay TEMÜR

En Küçük veya En Büyük elemanı bulma float enKucuk (float A[], int N) { int k; float ek; ek=A[0]; for (k=1; k<N; k++) if (A[k]<ek) ek=A[k]; return enkucuk; } A[N] ek=A[k] ek=A[0] Günay TEMÜR A[k]<ek ? k=1, k<N, k++ ek

Aritmatik Ortalama A[N] float aritmatikort(int A[], int N) { Toplam=0 int k, toplam=0; float ort; for(k=0; k<N; k++) toplam+=A[k]; ort=(float)toplam/N; return ort; } Toplam=0 Toplam=toplam+A[k] k=0; k<N; k++ Günay TEMÜR Ort=toplam/n ort

Faktöryel Günay TEMÜR

Matris Toplam Günay TEMÜR

Program Çalışma Hızları ve Bellek Gereksinimleri Temel Kavramlar; Yürütme zamanı (Running Time) Zaman karmaşıklığı (Time Complexity) Alan maliyeti (Space Cost) Alan karmaşıklığı (Space Complexity) Temel Hesap Birimi En iyi, Ortalama, En kötü Durumlar (Best, Avarage, Worst Case) Günay TEMÜR

Yürütme zamanı (Running Time) 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. Temel işlemler= karşılaştırma, aritmatik, döngü işlemleri diyebiliriz. T(n) ile gösterilir. T(n)~Cop*C(n) Cop=Temel işlem zamanı C(n)=Temel işlemlerin sayısı Günay TEMÜR

Örnek: T(n)=1+1+n+1+n+n+1 T(n)=4+3n Verilen algoritmaya ait yürütme zamanı hesaplayınız. 1 1, n+1, n n Günay TEMÜR T(n)=1+1+n+1+n+n+1 T(n)=4+3n

Örnek: Bir algortima için C(n)=1/2*n(n-1) olsun. Bu algoritmanın giriş boyutu 2 katına çıkartıldığında çalışma zamanı hakkında ne söylenebilir Günay TEMÜR

Cevap C(n)= 1 2 𝑛 2 − 1 2 𝑛≅ 1 2 𝑛 2 dir. Üssel arzdaki matematiksel ifadeler var ise, hesaplamalarda sabit terimli ifadeler göz ardı edilir. 𝑇(2𝑛) 𝑇(𝑛) = 𝐶𝑜𝑝∗𝐶(𝑛) 𝐶𝑜𝑝∗𝐶(𝑛) = 1 2 ( 2𝑛) 2 1 2 𝑛 2 =4 Yani algoritma çalışma süresi 4 katına çıkar. Günay TEMÜR

Örnek: En küçük T(n)= 1+2n+n-1+n-1+1 T(n)=4n float enKucuk (float A[], int N) { int k; float ek; ek=A[0]; 1 for (k=1; k<N; k++) 2 if (A[k]<ek) 3 ek=A[k]; 4 return enkucuk; 5 } 1. satır = 1 2. satır for= 1 + n + n-1 = 2n 3. satır if = n-1 4. satır = n-1 5. satır =1 T(n)= 1+2n+n-1+n-1+1 T(n)=4n Günay TEMÜR

Örnek: Matris Toplam 1. satır = 2n+2 2. satır = n*(2m+2) Void matristoplam(A, B, C) { int A[n][m], B[n][m], C[n][m]; int i, j; for(i=0; i<n; i++) 1 for(j=0; j<m; j++) 2 C[i][j] = A[i][j]+B[i][j]; 3 } 1. satır = 2n+2 2. satır = n*(2m+2) 3. satır = n*m T(n,m)=3mn+4n+2 Matris kare ise? Günay TEMÜR

En iyi, Ortalama, En kötü Durumlar (Best, Avarage, Worst Case) Bir algoritma için, yürütme zamanı, maliyet veya karmaşıklık hesaplarında en iyi, ortalama veya en kötü durumların oluşmasıdır. Örneğin; bir dizi üzerinde bir eleman aramak için en iyi durum; aranan dizinin ilk elemanı olması en iyi durumdur. En kötü durum ise aradığınız elemanın dizide olmamasıdır. Budurumda bütün elemanlara bakılmak zorundadır. Günay TEMÜR

En iyi, Ortalama, En kötü Durumlar (Best, Avarage, Worst Case) DİZİDEKİ BİR ELEMANIN ARANMASI Günay TEMÜR

Program Çalışma Hızı ve Karmaşıklık Çalışma Hızını belirlemek için ; 1- Kıyaslama / banchmarking Önceden belirlenmiş veriler ile farklı algoritmaların değerlendirilebilmesi 2- Algoritma analizi / algorithm analysis Yürütme zamanı T(n) ve bellek gereksinimi S(n) bağıntılarının hesaplanabilmesi Günay TEMÜR

Karmaşıklık Bir algoritmanın çok sayıda parametre karşısında maliyet davranışındaki değişimı/artışı gösteren kavramsal bir ifadedir. !!!Az sayıda elemanlar için ilgilenilmez. N=∞ ise karmaşıklık kullanılır. Karmaşıklı ifadeleri için asimtotik ifadeler kullanlır. Big-O, Ω, Θ notasyonları Günay TEMÜR

Büyük O ifadeleri ve anlamları Değişim Şekli O(1) Sabit O(logn) Logaritmik artış O(n) Doğrusal artış O(nlogn) Doğrusal çarpanlı logaritmik O(n2) Karesel artış O(n3) Kübik artış O(2n) İki tabanında üssel artış O(10n) On tabanında üssel artış O(n!) Faktöryel artış Günay TEMÜR

Karmaşıklık grafiği Günay TEMÜR

Örnek: T(n)= 3n2+4n+2 Big-O (n2) olarak söylenir. T(n,m)=3mn+4n+2 Matris kare ise? n=m olur ve T(n,m)=3n*n+4n+2 T(n)= 3n2+4n+2 Burada küçük terimler göz ardı edilir ve Bu prorgamın karmaşıklığı Big-O (n2) olarak söylenir. Günay TEMÜR

Program Bellek Gereksinimi Kod için; Programın tasarımına bağlıdır. Veri için; değişken, sabit sayısı ve türüne bağlıdır. Yığın için; (LIFO) bilgilerin geçici olarak saklandığı bellek alanıdır. Günay TEMÜR

Örnek:Bellek Miktarı Hesabı float aritmatikort(int A[], int N) { 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); } Günay TEMÜR

Örnek:Bellek Miktarı 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. Günay TEMÜR