Bu proje, çeşitli arama algoritmalarını ağaç yapılarında interaktif ve görsel bir şekilde gösteren bir CustomTkinter uygulamasıdır.
- Binary Tree (İkili Ağaç)
- AVL Tree (Self-balancing binary search tree)
- Red-Black Tree (Self-balancing binary search tree with color properties)
- DFS (Depth-First Search) - Derinlik öncelikli arama
- BFS (Breadth-First Search) - Genişlik öncelikli arama
- A* (A-Star) - Heuristic-based search
- Dijkstra - En kısa yol algoritması
- Ağaç türü seçimi - Dropdown menü ile
- Arama algoritması seçimi - Dropdown menü ile
- Ağaç boyutu ayarlama (5, 10, 15, 20, 25 düğüm)
- Arama hızı kontrolü (0.1s - 2.0s arası)
- Hedef seçimi - Düğüme tıklayarak
- Gerçek zamanlı görselleştirme
- Dakika:Saniye.Milisaniye formatında ölçüm
- Duraklat/Devam et özelliği
- Arama tamamlandığında final süre gösterimi
- Otomatik sıfırlama sadece manuel işlemlerde
- Duraklat (Pause) - Aramayı ortada durdur
- Devam Et (Resume) - Kaldığı yerden devam et
- Sıfırla (Reset) - Orijinal duruma dön
- Yeni Ağaç Oluştur - Rastgele yeni ağaç
- Ağaç görünümü - Düğümler ve bağlantılar
- Renk kodlaması:
- 🔵 Mavi - Normal düğümler
- 🔴 Kırmızı - Ziyaret edilen düğümler
- 🟢 Turkuaz - Bulunan yol
- 🟠 Turuncu - Hedef düğüm
- Tıklanabilir düğümler - Hedef seçimi için
- Smooth animasyon - Göz yormayan görselleştirme
- ℹ️ Bilgi Butonu - Her algoritma için detaylı açıklama
- Modal pencere - Algoritma çalışma prensibi
- Karmaşıklık analizi - Zaman ve uzay karmaşıklığı
- Avantaj/Dezavantaj listesi
- Nasıl çalışır adım adım açıklama
- Tam ekran başlatma - Maksimum görselleştirme alanı
- İki satırlı kontrol paneli - Tüm butonlar görünür
- Responsive tasarım - Farklı ekran boyutlarına uyum
- Dark tema - Göz dostu arayüz
- Yeniden boyutlandırma engeli - Tutarlı deneyim
- Python 3.7+ sürümünün yüklü olduğundan emin olun
- Gerekli paketleri yükleyin:
pip install -r requirements.txt
python search_visualizer.py
- Ağaç Türü: Dropdown menüden ağaç türü seçin
- Arama Algoritması: Dropdown menüden arama algoritması seçin
- ℹ️ Bilgi: Seçilen algoritma hakkında detaylı bilgi alın
- Ağaç Boyutu: 5-25 arası düğüm sayısı
- Hız: 0.1s - 2.0s arası animasyon hızı
- Yeni Ağaç Oluştur: Rastgele yeni ağaç
- Aramayı Başlat: Seçilen algoritma ile başlat
- Durdur: Çalışan aramayı duraklat
- Devam Et: Duraklatılan aramayı devam ettir
- Sıfırla: Orijinal duruma dön
- Ağaç oluşturulduktan sonra herhangi bir düğüme tıklayın
- Hedef seçildi mesajı görünecek
- Aramayı Başlat butonu aktif olacak
- Aramayı başlatın ve algoritmanın çalışmasını izleyin
- Açıklama: Derinlik öncelikli arama
- Çalışma: Stack kullanarak derinlemesine arama
- Karmaşıklık: O(V + E) zaman, O(h) uzay
- Avantaj: Az bellek kullanır, derin ağaçlarda hızlı
- Dezavantaj: En kısa yolu garanti etmez
- Açıklama: Genişlik öncelikli arama
- Çalışma: Queue kullanarak seviye seviye arama
- Karmaşıklık: O(V + E) zaman, O(w) uzay
- Avantaj: En kısa yolu bulur, optimal çözüm
- Dezavantaj: Çok bellek kullanır
- Açıklama: Heuristic-based search
- Çalışma: f(n) = g(n) + h(n) formülü kullanır
- Karmaşıklık: O(b^d) zaman ve uzay
- Avantaj: Optimal çözüm bulur, akıllı arama
- Dezavantaj: Heuristic fonksiyonu kritik
- Açıklama: En kısa yol algoritması
- Çalışma: Priority queue kullanarak mesafe hesaplama
- Karmaşıklık: O((V + E) log V) zaman, O(V) uzay
- Avantaj: En kısa yolu garanti eder
- Dezavantaj: Tüm düğümleri işler
- Açıklama: Temel ikili ağaç yapısı
- Özellik: Her düğümün en fazla 2 çocuğu
- Kullanım: Basit arama ve sıralama
- Açıklama: Self-balancing binary search tree
- Özellik: Otomatik dengeleme, yükseklik farkı ≤ 1
- Kullanım: Dengeli arama, O(log n) garantisi
- Açıklama: Self-balancing binary search tree with color properties
- Özellik: Renk özellikleri ile dengeleme
- Kullanım: Güvenilir performans, karmaşık operasyonlar
- Python: 3.7 veya üzeri
- İşletim Sistemi: Windows/macOS/Linux
- Paketler: CustomTkinter 5.2.0+
- Ekran: Minimum 1200x800 çözünürlük (tam ekran önerilir)
- Threading: UI donmaz, arama ayrı thread'de
- Canvas optimizasyonu: Sadece değişen düğümler güncellenir
- Smooth rendering: Göz yormayan animasyon
- Memory efficient: Büyük ağaçlar için optimize
- CustomTkinter: Modern, güzel arayüz
- Dark tema: Göz dostu renk paleti
- Responsive layout: Farklı ekran boyutlarına uyum
- Modal windows: Bilgi gösterimi için
- Algoritma karşılaştırması
- Performans analizi
- Görsel öğrenme
- İnteraktif deneyim
- Algoritma çalışma prensibi
- Karmaşıklık analizi
- Performans karşılaştırması
- Ağaç yapısı öğrenme
- Farklı ağaç türleri
- Algoritma performans analizi
- Heuristic fonksiyon testi
- Benchmark karşılaştırması
- Çoklu algoritma aynı anda çalıştırma
- Grafik analizi - Performans grafikleri
- Ağaç düzenleme - Manuel düğüm ekleme/silme
- Algoritma karşılaştırma - Side-by-side görünüm
- Özel heuristic fonksiyon ekleme
- Batch testing - Çoklu test senaryoları
- Export/Import - Ağaç yapısı kaydetme
- Animasyon kontrolleri - Hız, yön, tekrar
- Projeyi fork edin
- Feature branch oluşturun (
git checkout -b feature/AmazingFeature
) - Değişikliklerinizi commit edin (
git commit -m 'Add some AmazingFeature'
) - Branch'inizi push edin (
git push origin feature/AmazingFeature
) - Pull Request oluşturun
- 🐛 Bug düzeltmeleri
- ✨ Yeni özellikler
- 📚 Dokümantasyon iyileştirmeleri
- 🎨 UI/UX geliştirmeleri
- 🚀 Performans optimizasyonları
- 🌳 Yeni ağaç türleri
- 🔍 Yeni arama algoritmaları
Bu proje eğitim amaçlı geliştirilmiştir. Özgürce kullanabilir, değiştirebilir ve dağıtabilirsiniz.
- GitHub Issues: Proje sayfasında issue açın
- Pull Requests: Katkılarınızı bekliyoruz
- Öneriler: Yeni özellik önerileri için issue açın
Bu proje, arama algoritmalarını ve ağaç yapılarını öğrenmek ve öğretmek isteyen herkes için geliştirilmiştir. Katkıda bulunan herkese teşekkürler!
⭐ Projeyi beğendiyseniz yıldız vermeyi unutmayın!