• Sonuç bulunamadı

Depth first dolaşma

N/A
N/A
Protected

Academic year: 2021

Share "Depth first dolaşma"

Copied!
29
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

Graflar (Graphs)

z

Graf gösterimi

z

Uygulama alanları

z

Graf terminolojisi

z

Depth first dolaşma

z

Breadth first dolaşma

z

Topolojik sıralama

Yrd.Doç.Dr. M. Ali Akcayol G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar

zz Graflar bilgi parçaları arasındaki ilişkileri gösterirler.Graflar bilgi parçaları arasındaki ilişkileri gösterirler.

zz Bir G graf V ile gösterilen node’lardan (verteks) ve E ile Bir G graf V ile gösterilen node’lardan (verteks) ve E ile gösterilen kenarlardan (Edge) oluşur. Her kenar iki node’u gösterilen kenarlardan (Edge) oluşur. Her kenar iki node’u birleştirir.

birleştirir.

z

z Her node bir bilgi parçasını gösterir.Her node bir bilgi parçasını gösterir.

z

z Her kenar iki bilgi arasındaki ilişkiyi gösterir ve (u, v) şeklinde Her kenar iki bilgi arasındaki ilişkiyi gösterir ve (u, v) şeklinde ifade edilir. (u, v) iki node’u gösterir.

ifade edilir. (u, v) iki node’u gösterir.

node

edge

(2)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar

Uygulama alanları

Elektronik devreler

Baskı devre kartları (PCB) Entegre devreler

Ulaşım ağları Otoyol ağı Havayolu ağı

Bilgisayar ağları Lokal alan ağları İnternet

Veritabanları

Entity-relationship diyagram

Graflar

Örnek gösterim:

z Aşağıdaki şekilde herbir node üç karakter kodlanmış olarak bir havaalanını göstermektedir.

z Herbir kenar iki node arasındaki uçuş rotasını ifade etmekte ve iki node arasındaki uzaklığı ifade etmektedir.

ORD PVD

DFW MIA SFO

LAX

LGA HNL

849

802 1743 1387

1843

1099 1233 1120

337 2555

142

(3)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar

Kenar türleri:

z Directed edge (Yönlendirilmiş kenar)

z Sıralı node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı değildir.

z İlk node orijin ve ikinci node ise hedef olarak adlandırılır.

z Örnek: iki nokta arasındaki uçuş.

z Undirected edge (Yönlendirilmemiş kenar)

z Sırasız node çiftleriyle ifade edilir. (u, v) ile (v, u) aynı şeyi ifade ederler.

z Örnek: uçuş rotası z Yönlendirilmiş graf

z Bütün kenarları yönlendirilmiş graftır.

z Yönlendirilmemiş graf

z Hiçbir kenarı yönlendirilmemiş graftır.

Graflar (Terminoloji)

Komşu (Adjacent)

z Eğer (u, v)

∈ ∈

E ise u ve v node’ları komşudur.

v k

u w (u, v)

u ve v komşudur

v ve w komşu değildir

(4)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Terminoloji - devam)

Yol ve basit yol

z Bir yol v1den vkya kadar sıralı node’ları (v1, v2), (v2, v3), …, (vk-1, vk) kenarlarıyla birbirine bağlar.

z Bir basit yolda her bir node sadece bir kez bulunur.

v

1

v

2

v

4

v

3

v

5

- v

2,

v

3,

v

4,

v

2,

v

1

bir yoldur.

- v

2,

v

3,

v

4,

v

5

bir basit yoldur.

Graflar (Terminoloji - devam)

Cycle ve basit cycle

z Bir cycle bir yoldur ve başlama ve bitiş node’ları aynıdır.

z Bir basit cycle’da başlangıç ve bitiş node’ları hariç tüm node’lar sadece bir kez bulunur.

v

1

v

4

v

3

v

5

- v

2,

v

3,

v

4,

v

5 ,

v

3,

v

2

bir cycle’dır - v

2,

v

3,

v

4,

v

2

bir basit cycle’dır

v

2

(5)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Terminoloji - devam)

Bağlı ve bağlı olmayan graf

z Eğer bir graftaki tüm node’lar arasında en azından bir yol varsa bağlı graftır.

z Eğer bir grafta herhangi iki node arasında yol bulunmuyorsa bağlı olmayan graftır.

v

1

v

4

v

3

v

5

v

2

bağlı graf

Graflar (Terminoloji - devam)

Bağlı ve bağlı olmayan graf (devam)

v

1

v

4

v

3

