NİŞANTAŞI ÜNİVERSİTESİ Veri Yapıları ve Algoritmalar DERS 14 NİŞANTAŞI ÜNİVERSİTESİ © Mühendislik Mimarlık Fakültesi mmf.nisantasi.edu.tr
YBLG202 Veri Yapıları ve Algoritmalar DERS 14 ÖZYİNELEMELİ ALGORİTMALAR (RECURSIVE) NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu
ÖZYİNELEMELİ ALGORİTMALAR Temeller Bazı bilgisayar programlama dilleri, bir modülün veya fonksiyonun kendisini aramasına izin verir. Bu teknik özyineleme olarak bilinir. Özyinelemede, bir fonksiyon α kendisini doğrudan çağırır veya bir fonksiyon β'yı çağırır ki bu da β orijinal fonksiyonunu çağırır. Α fonksiyonu özyinelemeli fonksiyon olarak adlandırılır Özyinelemeli bir işlev, bir döngü gibi sonsuza kadar gidebilir. Özyinelemeli işlevin sonsuz sayıda çalışmasını önlemek için özyinelemeli bir işlecin sahip olması gereken iki özellik vardır - Temel ölçütler - En az bir temel ölçüt veya koşul olmalıdır, Bu koşul karşılandığında fonksiyon kendini tekrar tekrar çağırmayı durdurur. Aşamalı yaklaşım - Yinelenen çağrılar, Her seferinde tekrarlanan bir çağrı yapılırsa temel ölçütlere yaklaşır. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu
ÖZYİNELEMELİ ALGORİTMALAR Özyinelemenin Analizi Aynı görev tekrarlama ile yapılabileceği için tekrarlamayı neden kullanacağını tartışabiliriz. Birincil nedeni, özyineleme, bir programı daha okunaklı hale getirir ve en yeni gelişmiş CPU sistemlerinden dolayı özyineleme yinelemelerden daha etkilidir. Zaman Karmaşıklığı Yinelemeler durumunda, zaman karmaşıklığını saymak için yineleme sayısını alırız. Benzer şekilde, tekrarlama durumunda, her şeyin sabit olduğunu varsayarak, özyinelemeli bir çağrı yapılma sayısını hesaplamaya çalışıyoruz. Bir işleve yapılan çağrı Ο (1), dolayısıyla tekrar eden bir çağrı yapılan (n) kez tekrar eden işlevi Ο (n) yapar. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu
ÖZYİNELEMELİ ALGORİTMALAR Hanoi Kuleleri Hanoi Kulesi, üç kule (mandal) ve birden fazla halkadan oluşan matematiksel bir bulmaca tasvir eder. Görev, düzenleme dizisini ihlal etmeden tüm diskleri başka bir kuleye taşımaktır. Hanoi Kulesi için takip edilecek birkaç kural var - Herhangi bir zamanda kuleler arasında sadece bir disk taşınabilir. Yalnızca "üst" disk çıkarılabilir. Küçük bir diskin üzerine büyük bir disk oturamaz. Hanoi Kulesi, n diskli bulmaca en az 2n-1 adımda çözülebilir. Bu Sunum, 4 diskli bir bulmacanın 24-1 = 15 basamak aldığını gösteriyor. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu
ÖZYİNELEMELİ ALGORİTMALAR Hanoi Kuleleri Hanoi Kulesi için bir algoritma yazmak için öncelikle bu sorunun daha az miktarda diskle nasıl çözüleceğini öğrenmeliyiz, örneğin → 1 veya 2. Diyelim ki üç kuleyi isim, kaynak, hedef ve aux (sadece diskleri taşımaya yardımcı olmak için). Tek bir diske sahipsek, kaynaktan hedef diskine kolayca taşınabilir. Eğer 2 diskimiz varsa - Önce, daha kük (en üstteki) diski AÇık dişliye hareket ettirelim. Ardından, büyük (alttaki) diski hedef kafese taşıyoruz. Ve son olarak, küçük diski aux'dan hedef diske hareket ettiriyoruz . Şimdi, Tower of Hanoi için ikiden fazla disk ile bir algoritma tasarlayabileceğiz. Disk yığınını iki parçaya böldük. En büyük disk (n. Disk) bir bölümdedir ve diğer tüm (n-1) diskler ikinci bölümdedir. Nihai amacımız disk n'yi kaynaktan hedefe taşımak ve daha sonra tüm diğer (n-1) diskleri üzerine koymaktır. Verilen tüm diskler için bunu özyinelemeli bir şekilde uygulayabileceğimizi düşünebiliriz. NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu
YBLG202 Veri Yapıları ve Algoritmalar Kaynakça NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu
NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu KAYNAKÇA M. T. Goodrich, R. Tamassia, D. M. Mount, Data Structures and Algorithms in C++, John Wiley & Sons, Inc., 2011 Hakan Kutucu, VERİ YAPILARI, Karabük Üniversitesi Mühendislik fakültesi, 2014 Data Structures and Algorithms, TutorialPoints, NİŞANTAŞI ÜNİVERSİTESİ ©/Yrd. Doç. Dr. Önder Eyecioğlu