Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
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ç
▪ 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
▪ 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
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
▪ 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.
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Ç
▪ 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Ç