mit503 veri yapıları ve algoritmalar - yuriy...
TRANSCRIPT
MIT503 Veri Yapıları ve algoritmalar
GraflarY. Doç. Dr. Yuriy Mishchenko
Graflar
Ders planı• Graflara giriş• Baze önemli graf işlemleri
Graflar
Graflar ilişkiler göstermek için çizilgelerdir– Düğümler (node'lar, elemanlar) ve bağlantılar
(edge'ler, kenarlar, ilişkiler) vardır– Düğimler arasındaki ilişki bağlantı ile gösterilir– Sayısal ilişkiler için,
bağlantılar üzerinde sayısal bir değer yazılır
– Yönlü ilişkiler için, bağlantılara yön atanır
0.5
0.25 0.33 0.77
0.5
0.150.33
0.17
1.0
1.0
GraflarGraflar kavramsal bir araç: – Arkadaşlık ilişkileri– Sosyal bağlantıları– Şirketin ürünlerinin tedarik-tüketim bağlantıları– Üretim sürecinin çıktı-girdi bağımlılıkları– Bilgi işlem sistemi/veritabanında bağımlılıkları– Ekonomik işbirlikleri– Otoban yolları– Elektrik şebekesi– İnternet ağı– VB
0.5
0.25 0.33 0.77
0.5
0.150.33
0.17
1.0
1.0
Temel Kavramlar
• Graflar, düğümler (ing. “node”) ve bağlantılar/kenarlar (ing. “edge”) dan oluşturulan bir çizilge
• Dügüm=eleman/nesne, bağlantı/kenar=ilişki• Graflarda düğümler genellikle noktalar ve
bağlantılar oklar kullanarak gösterilir
Temel Kavramlar
Düğüm veya Node
Bağlantı veya Edge
Arkadaşlık grafı:• Düğüm = Öğrenci• Bağlantı = Arkadaşlık
Temel Kavramlar
• İlişkilerde sayısal değerler olabilir– Örneğin – ticari ilişkilerde alişveriş ürün miktarları– Sayısal ilişkilere sahip olan graflara ağırlıklı graf
denir, ilişkinin sayısal değerine ağırlık denir
Temel Kavramlar
0.5M
0.25M0.33M 0.77M
0.5
0.15M0.33M
0.17M
1.0M
1.0M
:: alişveriş hacimleri, miliyon ürün
Düğüm veya Nesne
Bağlantı veya İlişki
Temel Kavramlar
• İlişkiler yönsüz ve yönlü olabilir– Örneğin, arakaşlık yönsüz ilişkidır: eğer A B’nin
arkadaşı ise, B A’nın arkadaşı dır– İşbirliği yönsüz ilişkinin başka bir ögneği: eğer A ve
B şirket işbirliğinde ise, B ve A arasında da aynı işbirlik olması gerekir
Temel Kavramlar
– Fakat saygı yönlü ilişkidir: eğer A kişi B kişiye saygısı gösteriyorsa, B A’ya saygı göstermiyor olabilir
– Tedarik yönlü ilişkinin başka bir ögneği: eğer şirket A şirket B’ye tedarik ederse, B A’ya tedarik ediyor taktirde olmak değildir
– Bilgisayar bağlantılar, elektrik şebeke ve otoyolları başka yönlü ilişkilerin ögnekleri, bunlarda bağlantının yönü – ağdaki trafik yönünün anlamındadır
Temel Kavramlar
• Yönlü ilişkileri içeren graflara yönlü graf denir, ve ilgili ilişkiler yönlü oklarla grafta gösterilir
Temel Kavramlar
0.5
0.250.33 0.77
0.5
0.150.33
0.17
1.0
1.0
Aşk ilişkileri:• Düğüm = kişi• Bağlantı = aşk• Ağırlık = aşkın "güçü"
Temel Kavramlar
Graflar genel kavramsal araç, genel durumlarda ilişkiler graf kullanarak gösterilir ve modellenebilir
• Graflar, – Elemanlar - düğüm– İlişkiler - bağlantı– İlişkinin sayısal ölçeği - ağırlık– İlişkinin yönü – ok yönü
Temel Kavramlar
Patikalar ve Döngüler:
düğüm bağlantı
Patika
Döngü
Okları takip eden bir zincire, “patika” denir (ing. path)
Aynı düğümde başlayan ve biten patikalara “döngü” denir (ing. cycle)
Temel Kavramlar
• Ağaçlar, grafların özel bir durumu, döngü içermeyen graflar dır
Temel Kavramlar
Graf:
Döngü var
döngü
Temel Kavramlar
Ağaç:
Döngü yok
Temel Kavramlar
Graflar görsel olarak farklı şekilde gösterilebilir, fakat gerçekten grafın yapısı önemlidir
=
Temel Kavramlar
Graflar görsel olarak farklı şekilde gösterilebilir, fakat gerçekten grafın yapısı önemlidir
=
Temel Kavramlar
Yani grafın şekli önemli değil, eğer bir birine düğümler taşıyarak değiştirilebilir ise
=
Temel Kavramlar
Ağaçların temel kavramları (hatırlatma)Ağaç kökü
Ağaç yaprakları
Ana/çocuk düğümü
Ağaç seviyeleri
Ağaç yüksekliği
Temel Kavramlar
• Ağaçta en çok iki çocuklu düğümler varsa, öyle agaçlara ikili ağaç denir
ikili ağaç değil ikili ağaç
Temel Kavramlar
• Grafın temel temsili:– Grafın temel temsili: • düğüm listesi V={n1,n2,n3,…} ve • bağlantı listesi E={n1n2,n1n3,n2n3,…}, • yani graf G = (V,E)
Temel Kavramlar
• Grafın temel temsili:– Alternatif temsili - bitişiklik matrisi • Düğümler, bir matrisin kenarlarında yazılır• Bağlantılar, ilgili düğümlerin sütün ve satır kesişiminde
yazılıyor
Temel Kavramlar
Bitişiklik matrisi
23
64
1
5
78
1 2 3 4 5 6 7 8
1 0 1 0 0 0 0 0 0
2 0 0 1 0 0 0 0 0
3 0 0 0 1 0 1 0 0
4 0 0 0 0 1 0 0 0
5 1 0 0 0 0 0 0 1
6 0 0 0 0 0 0 1 0
7 0 0 1 0 0 0 0 0
8 0 0 1 0 0 0 0 0
Temel Kavramlar
• Ağırlıklı graflar için, bitişiklik matrisinde ilişkililerin ağırlıkları yazılır
Temel Kavramlar
• Yönsüz graflar için, bitişiklik matrisi simetrik olması gerekmektedir: eğer ij bağlantı gösteriliyorsa ji bağlantı da olması lazım
Yönsüz grafın bitişiklik matrisi:
23
6
4
1
5
78
1 2 3 4 5 6 7 8
1 0 1 0 0 1 0 0 0
2 1 0 1 0 0 0 0 0
3 0 1 0 1 0 1 1 0
4 0 0 1 0 1 0 0 0
5 1 0 0 1 0 0 0 1
6 0 0 1 0 0 0 1 0
7 0 0 1 0 0 1 0 0
8 0 0 1 0 1 0 0 0
Temel Kavramlar
Örnek yönlü graf:
bc
g
d
a
e
fh
Temel Kavramlar
Temel temsili:
bc
g
d
a
e
fh
V={a,b,c,d,e,g,f,h} - elemanlar
E={ab,bc,cd,de,ea,cg,gf,fc,hc,eh} - bağlantılar
Baze grafların uygulamaları
• Graflar kavramsal olarak çok genel olduğu nedeniyle, graf birçok durumda kullanılabilir ve birçok problemlerde karşılanır
Baze grafların uygulamaları
• Endüstriel üretim süreci, üretim adımları – düğümler ve o adımlar arasındaki bagımlılık – bağlantılar olarak temsil edilebilir
• Endüstriel üretim tasarımı ve optimizasyonu, graf problem olarak tanımlanabilir
Baze grafların uygulamaları
• Elektrik devreler, elektrik üreticiler ve tüketiciler – düğümler ve elektrik bağlantılar – graf bağlantıları olarak temsil edilebilir
• Elektrik devrelerinin tasarımı ve optimizasyonu da graf problemi olarak tanımlanabilir
Baze grafların uygulamaları
• Bir ticaret ağlarında, şubeler – düğümler ve tedarik zincirleri – bağlantılar kullanarak temsil edilebilir
• Ticaret-tedarik tasarımı graf problemi olarak tanımlanabilir
Baze grafların uygulamaları
• Elektrik şebekede, üreticiler ve tüketicileri – düğümler ve bağlantılar – graf bağlantıları olarak temsil edilebilir
• Ülkenin şebeke optimizasyonu ve çalışması graf problemi olarak tanımlanabilir
Baze grafların uygulamaları
• Ülkenin otoyol sisteminde, şehirler – düğümler ve otobanlar –bağlantıları olarak temsil edilebilir
• Otoyolların optimizasyonu, durumu ve patika bulma graf problemi olarak tanımlanabilir
Baze graf işlemleri
• Graf arama problemleri– Graf bağlantılarını takip ederek graftaki belirli bir
düğüm aranması– Graf bağlantılarını takip ederek, bir hedef
düğümünün başlangıçtan uzaklığı hesaplanması– Graf bağlantılarını takip ederek, grafın genel
topoloji veya yapısı incelenmesi
Baze graf işlemleri
• Graf arama için derinlikte ve enine arama yaklaşımları kullanılmaktadır
Baze graf işlemleri
• Derinlikte arama (deapth-first search)1. Belirli bir düğüm ile (ona kök denir) başlatılır2. Bu düğümle başlayınca, grafın bir dalı mümkün
iken takip edilir3. Dalın sonu ulaşıltıktan sonra, aynı daldan geri
dönülür ve ilk uygun önceki bir düğümden yeni dalın incelenmesi aynı şekilde başlatılır
4. VB
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
a ile başlıoruz
Bir dalı takip ediyoruz
Geçiş düğümleri:a→b→c→d→e→a
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
a ile başlıoruzSon düğüme ulaştıktan sonra (a) geri dönüyoruz, uygun önceki bir elemandan yeni dalı incelemeye başlıyoruz
Geçiş düğümleri:a→b→c→d→e→aa←ee→h→c
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
a ile başlıoruzSon düğüme ulaştıktan sonra (a) geri dönüyoruz, uygun önceki bir elemandan yeni dalı incelemeye başlıyoruz
Geçiş düğümleri:a→b→c→d→e→aa←ee→h→c
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
a ile başlıoruza’ya ulaştıktan sonra, geri dönüyoruz
Geçiş düğümleri:a→b→c→d→e→aa←ee→h→cc←h←e←d←cc→g→f→c
sona ulaştıktan sonra geri dönüyoruz; buradaki geri geçişi c’ye kadar oluyor!
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
A ile başlıoruzA’ya ulaştıktan sonra, geri dönüyoruz
Geçiş düğümleri:a→b→c→d→e→aa←ee→h→cc←h←e←d←cc→g→f→c
c’ye ulaştıktan sonra geri dönüyoruz
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
Geçiş düğümleri:a→b→c→d→e→aa←ee→h→cc←h←e←d←cc→g→f→c -- Bitti
a ile başlıoruza’ya ulaştıktan sonra, geri dönüyoruzc’ye ulaştıktan sonra geri dönüyoruz ...
Derinlikte arama
Derinlikte arama:
bc
g
d
a
e
fh
Evde:Derinlikte arama için sözde kod ve akış şemasını yazmayı deneyin
Not: derinlikte arama algoritması LIFO stack kullanarak en kolaydır
Derinlikte arama
• Derinlikte arama ile yayılan ağacın oluşturulması– Grafın tüm düğümleri içeren ağaç olan altgrafa
(yani bağlantıların altkümesine) yayılan ağaç denir– Derinlikte aramada bir yayılan ağacı oluşturulur
Derinlikte arama
Derinlikte arama yayılan ağacı:
bc
g
d
a
e
fh
Derinlikte arama
• Bağlı parçalar– Bir elemana devamlı patikalarla bağlanan tüm
düğümlere grafın bağlı parçası denir
– Grafın bağlı parçaları arasında devamlı patika bulunamaz
Derinlikte arama
Bağlı parçalar
Bağlı parça I Bağlı parça II
Derinlikte arama
• Bağlı parçalar önemli pratik bir kavram, gruplar topluluklar anlamına gelebilir (mesela sosyal topluluklar), sistemin bağımsız bileşenlerinin anlamına gelebilir (üretim sureçlerinin bileşenleri, makine tasarımının modülleri, sistemin bileşenleri), vb
Derinlikte arama
• Derinlikte arama kullanarak bağlı parçalar bulunabilir– Herhangi bir düğüm başlanır, derinlikte arama
kullanarak bu düğüme bağlı tüm diğer düğümler bulunur
– Bundan sonra, dışarıda kalan her hangi bir düğüm ile önceki tekrar yapılır
– VB
Derinlikte arama
• Grafların bağlı parçaları
K
K
Birinci derinlikte arama süresi İkinci derinlikte arama süresi
Derinlikte arama
• Derinlikte arama gereken zamanı olarak O(N) algoritma dır
Enine arama
• Enine arama (breadth-first search)1. Bir düğüm ile (kök denir) başlatılır 2. Bu düğüm için önce tüm çocuklar incelenir3. Sonra bu çocukların çocukları incelenir4. Sonra bu çocukların çocukları incelenir5. VB
Enine arama
Enine arama
bc
g
d
a
e
fh
a ile başlıoruz ve
tüm çocukları inceliyoruz
Arama sırası a→{b,e}
Enine arama
Enine arama
bc
g
d
a
e
fh
Bu elemanların çocukları inceliyoruz
Arama sırası a→{b,e} →{c,d,h}
Enine arama
Enine arama
bc
g
d
a
e
fh
Arama sırasıa→{b,e} →{c,d,h} →{c,f}
Bu elemanların çocukları inceliyoruz
Enine arama
Enine arama
bc
g
d
a
e
fh
Evde:Bu algoritma için sözde kod ve akış şemasını yazın
Sıra:a→{b,e} →{c,d,h} →{c,f}
Enine arama
• Enine arama da grafın bir yayılan ağacını oluşturur
• Ayrıca enine arama grafın düğümlerinin kökten uzaklıklarını hesaplıyor
Enine arama
Enine arama yayılan ağacı:
bc
g
d
a
e
fh
Enine arama
Enine arama kökten uzaklıkları:
bc
g
d
a
e
fh
01
1
2
22
3
3
Enine arama
• Enine arama O(N) algoritmadır
Graf sıralamaları
• Derinlikte ve enine graf arama işlemleri graf düğümlerini bir sıraya koyar
Graf sıralamaları
• Çok önemli olan ve çok yayğın kullanılan derinlikte aramanın grafın düğüm sıraları veya düzenleri vardır
• Derinlikte arama ile ilgili “preorder”, “postorder” ve “reverse postorder” sıralar vardır
Graf sıralamaları
bc
g
d
a
e
fh
Derinlikte aramada düğümlerin sırası:
"abcdehedcgfgcba"
Graf sıralamaları
bc
g
d
a
e
fh
Derinlikte arama sırası: abcdehedcgfgcba
preorder (ilk karşılandığı sırası)a-b-c-d-e-h-g-f
Graf sıralamaları
bc
g
d
a
e
fh
Derinlikte arama sırası: abcdehedcgfgcba
postorder (son karşılandığı sırası) h-e-d-f-g-c-b-a
reverse (ters) postorder: a-b-c-g-f-d-e-h
Graf sıralamaları
• Önemli: ağaçlar için benzer sıralar tanımlanır: pre-order, in-order ve post-order
Graf sıralamaları
– Pre-order: kök, sonra sol altağaç sonra sağ altağaç
– İn-order: sol altağaç, sonra kök, sonra sağ altağaç
– Post-order: sol altağaç, sonra sağ altağaç, son kök
Graf sıralamaları
Pre-order: F, B, A, D, C, E, G, I, H(kök,sonra en sola, sonra sağa)
Graf sıralamaları
In-order: A, B, C, D, E, F, G, H, I(en sola, sonra kök, sonra sağa)
Graf sıralamaları
Post-order: A, C, E, D, B, H, I, G, F(en sola, sonra en sağa, sonra kök)
Graf sıralamaları
• Topolojik sıralama:– Topolojik sıralama, grafın düğümlerin şöyle bir
sırası ki,• "a" düğümden "b" düğüme graf bağlantısı varsa, sırada
"a" eleman "b" elemandan önce gelmeli
Graf sıralamaları
• Topoljik sıralama sadece döngüsüz graflar için tanımlanabilir
• Yani, bu da ağaçların bir sırası dır
Graf sıralamaları
Topolojik sıralama:
bc
gd
a
e
fh
a b e c dh g f
Graf sıralamaları
• Topolojik sıralama enine arama kullanarak bulunur
bc
g
d
a
e
fh
Graf sıralamaları
1. Önce enine arama yapılır
2. Sonra düğümler, enine aramanın sırasına göre sıralanır
bc
g
d
a
e
fh
01
12
2
3
23
Graf sıralamaları
a b e c dh g f
bc
gd
a
e
fh
01
1
2
22
3
3
0 1 2 2 2 2 3 4