NİŞANTAŞI ÜNİVERSİTESİ

Slides:



Advertisements
Benzer bir sunumlar
MIT503 Veri Yapıları ve algoritmalar
Advertisements

MATLAB Bilgisayar Programlama Yrd.Doç. Dr. Aslıhan KURNUÇ
IT503 Veri Yapıları ve algoritmalar
MIT504 İnternet ve Web Programlama: Javascript programlama devam Yrd. Doç. Dr. Yuriy Mishchenko.
Nesneye Dayalı Programlama
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
RAID Nedir?.
Özyinelemeli(Recursive) Algoritma Tasarımı
Recursion (Özyineleme)
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
Nesneye Dayalı Programlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
Özyineleme(Recursion)
Recursion (Özyineleme)
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
Bilgisayar Programlama
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
HANOİ KULELERİ.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
MKM 311 Sistem Dinamiği ve Kontrol
ERZURUM TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK ve MİMARLIK FAKÜLTESİ İNŞAAT MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ MMF 202 SAYISAL YÖNTEMLER DERSİ DERS BİLGİLENDİRMESİ.
HANOI KULESI HANOI KULESI OYUNU, 1883 YıLıNDA FRANSıZ MATEMATIKÇI EDOUARD LUCAS TARAFıNDAN ORTAYA ATıLMıŞTıR. OYUN ORTAYA ÇıKıŞı HINT INANıŞLARıNA DAYANMAKTADıR.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
YAPISAL PROGRAMLAMA Hafta-7
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

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