v

5

v

2

v

7

v

6

v

8

v

9

bağlı olmayan graf

(6)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Terminoloji - devam)

Bağlı eleman (connected component)

z Eğer bir graf bağlı değilse, bağlı alt gruplara göre parçalanabilir.

Bu parçaların herbirine bağlı eleman denir.

v

1

v

4

v

3

v

5

v

2

v

7

v

6

v

8

v

9

Graflar (Terminoloji - devam)

Komple graf

z Eğer bir graftaki her iki node arasında bir kenar varsa komple graftır.

3 node ile komple graf 4 node ile komple graf

(7)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Terminoloji - devam)

Alt graf

z G (V, E) şeklinde gösterilen bir grafın alt grafı H(U, F) ise U

⊆ ⊆

V

ve F

⊆ ⊆

E olur.

v

1

v

4

v

3

v

5

v

2

G

v

4

v

3

v

5

v

2

H

Graflar (Terminoloji - devam)

Ağırlıklandırılmış graf

z Eğer G (V, E) şeklinde gösterilen bir grafta her E kenarına bir ağırlık değeri atanmış ise ağırlıklandırılmış graf olarak adlandırılır.

İzmir İstanbul 2000

1000 3500

Ankara

(8)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Terminoloji - devam)

Multigraf

z Multigraf iki node arasında birden fazla kenara sahip olan veya bir node’un kendi kendisini gösteren kenara sahip olan graftır.

Multiple edge Self edge

Graflar (Terminoloji - devam)

z a,b ve d kenarları V node’unun kenar bağlantılarıdır.

z X node’unun derecesi 5’ tir.

z h ve i çoklu (multiple) kenarlardır.

z j kendi kendisine döngüdür (self loop).

X U

V

W

Z

Y a

c

b

e d

f g

h

i

j

(9)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Terminoloji - devam)

Yönlendirilmiş graf (Directed graph - Digraph)

z Eğer G (V, E) şeklinde gösterilen bir grafta her E kenarı bir yöne (directed edge) sahipse G yönlendirilmiş graftır.

G

Directed edge

İzmir İstanbul 1000

2000 3500

Ankara

Graflar (Oluşturulması)

zz

Komşu matrisi (Adjacency matrix) Graf iki boyutlu matrisle gösterilir.

Graf iki boyutlu matrisle gösterilir.

z

z

Komşu listesi (Adjacency list)

Graph n elemanlı m tane bağlı listeyle Graph n elemanlı m tane bağlı listeyle gösterilir. n ilgili node’a komşu olan node gösterilir. n ilgili node’a komşu olan node

sayısını, m ise toplam node sayısını ifade eder.

sayısını, m ise toplam node sayısını ifade eder.

(10)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Oluşturulması-Komşu Matrisi)

z

Yönlendirilmiş graf için komşu matrisi

v

1

v

4

v

3

v

5

v

2

G 5 5 v v

55

0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 v v

44

4 4

0 0 1 1 0 0 1 1 0 0 v v

33

3 3

0 0 1 1 0 0 0 0 0 0 v v

22

2 2

0 0 0 0 0 0 1 1 0 0 v v

11

1 1

v v

55

v v

44

v v

33

v v

22

v v

11

5 5 4 4 3 3 2 2 1 1 Matris[i][j] = 1 if (v

i

, v

j

)∈E

0 if (v

i

, v

j

)∉E

Graflar (Oluşturulması-Komşu Matrisi)

z

Ağırlıklandırılmış ancak yönlendirilmemiş graf için komşu matrisi

v

1

v

4

v

3

v

5

v

2

G 5 5 v v

55

∞ ∞ ∞ ∞ 7 7 8 8 ∞ ∞ 8 8

∞ ∞ 3 3 4 4

∞ ∞ v v

44

4 4

7 7 3 3

∞ ∞ 2 2

∞ ∞ v v

33

3 3

∞ ∞ 4 4 2 2

∞ ∞ 5 5 v v

22

2 2

∞ ∞

∞ ∞

∞ ∞ 5 5

∞ ∞ v v

11

1 1

v v

55

v v

44

v v

33

v v

22

v v

11

5 5 4 4 3 3 2 2 1 1

Matris[i][j] = w(v

i

, v

j

) if (v

i

, v

j

)∈E or (v

j

, v

i

)∈E

∞ otherwise

5 2

3 7

8

4

(11)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Oluşturulması-Komşu Matrisi)

Örnek

1 2 3 1 2 3 1

1 0 0 1 0 0 1 2

