Hocam 16:28 de log_²(n) => log 2 tabaninda n olması gerekmiyor muydu? Daha doğrusu son örneklerin hepsi aslında 2 tabanı olmalı değil miydi?
2 года назад+1
Alman Dükü, bütün örnekler 2 tabanında, video da söylüyormuyum hatırlamıyorum ancak matematiksel olarak log 2 tabanında n ancak tabanın 2 veya 10 olmasının algoritma analizi açısından bir önemi yok, çünkü ters fonksiyon olarak düşünürseniz 2^n ile 10'n nasılki farketmiyor hepsi 2^n sınıfında değerlendiriliyor, burada da aynı durum söz konusu.
@ Anladım teşekkür ederim. Ben de ifade bakımından denk olabilir diye düşündüm ama videoda duymadığım için biraz değişik gelmişti. Önceki sayfanın örneğinde 2 tabanından yazdığınız için de aslında sorma gereği duydum. İyi akşamlar :)
Hocam txt dosyasına herhangi bir kodu yazıp , oluşturulan txt deki kodun yer-zaman karmaşıklığını nasıl hesaplayabilirim ? Txt deki koda göre çok çeşit döngüler statementler aritmetik işlemler var. Hepsini hesaplatabileceğim kodu nasıl oluşturabilirim acaba?
2 года назад+2
Açıkcası bu dediğini aklıma gelen ilk yöntem bir parser (gezici) yazman gerekir, bu parser içerisine bir çok şart yazman gerekir, ya da regular expression (düzenli ifade) kullanarak bazı tanımlamalar yaparak yapabilirsin. Fakat yeni tür komutlar geldikçe iş karışır. Bu dediğin aslında ayrık yapılar dersinin kod analiz alanına da biraz giriyor. Henüz bir kodun çalışıp çalışmadığını kesin bir şekilde söyleyen matematiksel bir model geliştirilememişken, çalışıp çalışmadığı bilinemeyen kodun analizi de zor olur :)
int k=0 for(int i=0;i=1;j=j*2){ ifade; } 16:31 n>0 olduğu sürece ilk for döngüsü sonsuz döngüye girer çünkü i'nin ilk değeri "0" ve i'yi artıran ifade yok. "i=i*2" ifadesi 0'ı 2 ile çarpıp duracaktır ve bu da sonsuz döngüye sebep olur. i'nin ilk değerini "1" girersek sorun çözülür.
2 года назад+1
Dogru orada bir hata olmus. i'nin 1 den baslamasi gerekiyor.
10:34 nasıl O(n) oldu, 1+3+5+...+(2n-1)=n.n=n^2 değil mi? O(n^2) olması gerekmez miydi hocam?
4 месяца назад
Hatalı yaklaşım sergiliyorsunuz. Çünkü siz 1'den n'e kadar olan tek sayıların toplamını buluyorsunuz. Yani 1'den başladı, sonra 3 oldu sonra 5 ... bir yerde n yada n+1 olacak. Siz bunun toplamını buluyorsunuz, ancak karmaşıklık analizi bu adımı kaç kez yapacağını bulmaya çalışır. Sonuç olarak 1, 1+2, 1+2+2, 1+2+2+2 .... yani 1+k*2 >= n olduğunda döngü duracak. buradaki k değişkenini bulmamış gerekiyor. Eşitlik olarak işlem yaparsan k=(n-1)/2 olmuş olur. Sonuç olarak katsayıları silersek O(n) olur.
for(int i = 0; i < n; i++) for(int j = i; j < i; j = j + 2) print "hello"; hocam 8.09 ikinci karmaşıklık analizine göre yapıyorum bunu ama bulamıyorum burda j+2 olması o(n^2) olmasına engel değil dimi teşekkür ederim
hocam 3:24 te ki algoritmada o (n) olmaz mı çünkü n e kadar giden bi döngümüz var.
2 года назад+1
Cihan oradaki ornek zaman karmasikligi degil, dikkat edersen o sunuda bellek karmasikligini anlatiyorum. Zaten daha carpici olmasi icin zaman karmasikligi O(n) olan bir algoritma sectim.
while ( i n+1 olurdu diye düşünmüştüm hocam?
öyle bence de
Kenan Hocam emeğinize sağlık.
Çok iyi anlatım hocam sağolun...
dinletiğim en iyi anlatımdı , teşekkürler .
Teşekkürler Hocam Gayet başarılı bir video olmuş.
Videoların devamını bekliyoruz hocam
Kısa sürede çok iyi anladım teşekkürler hocam umarım devam edersiniz
Teşekkürler sayenizde anladım hocam.
Teşekkür ederim efendim
Teşekkürler Hocam, gayet açıklayıcı bir anlatım olmuş.
Hocam 16:28 de log_²(n) => log 2 tabaninda n olması gerekmiyor muydu?
Daha doğrusu son örneklerin hepsi aslında 2 tabanı olmalı değil miydi?
Alman Dükü, bütün örnekler 2 tabanında, video da söylüyormuyum hatırlamıyorum ancak matematiksel olarak log 2 tabanında n ancak tabanın 2 veya 10 olmasının algoritma analizi açısından bir önemi yok, çünkü ters fonksiyon olarak düşünürseniz 2^n ile 10'n nasılki farketmiyor hepsi 2^n sınıfında değerlendiriliyor, burada da aynı durum söz konusu.
@ Anladım teşekkür ederim. Ben de ifade bakımından denk olabilir diye düşündüm ama videoda duymadığım için biraz değişik gelmişti. Önceki sayfanın örneğinde 2 tabanından yazdığınız için de aslında sorma gereği duydum. İyi akşamlar :)
Hocam txt dosyasına herhangi bir kodu yazıp , oluşturulan txt deki kodun yer-zaman karmaşıklığını nasıl hesaplayabilirim ? Txt deki koda göre çok çeşit döngüler statementler aritmetik işlemler var. Hepsini hesaplatabileceğim kodu nasıl oluşturabilirim acaba?
Açıkcası bu dediğini aklıma gelen ilk yöntem bir parser (gezici) yazman gerekir, bu parser içerisine bir çok şart yazman gerekir, ya da regular expression (düzenli ifade) kullanarak bazı tanımlamalar yaparak yapabilirsin. Fakat yeni tür komutlar geldikçe iş karışır. Bu dediğin aslında ayrık yapılar dersinin kod analiz alanına da biraz giriyor. Henüz bir kodun çalışıp çalışmadığını kesin bir şekilde söyleyen matematiksel bir model geliştirilememişken, çalışıp çalışmadığı bilinemeyen kodun analizi de zor olur :)
Hocam bize verilen proje ödevi…Daha bişey demiyorum 😁. Nasıl böyle bi proje veriyorlar aklım almıyor😕
@@sig-yog7046 ödev ise basit bazı kabuller üzerinedir, her ihtimali hesaplayan bir ödev istenmiyordur diye tahmin ediyorum.
Hocam maalesef öyle istediler🤷🏻♀️
harikasınız hocam
Teşekkür ettik hocam..
sagolun hocam
int k=0
for(int i=0;i=1;j=j*2){
ifade;
}
16:31
n>0 olduğu sürece ilk for döngüsü sonsuz döngüye girer çünkü i'nin ilk değeri "0" ve i'yi artıran ifade yok. "i=i*2" ifadesi 0'ı 2 ile çarpıp duracaktır ve bu da sonsuz döngüye sebep olur. i'nin ilk değerini "1" girersek sorun çözülür.
Dogru orada bir hata olmus. i'nin 1 den baslamasi gerekiyor.
Allah saenden razı olsun yarın 11de vize var 5 saattir arkadaşla bakıp bunu düşündük, Allah var
10:34 nasıl O(n) oldu, 1+3+5+...+(2n-1)=n.n=n^2 değil mi? O(n^2) olması gerekmez miydi hocam?
Hatalı yaklaşım sergiliyorsunuz. Çünkü siz 1'den n'e kadar olan tek sayıların toplamını buluyorsunuz. Yani 1'den başladı, sonra 3 oldu sonra 5 ... bir yerde n yada n+1 olacak. Siz bunun toplamını buluyorsunuz, ancak karmaşıklık analizi bu adımı kaç kez yapacağını bulmaya çalışır. Sonuç olarak 1, 1+2, 1+2+2, 1+2+2+2 .... yani 1+k*2 >= n olduğunda döngü duracak. buradaki k değişkenini bulmamış gerekiyor. Eşitlik olarak işlem yaparsan k=(n-1)/2 olmuş olur. Sonuç olarak katsayıları silersek O(n) olur.
for(int i = 0; i < n; i++)
for(int j = i; j < i; j = j + 2)
print "hello";
hocam 8.09 ikinci karmaşıklık analizine göre yapıyorum bunu ama bulamıyorum burda j+2 olması o(n^2) olmasına engel değil dimi
teşekkür ederim
2. for hiçbir zaman çalışmaz j=i ise j
Yorumu geç gördüm o yüzden geç cevap yazıyorum. Ancak kodunuzda bir hata var, iç döngüde j
Hocam bizim hoca derste toplam formüllerini vesaire kullandı da burada göremedim.
hocam 3:24 te ki algoritmada o (n) olmaz mı çünkü n e kadar giden bi döngümüz var.
Cihan oradaki ornek zaman karmasikligi degil, dikkat edersen o sunuda bellek karmasikligini anlatiyorum. Zaten daha carpici olmasi icin zaman karmasikligi O(n) olan bir algoritma sectim.
@ farketmemişim hocam kusura bakmayın :)
hocam son yaptığınız analiz örneği sonsuz çalışmaz mı ?? Çünkü a ' yı arttırmıyorsunuz !!!
Arttırıyoruz ya yazılıMap ... a=a*2...
a ya her seferinde kendisinin 2 katını atıyor son satırda. Yani aslında mesela 10 adımda a*2¹⁰ olmuş oluyor. İlâ ahir.