7
Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ Web: http://ikucukkoc.baun.edu.tr Email: [email protected] 2017-2018 Güz Yarıyılı Balıkesir Üniversitesi Bilgisayar Mühendisliği Bölümü 4 BMM3101 PROGRAMLAMA DİLLERİ Arama Algoritması: Minimum Yayılan Ağ

BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ

Web: http://ikucukkoc.baun.edu.tr

Email: [email protected]

2017-2018 Güz YarıyılıBalıkesir Üniversitesi

Bilgisayar Mühendisliği Bölümü

4

BMM3101

PROGRAMLAMA DİLLERİArama Algoritması:

Minimum Yayılan Ağaç

Page 2: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

▪ Yandaki gibi bir şebeke diyagramı

verildiğini düşünelim.

▪ Minimum Yayılan Ağaç (ya da Kapsayan

Ağaç) probleminde amaç, bir döngü

oluşmayacak şekilde, tüm düğümlerin

birbirine bağlanmasını sağlamaktır.

Gözetilen performans kriteri, minimum

maliyet/mesafe dir.

▪ Dışarıda (başka bir düğüme bağlanmamış) düğüm kalmamalıdır.

▪ Bu bir "Arama (Searching) Problemi" dir.

20/10/2017BMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ

0 1 2

3 4

2 3

6 8 5 7

9

Page 3: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

▪ Prim algoritması, MST probleminin çözümü için geliştirilmiş bir algoritmadır.

▪ İşleyiş olarak, rastgele seçilen birdüğümden, en yakın (veya en az maliyetli) komşulukta bulunanlara bağlantı yapılması prensibine dayanmaktadır.

▪ Bağlantılar yapıldıkça, yeni komşuluklar açılacak ve algoritma bu şekilde aramayı sürdürecektir.

▪ Bir problemde n adet düğüm olduğu varsayılırsa, uygun çözüm oluşması için tam olarak n-1 adet bağlantı yapılmış olmalıdır.

20/10/2017BMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ

0 1 2

3 4

2 3

6 8 5 7

9

Örneğimizde, başlangıç düğümü olarak

"0" alındığını düşünürsek, bağlantı

yapılabilecek düğümler 1 veya 2

olacaktır. Bu iki düğümün 0’a olan

mesafeleri/maliyetleri dikkate alınırsa,

1 numaralı düğüm avantajlı

olduğundan, 0 numaralı düğüme

bağlanacaktır.

0 1 2

3 4

2 3

6 8 5 7

9

Page 4: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

20/10/2017BMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ

0 1 2

3 4

2 3

6 8 5 7

9

▪ 0 ve 1 numaralı düğümler birbirine

bağlandıktan sonra, artık bu iki düğümden

tüm komşularına yapılabilecek bağlantılar

(0-3, 1-2, 1-3, 1-4) aramaya dahil olacaktır.

▪ Bu bağlantılar arasında en kısa

mesafe/maliyet 1-2 bağlantısına ait

olduğundan, 2 numaralı düğüm 1 numaralı

düğüme aşağıdaki şekilde bağlanır:

0 1 2

3 4

2 3

6 8 5 7

9

Page 5: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

▪ Tüm komşuluklar bu şekilde

arandıktan sonra, minimum

yayılan ağaç yandaki gibi

oluşacaktır.

▪ Prim algoritması, MST

probleminin çözümünde en iyi

çözümü vermeyi garanti

etmektedir.

20/10/2017BMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ

0 1 2

3 4

2 3

6 5

Görüldüğü üzere, 5-1=4 adet bağlantı yapılmıştır ve

toplam maliyet/mesafe 2+3+5+6=16’dır.

Page 6: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

JAVA Kodlama

▪ Prim algoritması JAVA’da çok farklı şekillerde kodlanabilir. Örneğin aşağıda verilen

linkte bulunan kod, tanımlanan şebeke diyagramı için Prim algoritmasını çalıştırıp

en iyi çözümü vermektedir.

▪ Şebeke diyagramı iki boyutlu olarak, iki farklı şekilde tanımlanmaktadır:

▪ Kod içerisinde manuel olarak

▪ Kullanıcıdan diyagrama ait mesafe/maliyet matrisi verilerini tek tek konsoldan isteyerek

(bu durumda, diyagram üzerinde kaç adet düğüm olduğu bilgisi de kullanıcıdan ilk olarak

alınmalıdır!).

▪ Link: http://ikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-W6.rar

20/10/2017BMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ

Page 7: BMM3101 Programlama Dilleri - Ibrahim Küçükkoçikucukkoc.baun.edu.tr/lectures/BMM3101/BMM3101-S4.pdfBMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ 20/10/2017

▪ Prim algoritması haricinde, bu problemin çözümünde bir de Kruskal algoritması

kullanılmaktadır.

▪ ÖDEV: Aynı problem için Kruskal algoritmasını geliştiriniz.

20/10/2017BMM3101 Programlama Dilleri - Yrd. Doç. Dr. İbrahim KÜÇÜKKOÇ