Design and Analysis Algorithm

  Design and Analysis Algorithm Ahmad Afif Supianto, S.Si., M.Kom

Decrease and Conguer

  3 Insertion and Selection Sort

  1

  2 DFS and BFS

  3

  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

  

Decrease by a constant (Mengurangi secara

konstan atau tetap)

  

The size of a problem instance is reduced by

the same constant factor (usually two) on each iteration of the algorithm (dikurangi secara faktar konstan yang sama)

   A size reduction pattern varies from one iteration to another (Ukuran pengurangan

bervariasi dari satu iterasi ke iterasi lainnya).

   Decrease by a constant (usually by 1):  insertion sort  graph traversal algorithms (DFS and BFS)

   topological sorting  algorithms for generating permutations, subsets

   Decrease by a constant factor (usually by half)  binary search and bisection method

   exponentiation by squaring  multiplication à la russe

   Variable-size decrease

   Euclid’s algorithm  selection by partition  Nim-like games

  n Permasalahan eksponensial: Hitung x

   Brute Force: n-1 multiplications

   T(n) = 2*T(n/2) + 1 Divide and conquer:

   = n-1

   T(n) = T(n-1) + 1 = n-1 Decrease by one:

  T(n) = T(n/a) + a-1 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

  1 4 6 | 8 5

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

  • – 1) = cn + { c (n
  • – 1) + T(n – 2) }

  ⋅ = cn + c(n (n

  • – 1) + { c – 2) + T(n – 3) }

  ⋅ = cn + c (n (n

  • – 1) + c – 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

  • 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 

  a b c d e f g h

DFS traversal stack: DFS tree:

  a ab abf

  1

  2

  6

  7 abfe abf a b c d ab abg abgc

   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

  graph a b c d e f g h

BFS tree: BFS traversal queue:

  a bef efg

  1 fg

  2

  6

  8 g a b c d ch hd

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

   Misalkan solusi ditemukan pada aras ke-d

   Jumlah maksimum seluruh simpul: 1+b+b

  2

  3

  d =(b d+1

  • b
  • ...+b
    • –1)/(b–1) T(n) = O(b

  d ) Kompleksitas ruang algoritma BFS = sama dengan kompleksitas waktunya, karena semua simpul daun dari s

  2

  5

  4

  7

  8

  3

  6

  9

  2

  2

  4

  8 from s

  s

  5

  7

  3

  6

  9 Undiscovered

  1

  2

  4

  8

  s

  5

  7

  3

  3

  6

  9 s

  2

  5

  4

  7

  8

  3

  6

  9

  5

  1

  1 s

  5

  7

  8

  3

  6

  9

  1

  1

  4

  2

  1

  2

  2

  4

  4

  8

  s

  5

  7

  1

  3

  6

  9 s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  5 already discovered: don't enqueue Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2 Undiscovered

  1

  2

  2

  4

  8

  s

  5

  7

  1

  3

  6

  6

  9

  1

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2 Undiscovered

  1

  2

  3

  2

  4

  8 s

  8

  5

  7

  1

  3

  6

  9

  1

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  7

  3 Undiscovered

  1

  2

  3

  2

  4 8 s

  5

  7

  1

  3

  3

  6

  9

  9

  3

  1

  2 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered s

  2

  5

  4

  7

  8

  3

  6

  9

  1

  1

  1

  2

  2

  3

  3

  3 Undiscovered 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 e.

  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

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

  A binary search tree Not a binary search tree

   Find X: return a pointer to the node that has key X, or NULL if there is no such node BinaryNode * BinarySearchTree::Find(const float &x, BinaryNode *t) const { if (t == NULL) return NULL; else if (x < t->element) return Find(x, t->left); else if (t->element < x) return Find(x, t->right); else return t; // match }

  Algorithm BST(x, v) //Searches for node with key equal to v in BST rooted at node x if x = NIL return -1 else if v = K(x) return x else if v < K(x) return BST(left(x), v) else return BST(right(x), v) Efficiency worst case: C(n) = n

   Aplikasi DFS dan BFS

   Search Engine (google, yahoo, altavista).Komponen search engine:  Web Spider : program penjelajah web (web surfer)  Index: basisdata yang menyimpan kata-kata penting pada setiap halaman web

  

 Query: pencarian berdasarkan string yang dimasukkan oleh

pengguna (end- user)

  Secara periodik (setiap jam atau setiap hari), spider menjejalahi internet untuk mengunjungi halaman-

halaman web, mengambil kata-kata penting di dalam

   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

  Click to edit subtitle style