en küçük yol ağacı (minimum spanning tree)

12
1 En Küçük Yol Ağacı (Minimum Spanning Tree) Yol ağacı, bir graf üzerinde tüm düğümleri kapsayan ağaç şeklinde bir yoldur. Ağaç özelliği olduğu için kapalı çevrim(çember) içermez. Bir graf üzerinde birden çok yol ağacı olabilir. En az maliyetli olan en küçük yol ağacı (minimum spanning tree) olarak adlandırılır.

Upload: evelyn-savage

Post on 30-Dec-2015

82 views

Category:

Documents


1 download

DESCRIPTION

En Küçük Yol Ağacı (Minimum Spanning Tree). Yol ağacı, bir graf üzerinde tüm düğümleri kapsayan ağaç şeklinde bir yoldur. Ağaç özelliği olduğu için kapalı çevrim(çember) içermez. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: En Küçük Yol Ağacı  (Minimum Spanning Tree)

1

En Küçük Yol Ağacı (Minimum Spanning Tree)

• Yol ağacı, bir graf üzerinde tüm düğümleri kapsayan ağaç şeklinde bir yoldur.

– Ağaç özelliği olduğu için kapalı çevrim(çember) içermez.

• Bir graf üzerinde birden çok yol ağacı olabilir. En az maliyetli olan en küçük yol ağacı (minimum spanning tree) olarak adlandırılır.

Page 2: En Küçük Yol Ağacı  (Minimum Spanning Tree)

MSP - Örnek

2

A

B C

D E

3

79

2

3

6

A

B C

D E

3

7

2

3

A

B C

D E

3

2

3

6

A

B C

D E

3

9

2

6

15

14 20

Page 3: En Küçük Yol Ağacı  (Minimum Spanning Tree)

MST Hesaplama – Ağırlıksız Graf

• Graf ağırlıksızsa veya tüm kenarların ağırlıkları eşit ise MST nasıl bulunur?– BSF veya DSF çalıştırın oluşan ağaç MST’dir

3

A

B C

ED

BFS(A)

A

B CE

D

A

BC

ED

DFS(A)

Page 4: En Küçük Yol Ağacı  (Minimum Spanning Tree)

Algoritmalar• En küçük yol ağacını belirlemek için birçok

algoritma geliştirilmiştir.– Kruskal’ın Algoritması: Daha az maliyetli

kenarları tek tek değerlendirerek yol ağacını bulmaya çalışır. Ara işlemler birden çok ağaç oluşturabilir.

– Prim’in Algoritması: En az maliyetli kenardan başlayıp onun uçlarından en az maliyetle genişleyecek kenarın seçilmesine dayanır. Bir tane ağaç oluşur.

– Sollin’in Algoritması: Doğrudan paralel programlamaya yatkındır. Aynı anda birden çok ağaçla başlanır ve ilerleyen adımlarda ağaçlar birleşerek tek bir yol ağacına dönüşür.

4

Page 5: En Küçük Yol Ağacı  (Minimum Spanning Tree)

Greedy Yaklaşımı/Yöntemi• Dolaşma yapılırken bir sonraki düğümü

belirlemek için kullanılan bir karar verme/seçme yöntemidir.

• O andaki seçenekler içerisinden en iyi olarak gözükeni seçer.

• Bölgesel/yerel değerlendirmeler yapar. • Yerel optimum daima global optimum

anlamına gelmez dolayısıyla en iyi sonuca götürmeyebilir.

• Fakat bazı durumlarda en iyi sonuca götürür. (MST, en kısa yol alg. , Huffman coding)

5

Page 6: En Küçük Yol Ağacı  (Minimum Spanning Tree)

Kruskal’ın Algoritması• Graf üzerindeki düğümler, aralarında

bağlantı olmayan N tane bağımsız küme gibi düşünülür.

• Daha sonra bu kümeler tek tek maliyeti en az olan kenarlarla birleştirilir (çevrim oluşturmayacak şekilde ).

• Düğümler arasında bağlantı olan tek bir küme oluşturulmaya çalışılır.

• Küme birleştirme işleminde en az maliyetli olan kenardan başlanılır; daha sonra kalan kenarlar arasından en az maliyetli olanlar seçilir.

6

Page 7: En Küçük Yol Ağacı  (Minimum Spanning Tree)

Kruskal’ın Algoritması – Kaba Kod

7

Page 8: En Küçük Yol Ağacı  (Minimum Spanning Tree)

8

Kruskal’ın Algoritması: Örnek

a

b c

h g f

d

ei

4

8

914

10

42

711

8

1

6

2

7

(h, g) (i, c) (g, f) (a, b) (c, f) (i, g) (i, h)

(c, d) (a, h)

(b, c) (d, e) (e, f) (b, h)

Sıralı kenar listesi

(h, g) (i, c) (g, f) (a, b) (c, f) (i, g) (i, h)

(c, d) (a, h)

(b, c) (d, e) (e, f) (b, h)

(d, f)(d, f)

Page 9: En Küçük Yol Ağacı  (Minimum Spanning Tree)

Prim’in Algoritması• En küçük yol ağacını belirlemede

kullanılan diğer bir algoritmadır.– Greedy algoritmalarından biridir.

• Kruskal’ın algoritmasından tek farkı bir sonraki kenarı nasıl seçtiğidir.

9

Page 10: En Küçük Yol Ağacı  (Minimum Spanning Tree)

Prim’in Algoritması• Adım-1: Başlangıçta, herhangi bir noktayı

ağacı oluşturmaya başlamak için seç. • Adım-2: Oluşturulan ağaca eklemek için,

şu ana kadar oluşturulmuş ağaç üzerinden erişilebilen ve daha önceden ağaca katılmamış olan en küçük ağırlıklı kenarı seç.

• Adım-3: Eğer bu kenarın ağaca katılması, bir çember oluşmasına sebep olmuyorsa, ağaca ekle.

• Adım-4: Ağaçtaki kenar sayısı (N-1)'e ulaşana kadar ikinci adıma geri dön.

10

Page 11: En Küçük Yol Ağacı  (Minimum Spanning Tree)

11

Prim’in Algoritması

r

u

12

10

6

7

11

4

5

Başlangıçtaki Ağaç (A)

r

u

12

10

6

7

3

59

“u” eklendikten sonra ağaç

u

Page 12: En Küçük Yol Ağacı  (Minimum Spanning Tree)

12

Prim’in Algoritması - Örnek

4

8

914

10

42

711

8

1

6

2

7