Azhar MURZAEVA
ALGORİTMALAR
Öğretmen: Nurettin ŞENYER
Mayıs 2016
Çizge
veya Graf
, düğümler ve bu düğümleri birbirine bağlayan kenarlardan oluşan bir tür ağ yapısıdır. Örnek bir çizge:Minimum kapsayan ağaç bulmak için çeşitli algoritmalar vardır. Bunlardan en ünlü olan bazılar aşağıdakilerdir:
Bu algoritma 1930 yılında matematikçi Vojtech Jarnik tarafından bulunmuştur. Daha sonra bağımsız olarak 1957’de bilgisayar bilimcisi Robert C. Prim ve 1959’da Dijkstra tarafından tekrar bulunmuştur.
Kruskal algoritması Joseph Kruskal tarafından geliştirilmiş ve ilk kez 1956 yılında anlatılmıştır. Kruskal algoritması her seferinde en iyi kenarın seçilmesi esasına dayalıdır.
def kruskal(graph):
for vertice in graph['vertices']:
make_set(vertice)
minimum_spanning_tree = set()
edges = list(graph['edges'])
edges.sort()
#print edges
for edge in edges:
weight, vertice1, vertice2 = edge
if find(vertice1) != find(vertice2):
union(vertice1, vertice2)
minimum_spanning_tree.add(edge)
return sorted(minimum_spanning_tree)
Prim ve Kruskal Algoritmalarının ikisi de her zaman aynı uzunluktaki sonucu verecektir.
Bu algoritmalar minimum kapsayan ağaç oluştururken, genelde kenarları farklı sırayla seçmektedir.
Bazen ise farklı kenarları da seçebilirler. Örneğin, kenar maaliyetleri aynı olduğu zaman.
1.resim | 2.resim | 3.resim |
4.resim | 5.resim | 6.resim |
Minimum Kapsayan Ağaçlar | 1 |
---|---|
- | 2 |
- | 3 |
- | 4 |
- | 5 |
- | 6 |
- | 7 |
- | 8 |
- | 9 |
- | 10 |
- | 11 |
- | 12 |
- | 13 |
- | 14 |
- | 15 |
- | 16 |
- | 17 |
- | 18 |
- | 19 |
- | 20 |
- | 21 |
- | 22 |
- | 23 |
- | 24 |
- | 25 |
- | 26 |
- | 27 |
- | 28 |
- | 29 |
- | 30 |
- | 31 |
- | 32 |
- | 33 |
Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |