2Sunu PlanıBu derste, çizgelerin bilgisayarda gösterimine ilişkin iki standart yaklaşımı inceleyeceğiz.
3Ardışık ve Bağlı Gösterim Çizgeler bellekte iki şekilde saklanabilirler:Komşuluk matrisi ile (ardışık gösterim)Bağlı listeler ile (bağlı gösterim ya da komşuluk yapısı)Bellekte her ne şekilde tutulursa tutulsunlar, çizgeler bilgisayara formel tanımlarıyla, bir düğümler ve kenarlar (düğüm çiftleri) kümesi olarak verilirler.
4Yoğun ve Seyrek Çizge Gösterimi m düğümlü ve n kenarlı bir G çizgesinin,m = O(n2) olması halinde, yoğun (dense)m = O(n) veya m = O(nlogn) olması halinde, seyrek (sparse)olduğu söylenir.Genelde,yoğun çizgeler için matrisler,seyrek çizgeler içinse bağlı listelerkullanılır.
5Çizgelerin Komşuluk Matrisleriyle Gösterimi - 1 G’nin m düğümlü bir çizge olduğunu ve düğümlerin, örneğin v1, v2, ..., vm biçiminde, sıralandığını varsayınız. G’nin, A = [aij] komşuluk matrisi aşağıdaki gibi tanımlanmış olan m x m boyutunda bir matristir:aij =1 (eğer vi, vj’nin komşusu ise)0 (aksi halde)
6Çizgelerin Komşuluk Matrisleriyle Gösterimi - 2 Şekil 1(b), Şekil 1(a)’daki düğümlerinin A, B, C, D, E biçiminde sıralandığı G çizgesinin komşuluk matrisini göstermektedir.Şekil 1.G’nin her {vi, vj} kenarının matriste, bir kez aij = 1 ve bir kez de aji = 1 olmak üzere, iki kez gösterildiğine ve bu nedenle komşuluk matrisinin simetrik olduğuna dikkat ediniz.
7Çizgelerin Komşuluk Matrisleriyle Gösterimi - 3 Bir G çizgesinin A komşuluk matrisinin nasıl oluşturulacağı, G’nin düğümlerinin nasıl sıralandığına bağlıdır. Düğümlerin sıralanmasındaki bir değişiklik, farklı bir komşuluk matrisinin üretimine yol açar. Fakat, bu şekilde elde edilmiş iki komşuluk matrisi, basitçe satır ve sütunları değiştirmek suretiyle birbirlerinden elde edilebilirler.Diğer yandan, komşuluk matrisinin oluşumu kenarların (düğüm çiftlerinin) bilgisayara hangi sırayla verildiğine bağlı değildir.Komşuluk matrisinin gösteriminde bazı değişiklikler yapılabilir. Eğer G bir çoklu çizge ise, genellikle aij, {vi, vj} kenar sayısını belirtir. Ayrıca, eğer G ağırlıklı bir çizge ise aij, {vi, vj} kenarının ağırlığına kodlar.
8Çizgelerin Bağlı Listelerle Gösterimi - 1 Bir G çizgesinin komşuluk matrisiyle gösteriminin bazı dezavantajları vardır.Her şeyden önce, G’ye düğüm eklemek ya da G’den düğüm çıkarmak zor olacaktır. Bunun nedeni, komşuluk matrisinin boyutunun değişebilecek ve düğümlerin yeniden sıralanabilecek olması ve bunların komşuluk matrisinde birçok değişikliğe yol açabilecek olmasıdır.Ayrıca, eğer G seyrek bir çizgeyse, yani kenar sayısı O(m) veya hatta O(mlogm) ise, komşuluk matrisi birçok sıfır içerek ve dolayısıyla bellek israfı çok olacaktır.Bu nedenlerden ötürü, G seyrek olması halinde bellekte bir tür bağlı listeyle tutulur.
9Çizgelerin Bağlı Listelerle Gösterimi - 1 Çizgelerin bellekte bağlı listeler nasıl tutulduğunu bir örnek üzerinden açıklayalım. Aşağıdaki şekle göz atınız:DüğümKomşuluk ListesiŞekil 2.Şekil 1(b)’deki tablonun, Şekil 1(a)’da görsel olarak tanımlanan çizgenin aynısını tanımlandığına dikkat ediniz. Tablo, her düğümün komşu düğümlerini içeren komşuluk listesini göstermektedir.
10Çizgelerin Bağlı Listelerle Gösterimi - 2 Bir G çizgesinin bağlı gösterimi, G’yi bellekte komşuluk listelerini kullanarak tutar. Böyle bir gösterim, normalde iki dosya (ya da kayıt kümesi) barındırır:Düğüm Dosyası (Vertex File) veKenar Dosyası (Edge File).
11Çizgelerin Bağlı Listelerle Gösterimi - 3 Düğüm dosyası, bir dizi ya da bağlı liste ile çizgenin düğümlerinin listesini tutar.Düğüm dosyasının kayıtları şu formda saklanır:VERTEX düğümün adıdır.NEXT-V, düğümler bağlı listeler ile tutulduğunda, düğüm dosyasında bulunan düğüm listesindeki bir sonraki düğüme işaret eder.PTR ise, kenar dosyasında bulunan düğümün komşuluk listesindeki ilk elemana işaret edecektir.
12Çizgelerin Bağlı Listelerle Gösterimi - 3 Kenar dosyası, çizgenin kenarlarını barındırır. Kenar dosyası, bütün komşuluk listelerini içerecektir. Her liste bellekte bir bağlı liste ile tutulur. Kenar dosyasının her kaydı, bir komşuluk listesindeki bir düğüme ve böylelikle dolaylı yoldan çizgenin bir kenarına karşılık gelecektir.Düğüm dosyasının kayıtları şu formda saklanır:EDGE, eğer varsa, kenarın adıdır.ADJ, düğümün düğüm dosyasındaki konumuna işaret eder.NEXT, komşuluk listesindeki bir sonraki düğümün konumuna işaret eder.
13Çizgelerin Bağlı Listelerle Gösterimi - 5 Şekil 3, şekil 2’deki çizgenin bellekte nasıl görüneceğini göstermektedir.Şekil 3.