Çizgelerin Bellekte Tutulması (Turkish)

Download Report

Transcript Çizgelerin Bellekte Tutulması (Turkish)

ÇİZGELERİN
GÖSTERİMİ
Yılmaz KILIÇASLAN
Sunu Planı

Bu derste, çizgelerin bilgisayarda gösterimine ilişkin iki
standart yaklaşımı inceleyeceğiz.
Ardışık ve Bağlı Gösterim

Çizgeler bellekte iki şekilde saklanabilirler:
1.
2.

Komşuluk matrisi ile
Bağlı listeler ile
(ardışık gösterim)
(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.
Yoğ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ı listeler
kullanılır.
Ç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)
Ç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.
Ç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.
Ç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.
Ç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üğüm
Komş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.
Ç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) ve
― Kenar Dosyası (Edge File).
Ç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.
Ç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.
Çizgelerin Bağlı Listelerle Gösterimi - 5

Şekil 3, şekil 2’deki çizgenin bellekte nasıl görüneceğini
göstermektedir.
Şekil 3.