Harika!!! Lafı dolandırmadan en iyi şekilse anlatmışsınız çok teşekkür ederim! Sizin gibi anlatan olduda biz mi anlamadık. Lütfen videolarınız artsın ❤
Bilgisayar mühendisliği Doktora öğrencisiyim. Ben bile şuana kadar bu kadar net anlamamıştım bu konuyu. Çok teşekkürler. Basit ama çok temiz ve güzel anlatım 😊
Hocam dk 27:11 de bu dongülerin kendi içinde big-o değeri doğru ama big-o = en kotu durum analizi oldugu icin zaman karmasiklginda ard arda olan dongulerden yavas calisan yani log(n) cevap olmaz mi cunku yanliş bilmiyorsam log(log(n)) karmasikligi log(n)e gore daha hizli calisiyor
Eğer bu algoritmada bir if döngüsü olsaydı ve program bu if koşullarından birine göre sonlansaydı dediğin sonuç kabul edilirdi lakin burada iki adet "for" döngüsü var. Yani her halukarda iki döngü de çalışmak zorundadır. Burada zaten "toplam" çalışma zamanını hesapladık ki onun sonucu da O(loglogn)'dir. Ancak eğer genel çalışma zamanını hesaplayacak olsaydık senin dedediğin gibi O(logn) olurdu çünkü baskın terim O(logn)'dir.
kusura bakmayin hocam cuma algoritma analizi dersinin sınavi var ondan tam oturtmak için soruyorum. O halde döngüler ard arda oldugu için T(n) toplam çalışma zamanı (log(n)(ilk for)+(log(log(n)(2. For)) olmaz mı bi de soruda T(n) sorulunca her zaman toplam diye mi anlamalıyız veya O(n) sorulunca da soruda belirtilmemiş ise hep en geç çalışanı yani baskın olanı mı almalıyız ?
@@Adream-fftr Estağfurullah, sorun oldukça sor. Şöyle düşün O(loglogn), O(logn)'den çok daha yavaş büyür. Dolayısıyla sınavda bu tipte bir soru karşına çıkarsa O(logn) olarak seç.
Algoritmanın yazımı ile ayni zamanda ingilizce önemli anladığım kadarıyla ve çok güzel bunu linuxta kullanmak isterim umarım yararı olur beklediğim ve aradığım tarzda bir video script yazma ile ilgili bir video var mı acaba?
Merhaba, 18:42'de i değişkeni n'ye kadar gitti ve n^2 bulundu. 22:52'de k nereden geldi? 2^k yerine 2^n olması gerekmez mi? Ya da k olarak yazılacaksa neden 18:42'de k yerine n kullanıldı? İki örnekte de i>=n olduğunda döngü sonlanıyor. Teşekkürler
Şimdi öncelikle 22:52'deki for döngüsünde, i'nin artış koşuluna dikkat etmeni istiyorum. i her seferinde 2'nin katları şeklinde artıyor. Dizi n boyutlu ama i'nin hangi 2. katında son duruma geleceğimi kesin olarak hesaplayamayacağım için k'yı kullanıyorum. Diyorum ki, 2^k'ya ulaşıldığında döngü sonlansın yani i>=n durumunu sağlasın. Yani 2^n değil, 2^k olması gerekir. i = 2^k , 2^k >=n , k = logn. 18:42'deki for döngüsünde i değişkeni, her seferinde 1'er 1'er artıyor. Yani 22:52'deki for döngüsünün aksine dizinin boyutu olan n'e kaç adımda ulaşacağımı hesaplayabilirim. Bu hesap da n(n+1)/2 olduğu için direkt, n^2 olarak bulunur. Burada, k'yı kullanmaya gerek yoktur çünkü hesaplayamadığımız, bilinmeyen bir durum yoktur. Umarım açıklayıcı olmuştur. Kafana takılan bir yer varsa yazabilirsin yine
Merhaba anlatımınız için teşekkürler. Aklıma bir şey takıldı 28:18'de for döngüsü logn kez çalışır fakat içerisindeki kod satırı n kez çalışması gerekmez mi ? yani içerdeki kod satırı için n.n olmalı diye düşündüm ( örneğin önceki bir for döngüsünde (n+1) kez çalışınca içerisindeki kod satırı n kez çalışmıştı )
21:30 'da tam olarak bu for döngüsünün aynısını var (sadece j yerine i var) ve orada da anlattığım gibi, bu örnekteki for döngüsünün ilerleyişi her seferinde i'nin 2 ile çarpılarak devam etmesinden dolayı son durum olan n'e logaritmik bir yaklaşım söz konusudur. Yani verdiğin örnekteki gibi n+1 kez çalışmasından farklıdır ( farkı, i = 2^k, k=logn olması). İstersen orayı tekrar incele, soruna çok daha rahat cevap bulabilirsin. Teşekkürler, iyi çalışmalar
merhaba dakika 16.40 daki soruda dış döngü ilk başta n+1 kere döndü iç ise n kere sonra iç döngü n*(n+1)/2 kere döndü sonuç olarak ilk başan gelen n*(n+1)/2*n den dolayı n3 olmazkı karmaşıklık size zahmet cevaplarsanız sevinirim
1. Dıştaki döngü n+1 kez dönmüyor. 2. İçteki döngü de n kez dönmüyor. İçteki döngü hiç olmasaydı bile en dıştaki döngü n defa çalışacaktı. En son çalışmadan sonra bir kez de döngü şartı kontrolü yapıldığı için sadece for satırı n+1 kez çalışacaktır. Sanırım konuyu tam olarak oturtamamışsın. En baştan izlemeni tavsiye ediyorum.
İf ve while bakalım demişsiniz sonda ama sadece while bakmışsınız. Video yarım mı kaldı acaba devamını bulamadım. Ama for harika anlatmışsınız maşallah.
if’in içinde başka bir döngü yoksa ve koşul sabit zamanda değerlendirilebiliyorsa, if’in çalışma zamanı her zaman O(1)’dir. if yapısı, bir döngüyle birlikte n kez çalıştırılıyorsa, elbette toplam çalışma zamanı O(n) olur. Ancak bu, if yapısının kendi başına değil, döngünün etkisiyle artan bir çalışma zamanıdır. if ile ilgili en fazla bu kadarını söyleyebiliriz zaten, iyi çalışmalar.
@ teşekkürler if de for içinde de olsa n den etkilenmiş if içinde şartı sağlıyorsa başka , sağlamıyorsa başka bir komutu çalıştıracak ya ! öyle ise çalışacak olan n değil de şarta bağlı olarak n den daha düşük olmayacak mı ne bilim n\2 gibi misal. bir de while ve for aynı etkiye sahip sanırım ben öyle anladım.
Tabi, şöyle ki; if kaç kez çalıştırılacağı döngüye bağlıdır (örneğin, n kez). Ancak, if koşulunun ne sıklıkla doğru veya yanlış olacağı, şarta bağlıdır. Bu nedenle toplam çalıştırma sayısı genellikle en fazla n olur, ama bu sayı koşula göre n/2, n/3 gibi bir değere düşebilir. For döngüsü, genelde sabit bir iterasyon sayısına sahiptir. While döngüsü, koşula bağlı olarak farklı sayıda iterasyon yapabilir. Sonuç: if için toplam çalışma, en kötü durumda döngünün iterasyon sayısı (örneğin, n) kadar olur, ama gerçek sıklık, koşulun sağlanma oranına göre azalabilir.
for döngüsünün koşul satırı ---> n+1 kez for döngüsünün içindeki ifade ---> n kez return S; ifadesi ---> 1 kez çalışır (Aslında S=0 ifadesi de sayılabilir ancak zaten sabit sayılar ve katsayılar ihmal edilir. 3 de olsa 4 de olsa 100 de olsa bir etkisi yoktur) Toplam : 2n+3 o da O(n)'dir
16.40 dan önceki sorularda f(n) bulunurken döngülerin sonundaki şart kontrolünü f(n) e ekledik ama 16.40 daki soruda i 0 j 0x olduğu durumda j bir şart kontrolü yapıyor ama yine de f(n) bundan etkilenmedi aynı şekilde en dıştaki döngüde n kere dönüyor ancak n+1 tane şart kontrolü yapıyor ama şart kontrolü yüzünden olan +1 leri f(n) e katmadık diye anladım neden acaba
Öncelikle 16:40'taki örnekte i, n'e kadar giderken, j ise i'ye kadar gider. Her iki döngüde de her zamanki gibi zaten halihazırda son durum kontrolü yapılır ancak j her seferinde i'ye kadar gittiği için karışıklık olmasın diye örüntüyü yakaladık ve soruyu o şekilde çözdük. Örüntümüz ardışık sayıların toplam formülüdür. O formülden de çalışma zamanını hesapladık. f(n)'e takılma, o sadece bir formül. Mantığı kavramalısın. Buradaki mantık, algoritmanın çalışma koşullarının yerine getirilirken nasıl ilerlediğidir.
Şu konuyu mantığıyla anlatan tek kişi sizsiniz , çok teşekkürler
Harika!!! Lafı dolandırmadan en iyi şekilse anlatmışsınız çok teşekkür ederim! Sizin gibi anlatan olduda biz mi anlamadık. Lütfen videolarınız artsın ❤
Teşekkür ederim, umarım faydası olmuştur. Yakın zamanda yeni videolar çekmeyi planlıyorum, iyi çalışmalar :)
teşekkürler hocam çok yardımcı oldunuz
SÜPER ANLATIM TEBRİK EDERİM
Bilgisayar mühendisliği Doktora öğrencisiyim. Ben bile şuana kadar bu kadar net anlamamıştım bu konuyu. Çok teşekkürler. Basit ama çok temiz ve güzel anlatım 😊
Ben teşekkür ederim, işinize yarıyorsa ne mutlu bana. İyi çalışmalar, başarılar
izlediğim en açık ve net anlatım teşekkürler
Rica ederim, iyi çalışmalar
Hocam dk 27:11 de bu dongülerin kendi içinde big-o değeri doğru ama big-o = en kotu durum analizi oldugu icin zaman karmasiklginda ard arda olan dongulerden yavas calisan yani log(n) cevap olmaz mi cunku yanliş bilmiyorsam log(log(n)) karmasikligi log(n)e gore daha hizli calisiyor
Eğer bu algoritmada bir if döngüsü olsaydı ve program bu if koşullarından birine göre sonlansaydı dediğin sonuç kabul edilirdi lakin burada iki adet "for" döngüsü var. Yani her halukarda iki döngü de çalışmak zorundadır. Burada zaten "toplam" çalışma zamanını hesapladık ki onun sonucu da O(loglogn)'dir. Ancak eğer genel çalışma zamanını hesaplayacak olsaydık senin dedediğin gibi O(logn) olurdu çünkü baskın terim O(logn)'dir.
kusura bakmayin hocam cuma algoritma analizi dersinin sınavi var ondan tam oturtmak için soruyorum. O halde döngüler ard arda oldugu için T(n) toplam çalışma zamanı
(log(n)(ilk for)+(log(log(n)(2. For)) olmaz mı bi de soruda T(n) sorulunca her zaman toplam diye mi anlamalıyız veya O(n) sorulunca da soruda belirtilmemiş ise hep en geç çalışanı yani baskın olanı mı almalıyız ?
@@Adream-fftr Estağfurullah, sorun oldukça sor. Şöyle düşün O(loglogn), O(logn)'den çok daha yavaş büyür. Dolayısıyla sınavda bu tipte bir soru karşına çıkarsa O(logn) olarak seç.
temiz ve kaliteli bir anlatim olmus, tesekkurler.
Rica ederim, iyi çalışmalar
Algoritmanın yazımı ile ayni zamanda ingilizce önemli anladığım kadarıyla ve çok güzel bunu linuxta kullanmak isterim umarım yararı olur beklediğim ve aradığım tarzda bir video script yazma ile ilgili bir video var mı acaba?
Merhaba, 18:42'de i değişkeni n'ye kadar gitti ve n^2 bulundu. 22:52'de k nereden geldi? 2^k yerine 2^n olması gerekmez mi? Ya da k olarak yazılacaksa neden 18:42'de k yerine n kullanıldı? İki örnekte de i>=n olduğunda döngü sonlanıyor. Teşekkürler
Şimdi öncelikle 22:52'deki for döngüsünde, i'nin artış koşuluna dikkat etmeni istiyorum.
i her seferinde 2'nin katları şeklinde artıyor. Dizi n boyutlu ama i'nin hangi 2. katında son duruma geleceğimi kesin olarak hesaplayamayacağım için k'yı kullanıyorum.
Diyorum ki, 2^k'ya ulaşıldığında döngü sonlansın yani i>=n durumunu sağlasın. Yani 2^n değil, 2^k olması gerekir.
i = 2^k ,
2^k >=n ,
k = logn.
18:42'deki for döngüsünde i değişkeni, her seferinde 1'er 1'er artıyor. Yani 22:52'deki for döngüsünün aksine dizinin boyutu olan n'e kaç adımda ulaşacağımı hesaplayabilirim. Bu hesap da n(n+1)/2 olduğu için direkt, n^2 olarak bulunur. Burada, k'yı kullanmaya gerek yoktur çünkü hesaplayamadığımız, bilinmeyen bir durum yoktur.
Umarım açıklayıcı olmuştur. Kafana takılan bir yer varsa yazabilirsin yine
Merhaba anlatımınız için teşekkürler. Aklıma bir şey takıldı 28:18'de for döngüsü logn kez çalışır fakat içerisindeki kod satırı n kez çalışması gerekmez mi ? yani içerdeki kod satırı için n.n olmalı diye düşündüm ( örneğin önceki bir for döngüsünde (n+1) kez çalışınca içerisindeki kod satırı n kez çalışmıştı )
21:30 'da tam olarak bu for döngüsünün aynısını var (sadece j yerine i var) ve orada da anlattığım gibi, bu örnekteki for döngüsünün ilerleyişi her seferinde i'nin 2 ile çarpılarak devam etmesinden dolayı son durum olan n'e logaritmik bir yaklaşım söz konusudur. Yani verdiğin örnekteki gibi n+1 kez çalışmasından farklıdır ( farkı, i = 2^k, k=logn olması). İstersen orayı tekrar incele, soruna çok daha rahat cevap bulabilirsin. Teşekkürler, iyi çalışmalar
@@hakancemgercek Bu sefer tam olarak anladım çok teşekkür ederim.
Rica ederim ^^
harika bir anlatim olmus...
merhaba dakika 16.40 daki soruda dış döngü ilk başta n+1 kere döndü iç ise n kere sonra iç döngü n*(n+1)/2 kere döndü sonuç olarak ilk başan gelen n*(n+1)/2*n den dolayı n3 olmazkı karmaşıklık size zahmet cevaplarsanız sevinirim
1. Dıştaki döngü n+1 kez dönmüyor.
2. İçteki döngü de n kez dönmüyor.
İçteki döngü hiç olmasaydı bile en dıştaki döngü n defa çalışacaktı. En son çalışmadan sonra bir kez de döngü şartı kontrolü yapıldığı için sadece for satırı n+1 kez çalışacaktır. Sanırım konuyu tam olarak oturtamamışsın. En baştan izlemeni tavsiye ediyorum.
İf ve while bakalım demişsiniz sonda ama sadece while bakmışsınız. Video yarım mı kaldı acaba devamını bulamadım. Ama for harika anlatmışsınız maşallah.
if’in içinde başka bir döngü yoksa ve koşul sabit zamanda değerlendirilebiliyorsa, if’in çalışma zamanı her zaman O(1)’dir.
if yapısı, bir döngüyle birlikte n kez çalıştırılıyorsa, elbette toplam çalışma zamanı O(n) olur. Ancak bu, if yapısının kendi başına değil, döngünün etkisiyle artan bir çalışma zamanıdır. if ile ilgili en fazla bu kadarını söyleyebiliriz zaten, iyi çalışmalar.
@ teşekkürler if de for içinde de olsa n den etkilenmiş if içinde şartı sağlıyorsa başka , sağlamıyorsa başka bir komutu çalıştıracak ya ! öyle ise çalışacak olan n değil de şarta bağlı olarak n den daha düşük olmayacak mı ne bilim n\2 gibi misal. bir de while ve for aynı etkiye sahip sanırım ben öyle anladım.
Tabi, şöyle ki;
if kaç kez çalıştırılacağı döngüye bağlıdır (örneğin, n kez).
Ancak, if koşulunun ne sıklıkla doğru veya yanlış olacağı, şarta bağlıdır. Bu nedenle toplam çalıştırma sayısı genellikle en fazla n olur, ama bu sayı koşula göre n/2, n/3 gibi bir değere düşebilir.
For döngüsü, genelde sabit bir iterasyon sayısına sahiptir. While döngüsü, koşula bağlı olarak farklı sayıda iterasyon yapabilir.
Sonuç: if için toplam çalışma, en kötü durumda döngünün iterasyon sayısı (örneğin, n) kadar olur, ama gerçek sıklık, koşulun sağlanma oranına göre azalabilir.
hocam dakika 10dakş örnekte nasıl 2n+3 bulduk
for döngüsünün koşul satırı ---> n+1 kez
for döngüsünün içindeki ifade ---> n kez
return S; ifadesi ---> 1 kez çalışır
(Aslında S=0 ifadesi de sayılabilir ancak zaten sabit sayılar ve katsayılar ihmal edilir. 3 de olsa 4 de olsa 100 de olsa bir etkisi yoktur)
Toplam : 2n+3 o da O(n)'dir
16.40 dan önceki sorularda f(n) bulunurken döngülerin sonundaki şart kontrolünü f(n) e ekledik ama 16.40 daki soruda i 0 j 0x olduğu durumda j bir şart kontrolü yapıyor ama yine de f(n) bundan etkilenmedi aynı şekilde en dıştaki döngüde n kere dönüyor ancak n+1 tane şart kontrolü yapıyor ama şart kontrolü yüzünden olan +1 leri f(n) e katmadık diye anladım neden acaba
Öncelikle 16:40'taki örnekte i, n'e kadar giderken, j ise i'ye kadar gider. Her iki döngüde de her zamanki gibi zaten halihazırda son durum kontrolü yapılır ancak j her seferinde i'ye kadar gittiği için karışıklık olmasın diye örüntüyü yakaladık ve soruyu o şekilde çözdük.
Örüntümüz ardışık sayıların toplam formülüdür. O formülden de çalışma zamanını hesapladık. f(n)'e takılma, o sadece bir formül. Mantığı kavramalısın. Buradaki mantık, algoritmanın çalışma koşullarının yerine getirilirken nasıl ilerlediğidir.
@ teşekkür ederim hocam
Rica ederim, iyi çalışmalar
n+1 + n +1 2n+2 değil mi
tesekkurler
Rica ederim, iyi çalışmalar