• Tidak ada hasil yang ditemukan

Pertemuan 11 Decrease and Conquer, BFS, DFS

N/A
N/A
Protected

Academic year: 2019

Membagikan "Pertemuan 11 Decrease and Conquer, BFS, DFS"

Copied!
63
0
0

Teks penuh

(1)

Design

and

Analysis

Algorithm

Pertemuan 11

(2)

Contents

Insertion and Selection Sort

2

Decrease and Conquer

31

DFS and BFS

33

Binary Search Tree

4

(3)

Decrease and Conquer

1.

Mengurangi permasalahan menjadi lebih kecil

pada permasalahan yang sama

2.

Selesaikan permasalahan yang lebih kecil

tersebut

3.

Kembangkan permasalahan yang lebih kecil

itu sehingga menyelesaikan permasalahan

sebenarnya

4.

Dapat dilakukan dengan dengan metode

top

down

atau

bottom up

(4)

Permasalahan eksponensial: Hitung x

n

Brute Force:

Divide and Conquer:

Decrease by one:

Decrease by

constant factor:

n-1 multiplications

(5)

Insertion sort

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

1 4 6 8 | 5

1 4 5 6 8

5

(6)

Pseudo code Insertion sort

(7)
(8)
(9)

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

= cn

2

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

= O(n

2

)

(10)

Selection Sort

Algoritma sorting

Sorting perbandingan pada element

Terbagi menjadi 2 :

Sorted list

Sisa himpunan yang belum tersorting

(11)

Selection sort

(12)
(13)

Misalkan tabel A berisi elemen-elemen berikut:

Langkah-langkah pengurutan dengan Selection

Sort:

(14)

Kompleksitas waktu algoritma:

Penyelesaian (seperti pada

Insertion Sort):

(15)

Depth-First Search (DFS)

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)

(16)

Pseudo code DFS

(17)

Example: DFS traversal of undirected graph

a b

e f

c d

g h

DFS traversal stack:

DFS traversal stack: DFS tree:DFS tree:

a b

Red edges are tree

edges and black edges are cross edges.

(18)

1

2

3

4

5

6

7

(19)

1

2

3

4

5

6

7

(20)

1

2

4

5

6

3

7

(21)

Notes on DFS

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

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

All steps are constant time.

(22)

Breadth-first search (BFS)

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)

(23)

Example of BFS traversal of undirected

graph

BFS traversal

BFS traversal

queue:

BFS tree:

BFS tree:

a b

Red edges are tree

edges and black edges

are cross edges.

(24)

Pseudo code BFS

(25)

Notes on BFS

Asumsi: setiap simpul dapat membangkitkan b buah

simpul baru.

Misalkan solusi ditemukan pada aras/level ke-d

Jumlah maksimum seluruh simpul:

1+b+b

2

+b

3

+...+b

d

=(b

d+1

–1)/(b–1)

T(n) = O(b

d

)

Kompleksitas ruang algoritma BFS = sama dengan

kompleksitas waktunya, karena semua simpul daun dari

pohon harus disimpan di dalam memori selama proses

pencarian.

(26)

Breadth First Search (grafik berarah)

s

2

5

4

7

8

3 6 9

(27)

Breadth First Search

Top of queue

2

1

Shortest path

from s

(28)

Breadth First Search

Top of queue

(29)

Breadth First Search

Top of queue

(30)

Breadth First Search

Top of queue

4

2

(31)

Breadth First Search

Top of queue

(32)

Breadth First Search

5 already discovered: don't enqueue

Undiscovered

Discovered

Finished Top of queue

(33)

Breadth First Search

Top of queue

(34)

Breadth First Search

Top of queue

(35)

Breadth First Search

Top of queue

(36)

Breadth First Search

Top of queue

(37)

Breadth First Search

Top of queue

(38)

Breadth First Search

Top of queue

(39)

Breadth First Search

Top of queue

(40)

Breadth First Search

Top of queue

(41)

Breadth First Search

Top of queue

(42)

Breadth First Search

Top of queue

(43)

Breadth First Search

Top of queue

(44)

Breadth First Search

Top of queue

(45)

Breadth First Search

Top of queue

(46)

Breadth First Search

Top of queue

(47)

Breadth First Search

Top of queue

(48)

Breadth First Search

Top of queue

(49)

Breadth First Search

Top of queue

(50)

Breadth First Search

Top of queue

(51)

Breadth First Search

Top of queue

(52)

Breadth First Search

Top of queue

(53)

Breadth First Search

Top of queue

(54)

Breadth First Search

Level Graph

(55)
(56)

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.

(57)

Binary Search Tree

Several algorithms on BST

requires recursive processing of

just one of its subtrees, e.g.,

Searching

Insertion of a new key

Finding the smallest (or the

largest) key

k

<k >k

(58)

Binary Search Tree

A binary search tree Not a binary search tree

(59)
(60)
(61)
(62)

Bagaimana

spider menjelajahi (surfing) web?

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.

(63)

Referensi

Dokumen terkait