Skip to content

Software-Guardians/Search_Algorithms_Visualizer

 
 

Repository files navigation

Arama Algoritmaları Görselleştirici

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.

🚀 Özellikler

🌳 3 Farklı Ağaç Yapısı:

  • Binary Tree (İkili Ağaç)
  • AVL Tree (Self-balancing binary search tree)
  • Red-Black Tree (Self-balancing binary search tree with color properties)

🔍 4 Farklı Arama Algoritması:

  • 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ı

🎮 İnteraktif Kontroller:

  • 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

⏱️ Kronometre Sistemi:

  • 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

🎯 Gelişmiş Kontrol Sistemi:

  • 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ç

🎨 Görsel Özellikler:

  • 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

📚 Eğitim Özellikleri:

  • ℹ️ 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

🖥️ UI/UX İyileştirmeleri:

  • 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

🛠️ Kurulum

  1. Python 3.7+ sürümünün yüklü olduğundan emin olun
  2. Gerekli paketleri yükleyin:
    pip install -r requirements.txt

🚀 Kullanım

Uygulamayı Başlatma:

python search_visualizer.py

Temel Kontroller:

Üst Kontrol Satırı:

  • 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ı

Alt Kontrol Satırı:

  • 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

Hedef Seçimi:

  1. Ağaç oluşturulduktan sonra herhangi bir düğüme tıklayın
  2. Hedef seçildi mesajı görünecek
  3. Aramayı Başlat butonu aktif olacak
  4. Aramayı başlatın ve algoritmanın çalışmasını izleyin

📊 Algoritma Detayları

DFS (Depth-First Search)

  • 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

BFS (Breadth-First Search)

  • 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 (A-Star)*

  • 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

Dijkstra

  • 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ğaç Yapısı Detayları

Binary Tree

  • 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

AVL Tree

  • Açıklama: Self-balancing binary search tree
  • Özellik: Otomatik dengeleme, yükseklik farkı ≤ 1
  • Kullanım: Dengeli arama, O(log n) garantisi

Red-Black Tree

  • Açıklama: Self-balancing binary search tree with color properties
  • Özellik: Renk özellikleri ile dengeleme
  • Kullanım: Güvenilir performans, karmaşık operasyonlar

💻 Sistem Gereksinimleri

  • 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)

🔧 Teknik Özellikler

Performans Optimizasyonları:

  • 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

UI Framework:

  • 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

📚 Eğitim Kullanımı

Sınıf İçi Gösterim:

  • Algoritma karşılaştırması
  • Performans analizi
  • Görsel öğrenme
  • İnteraktif deneyim

Bireysel Öğrenme:

  • Algoritma çalışma prensibi
  • Karmaşıklık analizi
  • Performans karşılaştırması
  • Ağaç yapısı öğrenme

Araştırma ve Test:

  • Farklı ağaç türleri
  • Algoritma performans analizi
  • Heuristic fonksiyon testi
  • Benchmark karşılaştırması

🚀 Gelecek Özellikler

  • Ç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

🤝 Katkıda Bulunma

  1. Projeyi fork edin
  2. Feature branch oluşturun (git checkout -b feature/AmazingFeature)
  3. Değişikliklerinizi commit edin (git commit -m 'Add some AmazingFeature')
  4. Branch'inizi push edin (git push origin feature/AmazingFeature)
  5. Pull Request oluşturun

Katkı Alanları:

  • 🐛 Bug düzeltmeleri
  • ✨ Yeni özellikler
  • 📚 Dokümantasyon iyileştirmeleri
  • 🎨 UI/UX geliştirmeleri
  • 🚀 Performans optimizasyonları
  • 🌳 Yeni ağaç türleri
  • 🔍 Yeni arama algoritmaları

📄 Lisans

Bu proje eğitim amaçlı geliştirilmiştir. Özgürce kullanabilir, değiştirebilir ve dağıtabilirsiniz.

📞 İletişim

  • GitHub Issues: Proje sayfasında issue açın
  • Pull Requests: Katkılarınızı bekliyoruz
  • Öneriler: Yeni özellik önerileri için issue açın

🙏 Teşekkürler

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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%