Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Alpal Tolk tarafından sunulan bir eğitim içeriğidir ve kuyruk veri yapısında yapılan tasarım değişikliklerini anlatmaktadır.
- Videoda, kuyruk veri yapısında NQ metodunun eleman sayısından bağımsız olarak sabit zamanda çalışabilmesi için yapılan tasarım değişikliği gösterilmektedir. İlk bölümde tail pointer'ı kullanarak NQ metodunun sabit zamanda çalıştırılması anlatılırken, ikinci bölümde dequeue metodunun nasıl çalıştığı, kuyruğun boş olduğu durumda exception fırlatma ve kuyruğun boş olmadığı durumlarda sabit zamanda (6-7 adım) işlemi gerçekleştiren dequeue metodunun adım adım gösterilmesi yapılmaktadır.
- Videoda ayrıca, kuyruk veri yapısında yapılan değişikliklerin kodlanması, programın test edilmesi ve NQ metodunun Big O notasyonunun hesaplanarak sabit zamanda çalıştığı kanıtlanması da yer almaktadır.
- 00:12Kuyruk Veri Yapısında Tasarım Değişikliği
- Videoda kuyruk veri yapısında yapılacak tasarım değişiklikleri anlatılacak.
- Daha önceki videolarda NQ ve DQ metodlarının pigo natosunu hesaplamış, NQ metodunun eleman sayısına bağlı olarak çalıştığını, DQ metodunun ise her zaman sabit zamanlarda çalıştığını göstermişiz.
- Tasarım değişikliğinin amacı NQ metodunun da sabit zamanlarda çalışan bir metod olmasını sağlamaktır.
- 00:42Tail Pointer Kullanımı
- Kuyruk veri yapıları sondan doğru eleman ekleme işlemi yaptığı için son elemanı ararken while döngüsü kullanılıyor.
- Tail özelliğinin işaretçisini bulundurarak while döngüsünden kurtulup, yeni elemanı sadece tail'in next'ine ekleyebiliriz.
- Başlangıçta tail özelliği null olarak işaretlenmeli ve NQ metodu içerisinde boş kuyruğa eleman eklerken root'a bellek tası yaptırıp, root'u son eleman olarak ayarlamalıyız.
- 01:51NQ Metodu Tasarım Değişikliği
- Boş kuyrukta eleman eklerken, yeni elemana tail'in next'ini oluşturup, tail'i de next ile güncellemeliyiz.
- Bu şekilde NQ metodumuz eleman sayımızdan bağımsız hale gelmiş olur.
- Çıkartma işlemleri yaptığımızda da tail özelliğini güncelleyebilmemiz gerekiyor.
- 02:32Dequeue Metodu Tasarım Değişikliği
- Dequeue metodunda öncelikle kuyruk veri yapısının boş olup olmadığını kontrol ediyoruz.
- Eğer kuyruk boşsa exception fırlatıyoruz çünkü dequeue metodu baştan doğru eleman çıkartma prensibine sahip.
- Root ile tail aynı yeri gösteriyorsa (yani kuyruk boşsa), tail'i temp'in next'i olarak null yapmalıyız.
- 04:12Programın Test Edilmesi
- Programı derlediğimizde herhangi bir hata almadık, mantıksal testleri kendimiz gerçekleştireceğiz.
- Kuyruk boş olduğunda "true" değeri, dolu olduğunda "false" değeri döndürüyor.
- NQ metoduyla eleman ekleme ve dequeue metoduyla eleman çıkarma işlemleri başarılı şekilde çalışıyor.
- 07:19NQ Metodunun Big O Notasyonu
- Boş kuyrukta NQ metodu dört adımda eleman ekleyebiliyor: isemp sorgusu, root'a bellek tası yaptırma, tail'i update etme ve length'i artırma.
- Dolu kuyrukta da isemp sorgusu ve tail'i update etme işlemleri sabit zamanda gerçekleşiyor.
- Bu tasarım değişikliği ile NQ metodumuzun da sabit zamanda çalışabilecek bir metod olmasını sağladık.
- 09:07Deque Metodu Hesaplama
- Deque metodu, kuyruk veri yapısında eleman çıkarma işlemi için kullanılır.
- Kuyruk boş olduğunda eleman çıkartılamadığı için bir exception fırlatılır.
- Kuyruk boş değilse, temp olarak oluşturulan pointer'a root özelliği alınır.
- 09:47Deque Metodu Adımları
- Kuyrukta eleman olup olmadığı kontrol edilir ve root next ile güncellenir.
- Temp olarak oluşturulan root'un eski değeri sisteme geri iade edilir.
- Lenk özelliği bir azaltılır.
- 10:15Sabit Zamanda Çalışma
- Kuyrukta beş eleman olduğunda deque metodu altı adımda çalışır.
- Kuyrukta bir eleman olduğunda deque metodu yedi adımda çalışır.
- Deque metodu, kuyrukta eleman sayısı ne olursa olsun sabit zamanda çalışır.
- 11:17Video Özeti
- Videoda kuyruk veri yapısında tasarım değişiklikleri anlatılmıştır.
- Nq metodu sabit zamanda çalışabilecek bir metot haline getirilmiştir.
- Kafanıza takılan durumlar için yorumlarda soru sorulabilir.