mit503 veri yapıları ve algoritmalar - yuriy...

Post on 07-Mar-2018

231 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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

top related