You are on page 1of 28

Algoritma Analizi

Hafta-11
Breadth First Search
• BFS başlangıç düğümüne bitişik tüm düğümleri belirlenen sırayla
gezer
• Ardından iki kenar uzaklıktaki tüm düğümleri sırayla gezer.
• Başlangıç düğümüne bağlı tüm düğümler ziyaret edilene kadar
algoritma devam eder.
• BFS işlemlerini takip etmek için kuyruk yapısı uygundur.
• Başlangıç düğümü eklenerek kuyruk başlatılır
• Her bitişik komşuya geçildiğinde
• «Ziyaret edildi» (visited) diye işaretlenip kuyruğa eklenir.
• İlk eklenen düğüm ilk çıkar
Breadth First Search
• BFS de bir forest (orman) oluşturmak için de kullanışlıdır.
• İlk düğüm bir ormanın ilk ağacının köküdür.
• Ziyaret edilmemiş bir düğüme erişildiğinde, erişildiği düğüme çocuk(child)
olarak eklenir
• Düğümler arasındaki bir ayrıta «ağaç ayrıtı» (tree edge) denir.
• Bu ayrıtlar ormanı oluşturur.
• Algoritma bir BFS ormanında kendisinin ebeveyni ya da çocuğu olmayan bir
düğümle bağlantısı olan bir kenara da rastlayabilir. Buna Cross Edge (Çapraz
kenar) denir.
Breadth First Search
Breadth First Search
• BFS’nin etkinliği DFS gibidir.
• Graf yapısının gösterildiği veri yapısına göre değişir.
• Bitişiklik Matrisi iseθ(|V2|)
• Bitişiklik listesi ise θ(|V|+|E|)
• V ve E köşe(düğüm) ve kenar(ayrıt) sayısı
• DFS’den farklı olarak tek tip sıralama yapabilir.
• Kuyruk yapısının FIFO özelliği sebebiyle
• BFS de bir grafın bağlantılılığını ve çevrimselliğini kontrol etmek için
kullanışlıdır.
• Algoritma durduğunda tüm düğümler ziyaret edildiyse graf bağlantılıdır.
• Algoritmada bir geri ayrıt bulunduysa graf çevrimseldir.
Breadth First Search
A
Steps Push to queue Pop from queue Queue state Output
1 A (root) ---- A A
B
2 B, C A B, C B,C
C
3 F B C, F F
F
4 E,D C F, E, D E, D
E D
5 ----- F E, D -----

H 6 ----- E D ----
7 H D H H

J 8 J H J J
9 ----- J ----- -----

A,B,C,F,E,D,H,J
Breadth First Search
Steps Push to queue Pop from queue Queue state Output
1 A (root) ---- A A
2 B, C, D A B, C, D B, C, D
3 E, F B C, D, E, F E, F
4 ----- C D, E, F -------
5 ----- D E, F -----
6 ----- E F -----
7 ----- F ----- ----

• BFS Traversal order: A, B, C, D, E, F


Vertex Visited Neigbors[] Predecessor
Name

Breadth First Search A


B
False
False
B C
A D
A C False A D
D False B C E
C E False D F G
F False E GH
B
G False E F
H False F
D
H
G

E
BFS and DFS
Decrease-and-Conquer Algorithm
Azalt ve Fethet Algoritmaları
• Problemi daha küçük bir örneğine çevir:
✓ Küçük örneği çöz
✓ Çözümü asıl probleme genişlet

• 3 tipi vardır:

✓ Bir sabitle azalt (Genellikle 1)


✓ Eklemeli Sıralama (Insertion Sort)
✓ Topolojik Sıralama (Topological Sort)
✓ Permütasyon, alt küme oluşturma algoritmaları

✓ Sabit bir oranla azalt (Genellikle yarıya)


✓ İkili Arama (Binary Search)

✓ Değişken boyutla azalt


✓ Öklid algoritması
Bir Sabitle Azaltma
• an üstel problemi
• an=an-1.a ise
• F(n) = an problemi özyinelemeli olarak çözülebilir.
Sabit bir Oranla Azaltma

• an üstel problemi

• an=(an/2)2 ise
Değişken Oranla Azaltma
• Öklid’in EBOB algoritması
Insertion Sort

En kötü durum :
• Dizinin tersten sıralı olması
Insertion Sort
En iyi durum: Dizinin sıralı olması

Ortalama durum: Dağınık dizi


