• Tidak ada hasil yang ditemukan

Solusi UTS Stima. Alternatif 1 strategi:

N/A
N/A
Protected

Academic year: 2021

Membagikan "Solusi UTS Stima. Alternatif 1 strategi:"

Copied!
9
0
0

Teks penuh

(1)

Solusi UTS Stima

1. a. (Nilai 5) Representasikanlah gambar kota di atas menjadi sebuah graf, dengan simpul

merepresentasikan rumah, dan bobot sisi merepresentasikan jumlah paving block yang dibutuhkan. Jembatan dihitung sebagai satu paving block.

b. (Nilai 15) Jika diselesaikan dengan exhaustive search, jelaskan strateginya seperti apa (tidak perlu pseudo-code), lalu tentukanlah kompleksitas algoritmanya dalam notasi big O.

Persoalan ini adalah persoalan minimum spanning tree. Alternatif 1 strategi:

- enumerasi semua spanning tree berupa lintasan hamilton dgn cara membuat semua permutasi semua simpul (telah memenuhi syarat tidak siklik), terdapat (n-1)!

- evaluasi setiap spanning tree dengan menghitung bobot lintasan - Ambil spanning tree dengan bobot paling minimum

Kompleksitas: O(n.n!), n adalah jumlah simpul

Alternatif 2 strategi:

- enumerasi semua subset sisi, terdapat 2n, dengan n adalah jumlah sisi.

- evaluasi setiap subset yang memenuhi spanning tree (tidak siklik, melewati semua simpul) dengan menghitung bobot lintasan

- Ambil spanning tree dengan bobot paling minimum Kompleksitas: O(n.2n), n adalah jumlah sisi

A B C D E F G H I J 4 3 5 3 5 4 2 3 4 2 4 3 2 3 3 4 3 2 4

(2)

2. (Nilai 15) Jika diselesaikan dengan greedy, rancanglah strategi greedy terbaiknya, dan tentukanlah kompleksitas algoritmanya dalam notasi big O.

Alternatif 1: dgn menggunakan Kruskal:

1. Sort semua sisi berdasarkan jumlah paving block: BC(2), EH(2), FG(2), IJ(2), AD(3),…

2. Tambahkan sisi secara berurutan untuk membentuk pohon jika tidak membentuk siklik. Jika membentuk siklik, sisi diabaikan. Hal ini dilakukan sampai semua simpul sudah dicapai. Solusi optimum : BC(2)-EH(2)-FG(2)-IJ(2)-AD(3)-CE(3)-DF(3)-FI(3)-GH(3). Total bobot=23. Kompleksitas: O(|E|log|E|)

Alternatif 2: dgn menggunakan Prim:

Ambil simpul awal (misalnya A atau simpul dgn bobot terpendek), lalu bangun tree T secara greedy, dengan menambahkan sisi terpendek yang menghubungkan salah satu simpul yang telah terpilih dengan simpul yang belum terpilih.

Solusi optimum: A-D-F-G-H-E-C-B-I-J atau B-C-E-H-G-F-D-A-I-J. Total bobot=23. Kompleksitas: O(n2)

3. Jawaban untuk MergeSort (Nilai 7)

Banyaknya prosedur MergeSort yang dipanggil, tidak dinilai. Selama proses benar, maka mendapatkan nilai penuh.

Partisi yang dilakukan harus konsisten: ((i+j div 2) atau ((i+j div 2)-1)).

Jika mahasiswa menggunakan basis 2, maka harus menyertakan “pseudo code” untuk penanganan basis 2, karena basis 2 harus ada pemeriksaan nilai antara 2 elemen tersebut. Jika tidak ada “pseudo code” ketika menggunakan basis 2, nilai dikurangi 1.

(3)

