Yazan : Şadi Evren ŞEKER

Bilgisayar bilimlerinin özellikle veri yapıları (data structures) konusunda sıkça kullanılan bir veri yapısının ismidir. Basitçe klasik bir sıranın (queue) üzerine öncelik değerinin eklenmesi ile elde edilir.

Bilindiği üzere normalde sıralar (queue) ilk giren ilk çıkar (FIFO , first in first out) mantığı ile çalışırlar. Yani bir bilet sırasında olduğu gibi sıraya ilk giren kişi hizmete ilk ulaşan, son giren kişi ise son ulaşan kişidir.

Öncelik sırasında (rüçhan sırası, priority queue) ise bu sırada bekleyenlerden en öncelikli olan kişinin ilk erişmesi beklenir. Bu durumu bir örnek üzerinden anlatmak gerekirse sırada bekleyen kişiler ve öncelikleri aşağıdaki şekilde verilmiş olsun:

Kişi No Öncelik
1 5
2 3
3 1
4 2
5 4

Yukarıdaki tabloda kişi numaraları ve öncelikleri sıralanmıştır. Bu listeye göre sırada bekleyenlerden ilk çıkması gereken kişi en yüksek önceliğe sahip olan 1 numaralı kişidir. Ardından 4 önceliğine sahip 5 numaralı kişi sıradan çıkar. Sıradan önceliklerine göre çıkanları sıralayacak olursak : 1,5,2,4,3 numaralı kişilerdir.

Öncelik sırasının işlenmesini aslında sırada bekleyen kişilerin önceliklerine göre sıralanması (Sort) ve ardından normal bir sıra (queue) gibi veri yapısının işlenmesi olarak düşünebiliriz. Örneğin yukarıdaki durumda öncelik sırasına göre sırayı yeniden düzenleyecek olursak :

Kişi No Öncelik
1 1
5 2
2 3
4 4
3 5

Sıralamasını elde etmiş oluruz ki bu da zaten beklemekte olan kişilerin çıkış sırasıdır.

Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.

Öncelik sıralarında aynı önceliğe sahip kişilerin nasıl sıradan çıkacakları da ayrıca bir problem olarak görülebilir. Bu noktadaki en klasik çözüm geliş sırasında göre öncelik vermektir. Örneğin yukarıdaki durumda 3 önceliğine sahip bir kişi daha olsaydı:

Kişi No Öncelik
1 5
2 3
3 1
4 2
5 4
6 3

Bu durumda öncelik sıralamasına göre hangi 3 önceliğine sahip olan kişinin (2. Kişi veya 6. Kişi) belirlerken önce gelenin önce çıkması ilkesi korunabilir. Bu durumda beklemekte olan kişiler aşağıdaki sırada sıralanabilir:

Kişi No Öncelik
1 1
5 2
2 3
6 3
4 4
3 5

Öncelik sıraları bilgisayar bilimlerinin veri yapısı konusunda kullanılan bir kavram olmasına karşılık uygulama alanları oldukça geniştir. Örneğin işletim sistemlerinde kullanılan en kısa iş ilk (shortest job first)
işlemci zamanlama (CPU scheduling) algoritması tam bir öncelik sırası örneğidir. Bekleme sırasındaki (Ready queue)
işlemlerin (process) çalıştırılma sırası uzunluklarına göre önceliğe sahiptir.

Yorumlar

  1. isa

    meraba hocam. sorum şu ” bir x hastanesi vardır ve gelen hastaların tedavi olma sırası aciliyetiyle doğru orantılıdır. bizden istenen hastaların kaydını tutacak ve aciliete göre kuyruktan eleman seçen bağlı liste ve dairesel kuyruk yapısının c++ kodunu yazmak” öncelik değeri en düşük 0, en yüksek ise 7 dir. örnek sınıf

    class hasta
    {
    public:
    string ad;
    string soyad;
    int oncelik;
    }

    teşekkürler hocam
    saygılar…

  2. Ekrem Emre

    Hocam Öncelikle merhaba sormak istediğim şu:

    (Smallest integer = highest priorty) değil midir ?

    Yukarıdaki örneklerde mesela 1 kişi numaralı arkadaş 5 önceliğine sahipse bu kişi en düşük önceliğe sahip değil midir ? 3 kişiside 1 önceliğine sahip yani en yüksek öncelikte onun değil midir ?

Şadi Evren ŞEKER için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir