Pertemuan 11 Decrease and Conquer, BFS, DFS

  Design and Analysis Algorithm Drs. Achmad Ridok M.Kom Imam Cholissodin, S.Si., M.Kom M. Ali Fauzi, S.Kom., M.Kom. Ratih Kartika Dewi, ST, M.Kom

Decrease and Conquer

  31 Insertion and Selection Sort

  2 DFS and BFS

  33 Binary Search Tree

  4 Mengurangi permasalahan menjadi lebih kecil 1. pada permasalahan yang sama

Selesaikan permasalahan yang lebih kecil

  2. tersebut Kembangkan permasalahan yang lebih kecil

  3.

itu sehingga menyelesaikan permasalahan

sebenarnya Dapat dilakukan dengan dengan metode top 4. down atau bottom up

  Permasalahan eksponensial: Hitung x n

   Brute Force:  Divide and Conquer:

   Decrease by one:  Decrease by constant factor: n-1 multiplications T(n) = 2*T(n/2) + 1

   = n-1 T(n) = T(n-1) + 1 = n-1 T(n) = T(n/a) + a-1 = (a-1) n = when a = 2 a log n

  2 log To sort array A[0..n-1], sort A[0..n-2] recursively and then insert A[n-1] in its proper place among the sorted A[0..n-2]

   Usually implemented bottom up (non- recursively) Example: Sort 6, 4, 1, 8, 5 6 | 4 1 8 5 4 6 | 1 8 5 Exercise : 1 4 6 | 8 5 1 4 6 8 | 5 1 4 5 6 8

  Kompleksitas waktu algoritma Insertion Sort: Penyelesaian: T(n) = cn + T(n – 1)

  = cn + { c (n – 1) + T(n – 2) } = cn + c(n – 1) + { c (n – 2) + T(n – 3) } = cn + c (n – 1) + c (n – 2) + {c(n – 3) + T(n – 4) } ⋅ ⋅ = ...

  = cn+c (n–1)+c(n–2)+c(n–3)+...+c2+T(1) ⋅ = c{ n + (n – 1) + (n – 2) + (n – 3) + ... + 2 } + a = c{ (n – 1)(n + 2)/2 } + a

  2 = cn /2+cn/2 +(a–c)

  2 = O(n )

   Algoritma sorting

   Sorting perbandingan pada element

   Terbagi menjadi 2 :

   Sorted list

   Sisa himpunan yang belum tersorting

  • Misalkan tabel A berisi elemen-elemen berikut:
  • Langkah-langkah pengurutan dengan Selection

  Sort:

   Kompleksitas waktu algoritma:

   Penyelesaian (seperti pada Insertion Sort):

   Mengunjungi vertex-vertex pada grafik dengan selalu bergerak dari vertex yang terakhir dikunjungi ke vertex yang belum dikunjungi, lakukan backtrack apabila tidak ada vertex tetangga yang belum dikunjungi.

   Rekursif atau menggunakan stack

   Vertex di-push ke stack ketika dicapai untuk pertama kalinya

  

Sebuah vertex di-pop off atau dilepas dari stack ketika

vertex tersebut merupakan vertex akhir (ketika tidak ada vertex tetangga yang belum dikunjungi)  “Redraws” atau gambar ulang grafik dalam bentuk

seperti pohon (dengan edges pohon dan back edges untuk

grafik tak berarah/undirected graph)

  a b c d e f g h

DFS traversal stack: DFS tree: DFS traversal stack: DFS tree:

  a ab abf

  1

  2

  6

  7 abfe a b c d abf ab abg abgc e f g h abgcd

  4

  3

  5

  8 abgcdh Red edges are tree abgcd edges and black edges are cross edges.

  2

  3

  4

  5

  6

  7

  8

  2

  3

  4

  5

  6

  7

  8

  2

  3

  4

  5

  6

  7

  8

  9

   Time complexity of DFS is O(|V|). Why?

   each edge (u, v) is explored exactly once,

   All steps are constant time.

   Mengunjungi vertex-vertex grafik dengan berpindah ke semua vertex tetangga dari vertex yang terakhir dikunjungi.

   BFS menggunakan queue  Mirip dengan level ke level dari pohon merentang

   “Redraws” atau gambar ulang grafik dalam bentuk

seperti pohon (dengan edges pohon dan back edges

untuk grafik tak berarah/undirected graph)

  graph a b c d e f g h

BFS tree: BFS tree: BFS traversal BFS traversal

  a queue: queue: bef efg

  1

  2

  6

  8 fg g a b c d ch hd e f g h d

  3

  4

  5

  7 Red edges are tree edges and black edges

   Asumsi: setiap simpul dapat membangkitkan b buah simpul baru.

   Misalkan solusi ditemukan pada aras/level ke-d

   Jumlah maksimum seluruh simpul:

  2 3 d d+1 1+b+b +b +...+b =(b –1)/(b–1) d

  T(n) = O(b ) Kompleksitas ruang algoritma BFS = sama dengan kompleksitas waktunya, karena semua simpul daun dari pohon harus disimpan di dalam memori selama proses pencarian. s

  2

  5

  4

  7

  8

  3

  6

  9 s

  2

  5

  4

  7

  8

  3

  6

  9 Undiscovered Discovered Queue: s

  Top of queue

  2

  path from s

  1

  2

  4

  8

  s

  5

  7

  3

  3

  6

  9

  Queue: s 2 Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: s 2 3

  5

  1

  1

  Discovered Top of queue s

  5

  7

  8

  3

  6

  9 Queue: s 2 3 5

  1

  1

  Discovered Top of queue

  4

  2

  1

  2

  2

  4

  4

  8

  s

  5

  7

  1

  3

  6

  9

  Queue: 2 3 5 Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 2 3 5 4

  1

  1

  1

  2

  5 already discovered: don't enqueue Undiscovered

  Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 2 3 5 4

  1

  1

  1

  2 Undiscovered

  Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 3 5 4

  1

  1

  1

  2 Undiscovered

  Discovered Top of queue

  1

  2

  2

  4

  8

  s

  5

  7

  1

  3

  6

  6

  9

  1

  2 Undiscovered

  Queue: 3 5 4 Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 3 5 4 6

  1

  1

  1

  2

  2 Undiscovered

  Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 5 4 6

  1

  1

  1

  2

  2 Undiscovered

  Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 5 4 6

  1

  1

  1

  2

  2 Undiscovered

  Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 4 6

  1

  1

  1

  2

  2 Undiscovered

  Discovered Top of queue

  1

  2

  3

  2

  4

  8 s

  8

  5

  7

  1

  3

  6

  9

  1

  2 Undiscovered

  Queue: 4 6 Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Queue: 4 6 8

  1

  1

  1

  2

  2

  3 Undiscovered

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  7

  3

  2

  2

  1

  1

  5

  9 Queue: 6 8

  6

  3

  8

  7

  4

  Discovered Top of queue

  1

  2

  3

  2

  4 8 s

  5

  7

  1

  3

  3

  6

  9

  9

  3

  1

  2 Undiscovered

  Queue: 6 8 7 Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 6 8 7 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 8 7 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 7 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 7 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 7 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 7 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue: 9

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  1

  3 Undiscovered

  3

  3

  2

  2

  1

  1

  5

  9 Queue:

  6

  3

  8

  7

  4

  Discovered Top of queue s

  2

  5

  4

  7

  8

  3

  6

  9 Level Graph

  1

  1

  1

  2

  2

  3

  3

  3

   Latihan: Gunakan algoritma BFS dan DFS untuk

menemukan pohon merentang (spanning tree) dari graf

G di bawah ini jika traversalnya dimulai dari simpul k.

  Dalam menjawab soal ini, perlihatkan traversal BFS/DFS sebagai pohon berakar dengan e sebagai akarnya. Several algorithms on BST requires recursive processing of k just one of its subtrees, e.g.,

   Searching

   Insertion of a new key

   <k >k Finding the smallest (or the largest) key

  A binary search tree Not a binary search tree

   Halaman web dimodelkan sebagai graf berarah

   Simpul menyatakan halaman web (web page)

   Sisi menyatakan link ke halaman web  Bagaimana teknik menjelajahi web? Secara DFS atau BFS

   Dimulai dari web page awal, lalu setiap link ditelusuri secara DFS sampai setiap web page tidak mengandung link.

   Pada setiap halaman web, informasi di

dalamnya dianalisis dan disimpan di dalam basis

data index.

  Click to edit subtitle style