2 0 1 0 0 1 0 3

3 1 1 0 1 1 0 1

3

2

2 3

1

4

1 2 3 4 1 2 3 4 1

1 0 1 1 0 0 1 1 0 2

2 1 0 0 0 1 0 0 0 3

3 1 0 0 0 1 0 0 0 4 4 0 0 0 0 0 0 0 0

Graflar (Oluşturulması-Komşu Listesi)

z

Yönlendirilmiş graf için komşu listesi

v

1

v

4

v

3

v

5

v

2

G

v v

44

→ → v v

33

→ → v v

55

5 5

v v

44

4 4

v v

44

→ → v v

22

→ → v v

33

3 3

v v

44

→ → v v

22

2 2

v v

22

→ →

v

v

11

1

1

(12)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Oluşturulması-Komşu Listesi)

z

Yönlendirilmiş ve ağırlıklandırılmış graf için komşu listesi

v

1

v

4

v

3

v

5

v

2

G

5 2

3 7

8 4

v v

44

(8) (8) v v

33

(3) (3) v v

44

(3) (3) v v

33

(2) (2)

→ →

→ →

→ →

v v

55

(8) (8) v v

55

(7) (7) v v

44

(4) (4)

→ → v v

33

(7) (7)

→ → v v

55

5 5

→ → v

v

22

(4) (4)

→ → v v

44

4 4

→ → v

v

22

(2) (2)

→ → v v

33

3 3

→ → v

v

11

(5) (5)

→ → v v

22

2 2

v v

22

(5) (5)

→ → v v

11

1 1

Graflar (Oluşturulması-Komşu Listesi) Örnek

1 Æ 1 Æ 3 3 2 Æ 2 Æ 2 2 3 Æ 3 Æ 1 Æ 1 Æ 2 2

1

3

2

2 3

1

4

1 Æ 1 Æ 2 Æ 2 Æ 3 3

2 Æ 2 Æ 1 1

3 Æ 3 Æ 1 1

4 4 Æ Æ

(13)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Komşu Matrisi-Komşu Listesi)

z

Avantajları dezavantajları Komşu matrisi

Komşu matrisi

z

z

Çok fazla alana ihtiyaç duyar. Çok fazla alana ihtiyaç duyar.

z

z

Daha az hafızaya ihtiyaç duyulması için sparse matris Daha az hafızaya ihtiyaç duyulması için sparse matris tekniklerinin kullanılması gerekir.

tekniklerinin kullanılması gerekir.

zz

Herhangi iki node’un komşu olup olmadığına çok kısa Herhangi iki node’un komşu olup olmadığına çok kısa sürede karar verilebilir.

sürede karar verilebilir.

Komşu listesi Komşu listesi

zz

Bir node’un tüm komşularına hızlı bir şekilde ulaşılır. Bir node’un tüm komşularına hızlı bir şekilde ulaşılır.

zz

Daha az alana ihtiyaç duyar. Daha az alana ihtiyaç duyar.

zz

Oluşturulması matrise göre daha zor olabilir. Oluşturulması matrise göre daha zor olabilir.

Graflar (Dolaşma - Traversal)

z

Depth first dolaşma

zBir v node’una gidildikten sonra v node’unun bir komşusu seçilir ve ziyaret edilir. Ardından onun bir

komşusu seçilir ve ard arda komşu seçimi yapılarak devam edilir. Komşu kalmadığında geri dönülür.

z

Breadth first dolaşma

zBir v node’una gidildikten sonra v node’unun sırasıyla tüm komşu node’larına gidilir ardından tüm komşu node’ların komşu node’larına gidilir.

(14)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama işlem adımları

1.Önce bir başlangıç node’u seçilir ve ziyaret edilir.

2.Seçilen node’un bir komşusu seçilir ve ziyaret edilir.

3.2.adım ziyaret edecek komşu kalmayıncaya kadar tekrar edilir.

4.Komşu kalmadığında tekrar geri dönülür ve önceki ziyaret edilmiş node’lar için adım 2 ve 3 tekrar edilir.

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

1.

s node’unu seç

2.

visit s

// örn. ekrana yaz

3.

for each edge <s, U>

// U komşu node

4.

if U is not visit

5.

DFS(G, U)

(15)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7

(16)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9

(17)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9 6

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9 6 2

(18)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9 6 2 5

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9 6 2 5

(19)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9

2 5 4

6

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9

2 5 4

1 6

(20)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0 1

2 4

5 3

6 7

8 9

0 3 7 8 9

2 5 4

1 6

Graflar (Dolaşma - Traversal)

z

Depth first arama

0

3 7 8 9

2 5 4

1 6

0 1

2 4

5 3

6 7

8 9

(21)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0

3 7 8 9

2 5 4

1 6

0 1

2 4

5 3

6 7

8 9

Graflar (Dolaşma - Traversal)

z

Depth first arama

0

3 7 8 9

2 5 4

1 6

0 1

2 4

5 3

6 7

8 9

(22)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Depth first arama

0

3 7 8 9

2 5 4

1 6

0 1

2 4

5 3

6 7

8 9

Graflar (Dolaşma - Traversal)

z

Breadth first arama işlem adımları

1.Breadth first arama ağaçlardaki level order aramaya benzer.

2.Seçilen node’un tüm komşuları sırayla seçilir ve ziyaret edilir.

3.Her komşu queue içerisine atılır.

4.Komşu kalmadığında Queue içerisindeki ilk node alınır ve 2.adıma gidilir.

(23)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

0

0

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

0

3 2 1

(24)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

68712

0

3 2 1

7 8 6

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

456871

0

3 2 1

7 8 6 4 5

(25)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

45687

0

3 2 1

7 8 6 4 5

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

0

3 2 1

7 8 6 4 5

(26)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

9456

0

3 2 1

7 8 6 4 5

9

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

9456

0

3 2 1

7 8 6 4 5

9

(27)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

945

0

3 2 1

7 8 6 4 5

9

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

0

3 2 1

7 8 6 4 5

9

(28)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

9

0

3 2 1

7 8 6 4 5

9

Graflar (Dolaşma - Traversal)

z

Breadth first arama

0 1

2 4

5 3

6 7

8 9

0

3 2 1

7 8 6 4 5

9

(29)

G. Ü. Bilgisayar Mühendisliği Bölümü

Graflar (Toplojik sıralama)

z

Topolojik sıralama

zToplojik sıralama bir graftaki tüm node’ların doğrusal sıralamasıdır.

zNode’lar arasında öncelik sırası gözönüne alınır.

zÖrnekteki grafta topolojik sıralama aşağıdaki gibi yapılabilir.

1- a, c, b, e, d 2- c, a, b, e, d

b d

c e a

a b c e d

Graflar Haftalık Ödev:

z

10 tane şehir için bir graf yapısı oluşturunuz. Her şehirden komşu şehirlere olan uzaklık kenar ağırlıkları olarak kullanılacaktır.

z

Herhangi bir şehirden başlayarak tüm şehirleri dolaşmak için gerekli olan algoritmayı depth first dolaşmayla yapınız.

10 1

2 4

5 3

6 7

9

200 90

200

95 80 75

110

100 125 230 220 160

50

Referanslar

Benzer Belgeler

(5) Pauthier'in şu eserlerine bakımz: La description de la Çhine. Quelques Inventions arch6ologlques.. Bu cihetleri göz önünde tutarak, ekonomik motörlü na- kil

Suriye Kamplarının bulunduğu iller de ki Yerel eğitim programlarının tamamlanmasının ardından Ġlki 2014 yılında Ankara‟da eğiticilere yönelik

[r]

VERGİ KESİNTİSİNE TABİ TUTULMAMIŞ VE İSTİSNAYA KONU OLMAYAN MENKUL VE GAYRİMENKUL SERMAYE İRATLARINDA BEYAN SINIRI .... VERGİ MUAFİYETİNE TABİ VAKIFLAR İÇİN ARANAN

Kütleleri m 1 =2 kg ve m 2 =1 kg olan iki cisim sürtünme katsayısı f=0,1 olan yatay düzlem üzerinde bulunmakta olup kütlesi m 3 =1 kg olan cisimden şekildeki gibi harekete

FESTİVALLER 40th İSTANBUL FİLM FESTIVALİ ULUSAL YARIŞMA (Temmuz, 2021) 25th TALINN BLACK NIGHTS FILM FESTİVALİ ANA YARIŞMA (Kasım, 2021- resmi duyuru henüz yapılmadı)...

(2) Birbirlerine aşağıdaki usullerden biri ile eklenmiş olan iki veya daha şok ÎLÎNMEKSÎZ BÎTÎG'- den ibaret dizme-koşma [ccmpound] cümle:. • Dizici dirkegiç

Aktarıcı için: kaynak cihazın HDMI çıkış portuna bağlanma yeri Alıcı için: görüntüleme cihazının HDMI giriş portuna bağlanma yeri 3 Aktarım Butonu