Topological Sort (Topolojik Sıralama)
• Topolojik Sıralama
• Önkoşul, gereklilik gibi kısıtlılıklar doğrultusunda yapılması gereken sıralama
• Yönlü Graflar-Directedgraph (Digraph)
• Bir düğümden diğer düğüme gidilen yön bellidir.
• Yönlü –Yönsüz Graf Farkı
• Yönlü Graf: Komşuluk matrisleri simetrik olmak zorunda değil.
• Yönsüz Graf: Bir ayrıtın sadece bir karşı düğümü vardır.
• Bir olayın bir diğerinden daha önce ya da sonra gerçekleşmesi durumuna sahip bir
çok gerçek dünya problemi yönlü graflarla modellenebilir.
• Okul – Ders Önkoşulları
• Olay düzenleme
• Program bağımlılıkları
• İşlemci talimatları
• Vd.
Topological Sort (Topolojik Sıralama)
• Bir grafın cyclic (çevrimsel) olup olmadığını nasıl anlarız?
• Tarjan’s Strongly Connected Components Algorithm, DFS, BFS
Topological Sort (Topolojik Sıralama)
• Bir öğrencinin alması gereken 5 ders var:
• Derslerin bazıları ön koşullu
• Bir dönemde sadece bir ders alabiliyor

Problem : Dersleri hangi sırayla almalı?


Topological Sort (Topolojik Sıralama)
Topological Sort (Topolojik Sıralama)
• Aşağıdaki Grafta bir topolojik sıralama var mı? Varsa topolojik sıramayı
yazınız.
Sabit Oranla Azaltma
• Genellikle logaritmik zamanlı ve etkin algoritmalar
• Azaltma oranı genellikle 2
• İkili Arama (Binary Search)
Binary Search (İkili Arama)
• Sıralı bir dizide K elemanının aranması
• Dizinin orta (m) elemanı seçilir
• K ile m karşılaştırılır
• K ile m eşitse bulunmuş olur
• Eşit değilse; K < m isi dizinin ilk yarısı
• K > m ise dizinin ikinci yarısı için işlem tekrar
Binary Search
K=70

iteration 2 l m r
iteration 3 lm r
Fake Coin Puzzle-Sahte para problemi
• Aynı görünüme sahip n tane bozuk para var.
• Herhangi bir terazi aracılığıyla iki farklı bozuk paranın ağırlıklarını
karşılaştırmak mümkün.
• Sahte olan bozuk para, gerçek bozuk paralardan daha hafif.
• Sahte bozuk parayı nasıl belirleyebiliriz?
Fake Coin Puzzle-Sahte para problemi
• The divide- into- two :
• n adet para iki parçaya bölünür
• Terazide tartılır
• Sahte para hafif olan taraftadır, diğer taraf atılır.
• Hafif olan taraf tekrar yaklaşık 2 parçaya bölünür.
• Bu işleme sahte parayı bulana kadar devam edilir.

• Zaman Verimliliği: ?
Fake Coin Puzzle-Sahte para problemi
• Yarıya bölünen her parça bir defa tartılır. +1,
• T(1)=0 eğer 1 tane paramız olsaydı hiç tartma işlemi yapmayacaktık. (Temel işlem=Tartma)
• Başlangıç koşulu (Initial Cond.)
T(n)=T(└n/2┘)+1 for n>1 T(1)=0
n=2k varsayalım k= log 2 𝑛 olur.
T(2k)=T(2k-1)+1
=T(2k-2)+1 +1
= T(2k-3)+1 +1 +1 0

=T(2k-i)+i initial cond. → 2k-i=1 → k-i =log 2 1→ k=i
=T(20)+k→ n=2k →0+log 2 𝑛
Fake Coin Puzzle- Sahte para problemi
• The divide- into- three :
• Üçe bölünen her parça bir defa tartılır. Neden ???? +1
• T(1)=0 eğer 1 tane paramız olsaydı hiç tartma işlemi yapmayacaktık.
• Başlangıç koşulu (Initial Cond.) T(1)=0
T(n)=T(└n/3┘)+1 for n>1 T(1)=0
n=3k varsayalım k= log 3 𝑛 olur.
T(3k)=T(3k-1)+1
=T(3k-2)+1 +1
=T(3k-3)+1 +1 +1 0

=T(3k-i)+i initial cond. → 3k-i=1 → k-i =log 3 1→ k=i
=T(30)+k→ n=3k →0+log 3 𝑛
Fake Coin Puzzle-Sahte para problemi
• The divide- into- ten :
• 10’a bölünen her parça birkaç defa tartılır. Neden ???? +5
• T(1)=0 eğer 1 tane paramız olsaydı hiç tartma işlemi yapmayacaktık.
• Başlangıç koşulu (Initial Cond.)
T(n)=T(└n/10┘)+5 for n>1 T(1)=0 n log3 n 5 log 10 n
n=10k varsayalım k= log10 𝑛 olur. 100 4,1918 10
T(10k)=T(10k-1)+5 10.000 8,38 20
=T(10k-2)+5 +5 1.000.000 12,5754 30
=T(10k-3)+5 +5 +5 0

=T(10k-i)+5.i initial cond. → 10k-i=1 → k-i =log10 1→ k=i
=T(100)+5.k→ n=10k →0+5.log10 𝑛

You might also like