Pemanggilan prosedur MergeSort: MergeSort (A,1,7) a. MergeSort (A,1,4) i. MergeSort(A,1,2) 1. MergeSort(A,1,1) 2. MergeSort(A,2,2) ii. MergeSort(A,3,4)) 1. MergeSort(A,3,3) 2. MergeSort(A,4,4) b. MergeSort(A,5,7) i. MergeSort(A,5,6) 1. MergeSort(A,5,5) 2. MergeSort(A,6,6) ii. MergeSort(A,7,7)

Jawaban untuk QuickSort (Nilai 8)

Banyaknya prosedur QuickSort yang dipanggil, tidak dinilai. Selama proses benar, maka mendapatkan nilai penuh.

Dalam kuliah diberikan 2 versi prosedur QuickSort, yaitu versi pivot disertakan dalam partisi (versi 1), dan versi pivot tidak disertakan dalam partisi (versi 2). Jika mahasiswa menggunakan versi “campur-campur”, harus menyertakan “pseudo code” agar jelas proses QuickSort yang dilakukan. Jika tidak, akan sulit diperiksa apakah prosedur QuickSort yang dilakukan konsisten atau tidak. Untuk kedua versi, swap dilakukan ketika:

- A[p] ≥ pivot; dan - A[q] ≤ pivot; dan - p < q;

dengan p adalah variabel yang bergerak dari kiri ke kanan, dan q adalah variabel yang bergerak dari kanan ke kiri. Setelah swap, p dimulai lagi dari p=p+1, dan q dimulai dari q=q-1.

Dalam prosedur QuickSort tidak ada “merge”, karena selesai melakukan partisi, array sudah dalam posisi terurut.

Versi 1, pivot masuk ke partisi, p dimulai dari elemen pertama.

p=1, q=7

Iterasi 1 2 3 4 5 6 7

E X A M P L E

1 P q

Tukar E di indeks 1 dengan E di indeks 7, A[p] ≥ pivot, dan A[q] ≤ pivot

Mulai lagi penelusuran dengan indeks p= p+1=2, q=q-1=6, belum dipartisi, kondisi larik setelah di iterasi:

E X A M P L E

p Q

Tukar X di indeks 2 dengan A di indeks 3, karena A[p] ≥ pivot, dan A[q] ≤ pivot, kondisi larik menjadi:

E A X M P L X

(4)

Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q Panggil prosedur (2) QuickSort(A,1,2) dan (3) QuickSort(A,3,7)

QuickSort(A,1,2)

2 E A

p q

Tukar E di indeks 1 dengan A di indeks 2, A[p] ≥ pivot, dan A[q] ≤ pivot Mulai lagi penelusuran dengan indeks p= p+1=2, q=q-1=1

Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q

Panggil prosedur (4) QuickSort(A,1,1) dan (5) QuickSort(A,2,2). Karena hanya satu elemen, tidak melakukan apapun pada pemanggilan dua prosedur tersebut.

Kondisi larik setelah pemanggilan QuickSort(A,1,2):

A E X M P L E

3 QuickSort(A,3,7)

X M P L E

p q

Tukar X di indeks 3 dengan E di indeks 7, karena A[p] ≥ pivot, dan A[q] ≤ pivot

Mulai lagi penelusuran dengan indeks p= p+1=4, q=q-1=6, belum dipartisi, kondisi larik setelah di iterasi:

E M P L X

Q p

Iterasi berhenti ketika p=7 (karena sudah indeks terakhir), dan q tetap di 6 karena A[q] ≤ pivot. Penukaran tidak dilakukan karena p > q, jadi partisi dilakukan pada q = 6

Panggil prosedur (6) QuickSort(A,3,6) dan (7) QuickSort(A,7,7). Karena prosedur QuickSort(A,7,7) hanya 1 elemen, maka sudah mencapai basis.

6 QuickSort(A,3,6)

E M P L

P q

