SlideShare a Scribd company logo
1 of 31
YZM 2116
Veri Yapıları
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
BÖLÜM - 11
Bu bölümde,
• Graph (Çizge - Graf)
• Terminoloji
• Çizge Kullanım Alanları
• Çizge Gösterimi
– Komşuluk Matrisi
– Komşuluk Listesi
• Çizge Üzerinde Gezinme
– DFS
– BFS
konusuna değinilecektir.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Çizge (Graph) Giriş
• Köşe (vertex) isimli düğümlerden ve kenar (edge) isimli
köşeleri birbirine bağlayan bağlantılardan oluşan veri
yapısıdır.
• Ağaçlar gibi çizgeler de doğrusal olmayan veri yapıları
grubuna girerler.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
D
E
A
C
F
B
düğüm
kenar
Çizge (Graph) Giriş (devam…)
• Bir G çizgesi G(V, E) şeklinde gösterilir:
a. V = V(G) Kümesi: Küme elemanları, G’nin düğümleri
(nodes), noktaları (points) veya köşeleri (vertices)
b. E = E(G) Kümesi: Küme elemanları G’nin kenarları
(edges) olarak adlandırılan sırasız düğüm ikililerini
içerir.
• Eğer bir e = {u, v} kenarı varsa, u ve v düğümlerinin
komşu (adjacent or neighbors) olduğu söylenir.
• Bu durumda, u ve v e’nin uç noktaları (endpoints)
olarak adlandırılır ve e’nin u ve v’yi bağladığı
söylenir.
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Çizge (Graph) Giriş (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Çizgeler, düzlemsel diyagramlarla gösterilir.
• V kümesindeki her v düğümü bir nokta (ya da küçük
çember) ile temsil edilir ve her e = {v1, v2} kenarı, v1 ve v2
uç noktalarını bağlayan bir çizgi ile gösterilir.
• Örnek:
V = {A, B, C, D}
E = {e1, e2, e3, e4, e5}
Yönlü ve Yönsüz Kenar
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Yönsüz Kenar (undirected edge):
Çizgi seklinde yönü belirtilmeyen
kenarlar yönsüz kenarlardır.
– Yönsüz kenarlarda (v1,v2) olması ile
(v2,v1) olması arasında fark yoktur.
• Yönlü Kenar (directed edge): Ok
şeklinde gösterilen kenarlar yönlü
kenarlardır.
Terminoloji
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
1. Komşu Köşeler (Adjacent): Aralarında
doğrudan bağlantı (kenar) bulunan i ve j
köşeleri komşudur. Diğer köşe çiftleri
komşu değildir.
2. Bağlantı (incident): Komsu i ve j köşeleri
arasındaki kenar (i, j) bağlantıdır.
3. Bir Kösenin Derecesi (degree): Bir
köşeye bağlı olan kenarların sayısıdır.
Soru1: Komşu olmayan köşeler hangileridir?
Soru2: 1’in derecesi kaçtır?
Terminoloji (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
4. Yönsüz Çizge (undirected graph): Tüm kenarları
yönsüz olan çizgeye yönsüz çizge denilir. Yönsüz
çizgede bir köşe çifti arasında en fazla bir kenar
olabilir.
5. Yönlü Çizge (directed graph, digraph): Tüm
kenarları yönlü olan çizgeye yönlü çizge adı
verilir. Yönlü çizgede bir köşe çifti arasında ters
yönlerde olmak üzere en fazla iki kenar olabilir.
6. Döngü (Loop): (i, i) seklinde gösterilen ve bir
köşeyi kendine bağlayan kenar.
Terminoloji (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Yönlü Çizge ve Döngü (Loop)
• G=(V, E)
• V={0,1,2,3,4}
• E={(0,1), (1,2), (0,3), (3,0), (2,2), (4,3)}
0
1
4
2
3
Terminoloji (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
7. Ağırlıklı (Weighted) Çizge: Çizge kenarları
üzerinde ağırlıkları olabilir. Eğer kenarlar üzerinde
ağırlıklar varsa bu tür çizgelere ağırlıklı/maliyetli
çizge (Weighted Graphs) denir. Ağırlık uygulamadan
uygulamaya değişir.
• Şehirler arasındaki uzaklık
• Routerler arası bant genişliği MANİSA
İZMİR BURSA
4
9
8
Yol (Path)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bir yol (path) düğümlerin bir sırasıdır (v0, v1, v2,… vk) öyle ki:
– 0 ≤ i < k için , {vi, vi+1} bir kenardır
– 0 ≤ i < k-1 için, vi ≠ vi+2
Yani, kenarlar {vi, vi+1} ≠ {vi+1, vi+2}
• Basit Yol (Simple Path): Tüm düğümlerin farklı olduğu yoldur.
• Daire (Cycle): Başlangıç ve bitiş düğümleri aynı olan basit yol.
• Uzunluk: Bir yol üzerindeki kenarların sayısının toplamıdır.
MANİSA
İZMİR BURSA
4
9
8
Basit Yol: MANİSA, İZMİR
Daire: MANİSA, İZMİR, BURSA, MANİSA
Çizge Kullanım Alanları
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bilgisayar ağlarında, elektriksel ve diğer ağların
analizinde,
• Kimyasal bileşiklerin moleküler yapılarının
araştırılmasında,
• Ulaşım ağlarında (kara, deniz ve havayolları),
• Planlama projelerinde,
• Sosyal alanlarda ve diğer pek çok alanda
kullanılmaktadır.
Çizge Kullanım Alanları (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Örnek (Generic)
• V = 6 kişi: John, Mary, Joe, Helen, Tom ve Paul,
sırasıyla yaşları: 12, 15, 12, 15, 13 ve 13.
• E ={(x, y) | Eğer x, y den daha genç ise}
John Joe
Mary Helen
Tom Paul
Çizge Kullanım Alanları (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Örnek (Uçuş sistemi)
• Her bir düğüm bir şehri gösterir
• Her bir kenar iki şehir arasındaki doğrudan uçuşu gösterir
• Doğrudan uçuşların sorgulanmasında cevap bir kenardır.
• Bir yere ulaşmak için “A’ dan B’ ye yol varmı” sorusu sorulur.
• Maliyetleri kenarlara bile ekleyebiliriz. (ağırlıklı), daha sonra
“A’dan B’ ye en ucuz yol hangisidir?” diye sorabiliriz.
Çizge Gösterimi
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• İki popüler gösterim bulunmaktadır. Her ikisi de
farklı yönlerden düğüm ve kenar kümelerini gösterir.
1. Komşuluk Matrisi: Çizgeyi göstermek için D
matrisi kullanılır.
2. Komşuluk Listesi: Bağlantılı listelerin bir boyutlu
dizisi kullanılır.
Komşuluk Matrisi
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Komşuluk Matrisi (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
2
4
3
5
1
7
6
9
8
0
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 1 0
1 0 0 1 1 0 0 0 1 0 1
2 0 1 0 0 1 0 0 0 1 0
3 0 1 0 0 1 1 0 0 0 0
4 0 0 1 1 0 0 0 0 0 0
5 0 0 0 1 0 0 1 0 0 0
6 0 0 0 0 0 1 0 1 0 0
7 0 1 0 0 0 0 1 0 0 0
8 1 0 1 0 0 0 0 0 0 1
9 0 1 0 0 0 0 0 0 1 0
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• İki boyutlu dizi ile gerçekleştirilebilir.
• Uygulaması basittir.
– Kenar yaratmak ve kaldırmak kolaydır.
• Hafızada fazla yer kaplar.
Komşuluk Matrisi (devam…)
Komşuluk Listesi
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Komşuluk Listesi (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
2
4
3
5
1
7
6
9
8
0 0
1
2
3
4
5
6
7
8
9
2 3 7 9
8
1 4 8
1 4 5
2 3
3 6
5 7
1 6
0 2 9
1 8
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Bağlı liste içeren dizi ile gerçekleştirimi yapılır.
• Uygulaması daha karmaşıktır.
• Hafıza kullanımı komşuluk matrisine göre daha
optimaldir.
Komşuluk Listesi (devam…)
Örnek – Yönlü Çizge
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Komşuluk Listesi
Komşuluk Matrisi
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
• Çizge üzerinde dolaşma; çizge düğümleri ve kenarları
üzerinde istenen bir işi yapacak veya bir problemi
çözecek biçimde hareket etmektir.
• Çizge üzerinde dolaşma yapan birçok yaklaşım ve
yöntem bulunmaktadır. En önemli iki tanesi aşağıdaki
gibidir:
– BFS (Breadth First Search) Yöntemi
– DFS (Depth First Search ) Yöntemi
Çizge Üzerinde Gezinme (Traverse)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Depth-First Search (DFS)
• Bir düğümden başla, düğümün bir kenarında o kenar
üzerinde gidilebilecek en uzak düğüme kadar sürdür.
• Geri gel (backtracking) ve diğer kenarı dene.
• Tüm düğümler gezilene kadar devam et.
• Genelde Stack kullanarak gerçekleştirim yapılır.
Breadth-First Search (BFS)
• Başlangıç düğümünden başla ve tüm komşuları ziyaret et.
• Daha sonra komşunun komşularını ziyaret et.
• Başlangıç düğümünden başlayıp dışa doğru dalga gibi
ilerle.
• Genelde Queue kullanarak gerçekleştirim yapılır.
Çizge Üzerinde Gezinme (devam…)
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
DFS Sözde Kod
DFS (Graph G) {
Stack S; Integer x, t;
while (G_ziyaret_edilmeyen_x_düğümüne_sahipse){
visit(x);
push(x,S);
while (S boş değilse){
t := peek(S);
if(t_ziyaret_edilmeyen_y_komşusuna_sahipse)
{
visit(y);
push(y,S);
}
else
pop(S);
}
}
}
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
DFS Gösterim
2
4
5
6
7
8
9
10
11
Çizge
0
1
4
2
5
6
7
8
9
11
10
Gezinme Ağacı
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
BFS Sözde Kod
BFS (Graph G) {
Queue Q;
Integer x, z, y;
while (G_ziyaret_edilmeyen_x_düğümüne_sahipse)
{
visit(x);
Insert(x,Q);
while (Q boş değilse){
z := Remove(Q);
for all (z nin tüm y komşuları için){
visit(y);
Insert(y,Q);
}
}
}
}
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
BFS Gösterim
0
2
4
5
6
7
8
9
10
11
Çizge
0
1 42
5
6 7 8
9
11
10
Gezinme Ağacı
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Çizge Üzerinde Gezinme (devam…)
Video Linki
• http://youtube.com/watch?v=zLZhSSXAwxI
İYİ ÇALIŞMALAR…
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
Yararlanılan Kaynaklar
• Ders Kitabı:
• Data Structures through JAVA, V.V.Muniswamy
• Yardımcı Okumalar:
• Data Structures and Algorithms in Java, Narashima
Karumanchi
• Data Structures, Algorithms and Applications in Java,
Sartaj Sahni
• Algorithms, Robert Sedgewick
Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları

More Related Content

What's hot

Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)Deniz KILINÇ
 
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı Ömer Özselçuk
 
Red black tree
Red black treeRed black tree
Red black treeuos lahore
 
Depth First Search ( DFS )
Depth First Search ( DFS )Depth First Search ( DFS )
Depth First Search ( DFS )Sazzad Hossain
 
Digital Search Tree
Digital Search TreeDigital Search Tree
Digital Search TreeSM. Aurnob
 
AVL tree ( Balanced Binary Search Tree)-Data Structure
AVL tree ( Balanced Binary Search Tree)-Data StructureAVL tree ( Balanced Binary Search Tree)-Data Structure
AVL tree ( Balanced Binary Search Tree)-Data StructureYaksh Jethva
 
non linear data structure -introduction of tree
non linear data structure -introduction of treenon linear data structure -introduction of tree
non linear data structure -introduction of treeSiddhi Viradiya
 
Algorithm presentation
Algorithm presentationAlgorithm presentation
Algorithm presentationqazi musa azam
 
Red black tree
Red black treeRed black tree
Red black treeRajendran
 
How to choose best containers in STL (C++)
How to choose best containers in STL (C++)How to choose best containers in STL (C++)
How to choose best containers in STL (C++)Sangharsh agarwal
 
Introduction to data structure
Introduction to data structureIntroduction to data structure
Introduction to data structureZaid Shabbir
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolThierry Badard
 

What's hot (20)

Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
Yzm 2116 - Bölüm 4 (Stack, Yığın, Yığıt)
 
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
Bağli li̇steler (Linked List) – Yiğinlar (Stack) - Kuyruklar Konu Anlatımı
 
Red black tree
Red black treeRed black tree
Red black tree
 
Depth First Search ( DFS )
Depth First Search ( DFS )Depth First Search ( DFS )
Depth First Search ( DFS )
 
Data Structure (Tree)
Data Structure (Tree)Data Structure (Tree)
Data Structure (Tree)
 
Digital Search Tree
Digital Search TreeDigital Search Tree
Digital Search Tree
 
AVL tree ( Balanced Binary Search Tree)-Data Structure
AVL tree ( Balanced Binary Search Tree)-Data StructureAVL tree ( Balanced Binary Search Tree)-Data Structure
AVL tree ( Balanced Binary Search Tree)-Data Structure
 
BINARY SEARCH TREE
BINARY SEARCH TREE BINARY SEARCH TREE
BINARY SEARCH TREE
 
non linear data structure -introduction of tree
non linear data structure -introduction of treenon linear data structure -introduction of tree
non linear data structure -introduction of tree
 
Algorithm presentation
Algorithm presentationAlgorithm presentation
Algorithm presentation
 
Sybase To Oracle Migration for Developers
Sybase To Oracle Migration for DevelopersSybase To Oracle Migration for Developers
Sybase To Oracle Migration for Developers
 
Red black tree
Red black treeRed black tree
Red black tree
 
Avl trees
Avl treesAvl trees
Avl trees
 
Takmicenje Dabar 2013 Zadaci Resenja Kategorija Dabar
Takmicenje Dabar 2013 Zadaci Resenja Kategorija DabarTakmicenje Dabar 2013 Zadaci Resenja Kategorija Dabar
Takmicenje Dabar 2013 Zadaci Resenja Kategorija Dabar
 
How to choose best containers in STL (C++)
How to choose best containers in STL (C++)How to choose best containers in STL (C++)
How to choose best containers in STL (C++)
 
Introduction to data structure
Introduction to data structureIntroduction to data structure
Introduction to data structure
 
Linklist
LinklistLinklist
Linklist
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL tool
 
Graphs bfs dfs
Graphs bfs dfsGraphs bfs dfs
Graphs bfs dfs
 
Quick sort
Quick sortQuick sort
Quick sort
 

Yzm 2116 Bölüm 11 - Graph - Çizge

  • 1. YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği
  • 2. BÖLÜM - 11 Bu bölümde, • Graph (Çizge - Graf) • Terminoloji • Çizge Kullanım Alanları • Çizge Gösterimi – Komşuluk Matrisi – Komşuluk Listesi • Çizge Üzerinde Gezinme – DFS – BFS konusuna değinilecektir. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 3. Çizge (Graph) Giriş • Köşe (vertex) isimli düğümlerden ve kenar (edge) isimli köşeleri birbirine bağlayan bağlantılardan oluşan veri yapısıdır. • Ağaçlar gibi çizgeler de doğrusal olmayan veri yapıları grubuna girerler. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları D E A C F B düğüm kenar
  • 4. Çizge (Graph) Giriş (devam…) • Bir G çizgesi G(V, E) şeklinde gösterilir: a. V = V(G) Kümesi: Küme elemanları, G’nin düğümleri (nodes), noktaları (points) veya köşeleri (vertices) b. E = E(G) Kümesi: Küme elemanları G’nin kenarları (edges) olarak adlandırılan sırasız düğüm ikililerini içerir. • Eğer bir e = {u, v} kenarı varsa, u ve v düğümlerinin komşu (adjacent or neighbors) olduğu söylenir. • Bu durumda, u ve v e’nin uç noktaları (endpoints) olarak adlandırılır ve e’nin u ve v’yi bağladığı söylenir. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 5. Çizge (Graph) Giriş (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Çizgeler, düzlemsel diyagramlarla gösterilir. • V kümesindeki her v düğümü bir nokta (ya da küçük çember) ile temsil edilir ve her e = {v1, v2} kenarı, v1 ve v2 uç noktalarını bağlayan bir çizgi ile gösterilir. • Örnek: V = {A, B, C, D} E = {e1, e2, e3, e4, e5}
  • 6. Yönlü ve Yönsüz Kenar Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Yönsüz Kenar (undirected edge): Çizgi seklinde yönü belirtilmeyen kenarlar yönsüz kenarlardır. – Yönsüz kenarlarda (v1,v2) olması ile (v2,v1) olması arasında fark yoktur. • Yönlü Kenar (directed edge): Ok şeklinde gösterilen kenarlar yönlü kenarlardır.
  • 7. Terminoloji Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 1. Komşu Köşeler (Adjacent): Aralarında doğrudan bağlantı (kenar) bulunan i ve j köşeleri komşudur. Diğer köşe çiftleri komşu değildir. 2. Bağlantı (incident): Komsu i ve j köşeleri arasındaki kenar (i, j) bağlantıdır. 3. Bir Kösenin Derecesi (degree): Bir köşeye bağlı olan kenarların sayısıdır. Soru1: Komşu olmayan köşeler hangileridir? Soru2: 1’in derecesi kaçtır?
  • 8. Terminoloji (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 4. Yönsüz Çizge (undirected graph): Tüm kenarları yönsüz olan çizgeye yönsüz çizge denilir. Yönsüz çizgede bir köşe çifti arasında en fazla bir kenar olabilir. 5. Yönlü Çizge (directed graph, digraph): Tüm kenarları yönlü olan çizgeye yönlü çizge adı verilir. Yönlü çizgede bir köşe çifti arasında ters yönlerde olmak üzere en fazla iki kenar olabilir. 6. Döngü (Loop): (i, i) seklinde gösterilen ve bir köşeyi kendine bağlayan kenar.
  • 9. Terminoloji (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Yönlü Çizge ve Döngü (Loop) • G=(V, E) • V={0,1,2,3,4} • E={(0,1), (1,2), (0,3), (3,0), (2,2), (4,3)} 0 1 4 2 3
  • 10. Terminoloji (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 7. Ağırlıklı (Weighted) Çizge: Çizge kenarları üzerinde ağırlıkları olabilir. Eğer kenarlar üzerinde ağırlıklar varsa bu tür çizgelere ağırlıklı/maliyetli çizge (Weighted Graphs) denir. Ağırlık uygulamadan uygulamaya değişir. • Şehirler arasındaki uzaklık • Routerler arası bant genişliği MANİSA İZMİR BURSA 4 9 8
  • 11. Yol (Path) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Bir yol (path) düğümlerin bir sırasıdır (v0, v1, v2,… vk) öyle ki: – 0 ≤ i < k için , {vi, vi+1} bir kenardır – 0 ≤ i < k-1 için, vi ≠ vi+2 Yani, kenarlar {vi, vi+1} ≠ {vi+1, vi+2} • Basit Yol (Simple Path): Tüm düğümlerin farklı olduğu yoldur. • Daire (Cycle): Başlangıç ve bitiş düğümleri aynı olan basit yol. • Uzunluk: Bir yol üzerindeki kenarların sayısının toplamıdır. MANİSA İZMİR BURSA 4 9 8 Basit Yol: MANİSA, İZMİR Daire: MANİSA, İZMİR, BURSA, MANİSA
  • 12. Çizge Kullanım Alanları Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Bilgisayar ağlarında, elektriksel ve diğer ağların analizinde, • Kimyasal bileşiklerin moleküler yapılarının araştırılmasında, • Ulaşım ağlarında (kara, deniz ve havayolları), • Planlama projelerinde, • Sosyal alanlarda ve diğer pek çok alanda kullanılmaktadır.
  • 13. Çizge Kullanım Alanları (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Örnek (Generic) • V = 6 kişi: John, Mary, Joe, Helen, Tom ve Paul, sırasıyla yaşları: 12, 15, 12, 15, 13 ve 13. • E ={(x, y) | Eğer x, y den daha genç ise} John Joe Mary Helen Tom Paul
  • 14. Çizge Kullanım Alanları (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Örnek (Uçuş sistemi) • Her bir düğüm bir şehri gösterir • Her bir kenar iki şehir arasındaki doğrudan uçuşu gösterir • Doğrudan uçuşların sorgulanmasında cevap bir kenardır. • Bir yere ulaşmak için “A’ dan B’ ye yol varmı” sorusu sorulur. • Maliyetleri kenarlara bile ekleyebiliriz. (ağırlıklı), daha sonra “A’dan B’ ye en ucuz yol hangisidir?” diye sorabiliriz.
  • 15. Çizge Gösterimi Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • İki popüler gösterim bulunmaktadır. Her ikisi de farklı yönlerden düğüm ve kenar kümelerini gösterir. 1. Komşuluk Matrisi: Çizgeyi göstermek için D matrisi kullanılır. 2. Komşuluk Listesi: Bağlantılı listelerin bir boyutlu dizisi kullanılır.
  • 16. Komşuluk Matrisi Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 17. Komşuluk Matrisi (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 2 4 3 5 1 7 6 9 8 0 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 2 0 1 0 0 1 0 0 0 1 0 3 0 1 0 0 1 1 0 0 0 0 4 0 0 1 1 0 0 0 0 0 0 5 0 0 0 1 0 0 1 0 0 0 6 0 0 0 0 0 1 0 1 0 0 7 0 1 0 0 0 0 1 0 0 0 8 1 0 1 0 0 0 0 0 0 1 9 0 1 0 0 0 0 0 0 1 0
  • 18. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • İki boyutlu dizi ile gerçekleştirilebilir. • Uygulaması basittir. – Kenar yaratmak ve kaldırmak kolaydır. • Hafızada fazla yer kaplar. Komşuluk Matrisi (devam…)
  • 19. Komşuluk Listesi Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 20. Komşuluk Listesi (devam…) Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları 2 4 3 5 1 7 6 9 8 0 0 1 2 3 4 5 6 7 8 9 2 3 7 9 8 1 4 8 1 4 5 2 3 3 6 5 7 1 6 0 2 9 1 8
  • 21. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Bağlı liste içeren dizi ile gerçekleştirimi yapılır. • Uygulaması daha karmaşıktır. • Hafıza kullanımı komşuluk matrisine göre daha optimaldir. Komşuluk Listesi (devam…)
  • 22. Örnek – Yönlü Çizge Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Komşuluk Listesi Komşuluk Matrisi
  • 23. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları • Çizge üzerinde dolaşma; çizge düğümleri ve kenarları üzerinde istenen bir işi yapacak veya bir problemi çözecek biçimde hareket etmektir. • Çizge üzerinde dolaşma yapan birçok yaklaşım ve yöntem bulunmaktadır. En önemli iki tanesi aşağıdaki gibidir: – BFS (Breadth First Search) Yöntemi – DFS (Depth First Search ) Yöntemi Çizge Üzerinde Gezinme (Traverse)
  • 24. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Depth-First Search (DFS) • Bir düğümden başla, düğümün bir kenarında o kenar üzerinde gidilebilecek en uzak düğüme kadar sürdür. • Geri gel (backtracking) ve diğer kenarı dene. • Tüm düğümler gezilene kadar devam et. • Genelde Stack kullanarak gerçekleştirim yapılır. Breadth-First Search (BFS) • Başlangıç düğümünden başla ve tüm komşuları ziyaret et. • Daha sonra komşunun komşularını ziyaret et. • Başlangıç düğümünden başlayıp dışa doğru dalga gibi ilerle. • Genelde Queue kullanarak gerçekleştirim yapılır. Çizge Üzerinde Gezinme (devam…)
  • 25. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları DFS Sözde Kod DFS (Graph G) { Stack S; Integer x, t; while (G_ziyaret_edilmeyen_x_düğümüne_sahipse){ visit(x); push(x,S); while (S boş değilse){ t := peek(S); if(t_ziyaret_edilmeyen_y_komşusuna_sahipse) { visit(y); push(y,S); } else pop(S); } } }
  • 26. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları DFS Gösterim 2 4 5 6 7 8 9 10 11 Çizge 0 1 4 2 5 6 7 8 9 11 10 Gezinme Ağacı
  • 27. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları BFS Sözde Kod BFS (Graph G) { Queue Q; Integer x, z, y; while (G_ziyaret_edilmeyen_x_düğümüne_sahipse) { visit(x); Insert(x,Q); while (Q boş değilse){ z := Remove(Q); for all (z nin tüm y komşuları için){ visit(y); Insert(y,Q); } } } }
  • 28. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları BFS Gösterim 0 2 4 5 6 7 8 9 10 11 Çizge 0 1 42 5 6 7 8 9 11 10 Gezinme Ağacı
  • 29. Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları Çizge Üzerinde Gezinme (devam…) Video Linki • http://youtube.com/watch?v=zLZhSSXAwxI
  • 30. İYİ ÇALIŞMALAR… Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları
  • 31. Yararlanılan Kaynaklar • Ders Kitabı: • Data Structures through JAVA, V.V.Muniswamy • Yardımcı Okumalar: • Data Structures and Algorithms in Java, Narashima Karumanchi • Data Structures, Algorithms and Applications in Java, Sartaj Sahni • Algorithms, Robert Sedgewick Celal Bayar Üniversitesi – YZM 2116 Veri Yapıları