Professional Documents
Culture Documents
Algoritma Analizi Hafta 11
Algoritma Analizi Hafta 11
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 ----- ----
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:
• 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ı
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 𝑛