Awal iterasi p berada pada indeks 3 dan q berada pada indeks 6. Indeks p tidak maju karena A[p] ≥ pivot, sedangkan q akan terus berkurang hingga sampai pada indeks 3, karena A[q] ≤ pivot. Kemudian ditukar elemen pada indeks p dan q, namun karena mengacu pada hal yang sama, maka tetap. Partisi dilakukan pada indeks q, dan memanggil prosedur (8) QuickSort(A,3,3) dan (9) QuickSort(A,4,6). Karena prosedur QuickSort(A,3,3) hanya terdiri atas 1 elemen maka sudah mencapai basis. 9 QuickSort(A,4,6)

M P L

p q

Tukar M di indeks 4 dengan L di indeks 6, karena A[p] ≥ pivot, dan A[q] ≤ pivot Mulai lagi penelusuran dengan indeks p= p+1=5, q=q-1=5.

Setelah penelusuran, p berhenti di indeks 5 karena A[p] ≥ pivot, dan q berhenti di indeks 4 karena A[q] ≤ pivot.

Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q.

Panggil prosedur (10) QuickSort(A,4,4) dan (11) QuickSort(A,5,6). Karena QuickSort(A,4,4) hanya satu elemen, maka sudah mencapai basis.

11 QuickSort(A,5,6)

P M

p q

Tukar P di indeks 5 dengan M di indeks 6, karena A[p] ≥ pivot, dan A[q] ≤ pivot Mulai lagi penelusuran dengan indeks p= p+1=6, q=q-1=5.

Karena p > q maka penelusuran dihentikan, proses pemisahan dilakukan pada indeks q.

Panggil prosedur (12) QuickSort(A,5,5) dan (13) QuickSort(A,6,6). Karena keduanya hanya satu elemen, maka sudah mencapai basis.

Kondisi setelah pemanggilan terakhir QuickSort adalah sebagai berikut.

(5)

Versi 2, pivot tidak termasuk partisi manapun, pemeriksaan p dimulai setelah elemen pertama

Iterasi 1 2 3 4 5 6 7

E X A M P L E

1 pivot p q

Tukar X di indeks 2 dengan E di indeks 7

Mulai lagi penelusuran dengan indeks p= p+1=3, q=q-1=6, belum dipartisi, kondisi larik:

E E A M P L X

pivot q p

Karena p>q maka partisi dilakukan di sini, swap pivot dengan posisi terakhir q (A[1] dengan A[3])

Panggil prosedur: QuickSort(A,E) QuickSort(MPLX) Posisi akhir pada tahap ini:

A E E M P L X

2 QuickSort(A, E)

A E

pivot pq

q bergerak ke kiri, p berhenti di indeks 2, sehingga p=2, q=1.

Karena p>q maka partisi dilakukan di sini, swap A[q] dengan pivot (A dengan A), panggil prosedur: QuickSort(E) 3 QuickSort(E) E Sudah basis 4 M P L X pivot p q

Tukar P di indeks 5 dengan L di indeks 6

Mulai lagi penelusuran dengan indeks p=5+1=6, q=6-1=5

Karena p>q maka partisi dilakukan di sini, swap A[4] dengan A[5] Panggil:

QuickSort(L) QuickSort(P,X)

Posisi akhir pada tahap ini:

L M P X 5 QuickSort(L) L Sudah basis 6 QuickSort(P,X) P X pivot pq q bergerak ke kiri, p berhenti di indeks 7, sehingga p=7, q=6. Karena p>q maka partisi dilakukan di sini, panggil prosedur: QuickSort(X)

7 QuickSort(X)

X Sudah basis

(6)

4. Jawaban untuk maximum sub-array (Terdapat sebuah larik A yang berisi bilangan bulat positif dan negatif sebagai berikut. {2, -4, 1, 9, -6, 7, -3}).

a. (Nilai 10)

o Bagi larik menjadi dua bagian dengan ukuran yang ‘relatif’ sama. o Cari nilai maksimum di antara ketiga nilai berikut ini:

 Maksimum jumlah upalarik dari bagian kiri (pemanggilan rekursif)  Maksimum jumlah upalartik bagian kanan (pemanggilan rekursif)

 Maksimum jumlah upalarik yang melewati bagian tengah larik (mengandung bagian kiri dan kanan), dengan cara:

