Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veri Yapıları ve Algoritmalar

Benzer bir sunumlar


... konulu sunumlar: "Veri Yapıları ve Algoritmalar"— Sunum transkripti:

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

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

3 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

4 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

5 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

6 Algoritma ve Program Örnekleri
Günay TEMÜR

7 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

8 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

9 Faktöryel Günay TEMÜR

10 Matris Toplam Günay TEMÜR

11 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

12 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

13 Ö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

14 Ö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

15 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 =4 Yani algoritma çalışma süresi 4 katına çıkar. Günay TEMÜR

16 Ö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

17 Ö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

18 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

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

20 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

21 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

22 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

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

24 Ö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

25 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

26 Ö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

27 Ö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


"Veri Yapıları ve Algoritmalar" indir ppt

Benzer bir sunumlar


Google Reklamları