yığın ne demek?

Yığın (Heap) Veri Yapısı

Yığın (Heap), özel bir ağaç tabanlı veri yapısıdır. Genellikle, bir yığındaki en yüksek (veya en düşük) öncelikli öğeye hızlı erişim sağlamak için kullanılır. İki ana türü vardır:

  • Min Yığın (Min Heap): Kök düğüm, alt düğümlerinden daha küçük veya onlara eşit bir değere sahiptir. Bu özellik, yığındaki en küçük öğenin her zaman kök düğümde bulunmasını sağlar.
  • Max Yığın (Max Heap): Kök düğüm, alt düğümlerinden daha büyük veya onlara eşit bir değere sahiptir. Bu özellik, yığındaki en büyük öğenin her zaman kök düğümde bulunmasını sağlar.

Temel Özellikleri

  • Tam veya Neredeyse Tam Ağaç: Yığın, tam veya neredeyse tam bir ikili ağaç yapısına sahiptir. Bu, tüm seviyelerin (son seviye hariç) tamamen dolu olduğu ve son seviyedeki düğümlerin sola yaslanmış olduğu anlamına gelir.
  • Yığın Özelliği (Heap Property): Yukarıda bahsedilen min yığın veya max yığın özelliklerinden birini sağlar. Bu özellik, yığının tutarlılığını korur ve en yüksek (veya en düşük) öncelikli öğenin hızlı bir şekilde bulunmasını sağlar.

Temel İşlemler

  • Ekleme (Insertion): Yığına yeni bir öğe ekleme işlemidir. Ekleme genellikle ağacın en sonuna yapılır ve ardından yığın özelliğini korumak için "heapify" işlemi uygulanır. "ekleme"
  • Silme (Deletion): Yığından bir öğe silme işlemidir. Genellikle kök düğümü (en yüksek veya en düşük öncelikli öğeyi) silmeyi içerir. Silme işleminden sonra, yığın özelliğini korumak için "heapify" işlemi uygulanır. "silme"
  • Heapify: Bir ağacı yığın yapısına dönüştürme işlemidir. Bu, genellikle yığın özelliğini ihlal eden bir düğümü, doğru pozisyonuna taşıyarak yapılır.
  • En Yüksek/Düşük Değeri Bulma (Find-Min/Find-Max): Yığındaki en yüksek veya en düşük öncelikli öğeyi bulma işlemidir. Bu işlem, kök düğüme erişerek kolayca yapılabilir.

Kullanım Alanları

Yığın veri yapısı, çeşitli uygulamalarda kullanılır:

  • Öncelik Kuyrukları (Priority Queues): İşlerin önceliklerine göre işlenmesi gereken sistemlerde kullanılır. Örneğin, işletim sistemlerinde görev zamanlama. "öncelik%20kuyrukları"
  • Sıralama Algoritmaları (Sorting Algorithms): Heap Sort algoritması gibi sıralama algoritmalarında kullanılır. "sıralama%20algoritmaları"
  • Graf Algoritmaları (Graph Algorithms): Dijkstra'nın algoritması gibi en kısa yol algoritmalarında kullanılır. "graf%20algoritmaları"
  • Medyan Bulma (Median Finding): Veri akışındaki medyanı (ortanca değeri) dinamik olarak bulmak için kullanılabilir. "medyan%20bulma"

Avantajları

  • Verimli Erişim: En yüksek veya en düşük öncelikli öğeye O(1) zaman karmaşıklığı ile erişim sağlar.
  • Logaritmik Karmaşıklık: Ekleme ve silme işlemleri genellikle O(log n) zaman karmaşıklığına sahiptir.
  • Bellek Verimliliği: Genellikle bir dizi (array) üzerinde uygulanabilir, bu da bellek kullanımını optimize eder.

Dezavantajları

  • Sadece En Yüksek/Düşük Önceliğe Odaklı: Diğer elemanlara erişim ve arama verimli değildir.
  • Sabit Boyut: Dizi tabanlı uygulamalarda, başlangıçta sabit bir boyut belirlenmesi gerekebilir.

Yığın veri yapısı, öncelikli verilere hızlı erişim gerektiren uygulamalar için güçlü bir araçtır.