Cari jumlah maksimum upalarik mulai dari elemen tengah ke kiri Cari jumlah maksimum upalarik mulai dari elemen tengah+1 ke kanan Kombinasikan keduanya dan jumlahkan hasilnya

b. (Nilai 5)

Kasus basis: terdiri atas 1 elemen, mengembalikan elemen itu sendiri.

Kasus rekurens: 2 kali pemanggilan prosedur dengan parameter setengahnya, ditambah waktu untuk mencari jumlah upalarik yang melewati bagian tengah (waktu linear).

>

+

=

=

1

,

)

2

/

(

2

1

,

)

(

n

cn

n

T

n

a

n

T

c. (Nilai 5)

Dari formula di butir (4b), diketahui nilai a = 2, b = 2, dan d = 1. Berdasarkan teorema master, karena ܽ = ܾௗ maka kompleksitas pendekatan Divide and Conquer untuk kasus (a) adalah: O(n log n)

5. Diketahui n = 9 (jumlah data)

s = Bilangan terbesar ke-5 = bilangan terkecil ke 9/2 = median

Partisi latrik dengan metode partisi di dalam algoritma Quicksort varian 2

13 9 18 6 8 11 15 7 12

↑p ↑q

Pertukarkan 18 ↔ 12, lalu pindai dari p+1 dan q-1

13 9 12 6 8 11 15 7 18

↑p ↑q

Pertukarkan 15 ↔ 7, lalu pindai dari p+1 dan q-1

13 9 12 6 8 11 7 15 18

↑q ↑p (p > q stop)

7 9 12 6 8 11 13 15 18

Karena s = 7 > 5 maka ambil larik bagian kiri

(7)

↑p ↑q

Pertukarkan 9 ↔ 8, lalu pindai dari p+1 dan q-1

7 6 12 9 8 11

↑q ↑p (p > q stop)

6 7 12 9 8 11

Karena s = 2 < 5 maka ambil larik bagian kanan

12 9 8 11

↑q

11 9 8 12

Karena s = 6 > 5 maka ambil larik bagian kiri

11 9 8

↑q

9 8 11

↑q

Karena s = 5 maka nilai terbesar ke-5 ditemukan, yaitu 11

6. BFS

(8)

Kemungkinan lain:

DFS:

(9)

Referensi

Dokumen terkait

setelah mendapatkan penjelasan mengenai penelitian tentang “Hubungan Pemberian ASI Eksklusif terhadap Kejadian Infeksi Saluran Pernapasan Akut (ISPA) pada Bayi

Sumber daya manusia merupakan faktor terpenting yang dapat menentukan berhasil atau tidaknya suatu proyek. Potensi setiap sumber daya manusia yang ada dalam proyek seharusnya

Para PNS lingkungan Kecamatan dan Kelurahan wajib apel pagi setiap hari senin di Halaman Kantor Kecamatan Kebayoran Baru, dan akan diberikan teguran kepada yang tidak ikut apel

Berdasarkan rumusan masalah yang telah dikemukakan, maka tujuan penelitian ini adalah untuk meningkatkan self efficacy siswa terhadap kelompok peminatan pada siswa

Oleh karena itu, penelitian ini bertujuan untuk mengisolasi pektin kulit buah pisang kepok, mempelajari pengaruh penambahan plasticizer gliserol terhadap

Altimetri sendiri adalah Radar (Radio Detection and Ranging) gelombang mikro yang dapat digunakan untuk mengukur jarak vertikal antara permukaan bumi dengan wahana antariksa

Atas dasar penelitian dan pemeriksaan lanjutan secara seksama terhadap berkas yang diterima Mahkamah Pelayaran dalam Berita Acara Pemeriksaan Pendahuluan (BAPP)

Pada prinsipnya sistem informasi eksekutif adalah sebuah sistem yang membantu eksekutif dalam mengambil keputusan, kecepatan dan ketepatan eksekutif dalam mengambil keputusan