Anda di halaman 1dari 10

Algoritma Dan Struktur Data

Jobsheet 3

Oleh :

M.ARDLI AQDAMA (1941720124)

Kelas TI-1A / 15

PROGRAM STUDI D-IV TEKNIK INFORMATIKA


JURUSAN TEKNOLOGI INFORMASI
POLITEKNIK NEGERI MALANG
• Praktikum 1

Hasil :

Pertanyaan
1. Jelaskan mengenai base lain Algoritma Divide Conquer untuk melakukan pencarian
nilai faktorial!
Jawab : Base lain algoritma devide and conquer adalah pencarian nilai factiorial yang
didasarkan pada perhitungan rekursif dan membagi masalah menjadi beberapa bagian
2. Pada implementasi Algoritma Divide and Conquer Faktorial apakah lengkap terdiri
dari 3 tahapan divide, conquer, combine? Jelaskan masing-masing bagiannya pada kode
program!
Jawab :
Divide : Membagi masalah menjadi beberapa upa-masalah yang memiliki kemiripan
dengan masalah semula namun berukuran lebih kecil ( idealnya berukuran hampir sama ).
Conquer : Memecahkan ( menyelesaikan ) masing-masing upa-masalah ( secara rekursif
).
Combine : Menggabungkan solusi masing-masing upa-masalah sehingga membentuk
solusi masalah semula.

3. Apakah memungkinkan perulangan pada method faktorialBF() dirubah selain


menggunakan for?Buktikan!
Jawab : Bisa menggunakan while jika kita ingin mengubah

4. Tambahkan pegecekan waktu eksekusi kedua jenis method tersebut!


Jawab :
5. Buktikan dengan inputan elemen yang di atas 20 angka, apakah ada perbedaan waktu
eksekusi?
Jawab : Ada Perbedaan Saat elemen yang di input lebih dari angka 20 yang divide and
conquer lebih cepat dari pada brute force walaupun berselisih hanya 2 ms

• Praktikum 2

Hasil :

Pertanyaan
1. Jelaskan mengenai perbedaan 2 method yang dibuat yaitu PangkatBF() dan
PangkatDC()!

Jawab :
PangkatBF() : Method ini menggunakan Algoritma Brute Force untuk
memecahkan masalah dengan menggunakan proses perulangan. Pada proses ini
proses perhitungan / hasil didapat dari rumus (hasil = hasil *a);
PangkatDC(): Method ini menggunakan Algoritma Divide & Conquer untuk
memecahkan masalah dengan menggunakan proses pemilihan (if else). Pada
method ini proses perhitungan/hasil didapat dari rumus return (pangkatDC(a, n/2)
* pangkatDC(a, n/2) * a); untuk bilangan ganjil dan return (pangkatDC(a, n/2) *
pangkatDC(a, n/2)); untuk bilangan genap

2. Pada method PangkatDC() terdapat potongan program sebagai berikut: Jelaskan


arti potongan kode tersebut
if (n % 2 == 1)
return (pangkatDC(a, n / 2) * pangkatDC(a, n / 2) * a);
else
return (pangkatDC(a, n / 2) * pangkatDC(a, n / 2));

Jawab :
Potongan program di atas (dan method PangkatDC()) menjelaskan bahwa proses
perhitungan pangkat dilakukan dengan 2 perhitungan yang berbeda, dimana untuk nilai
ganjil method ini akan menghitung (pangkat DC(a, n/2)*pangkat DC(a,n/2)*a), dimana
pada tahap ini method akan menghitung (pangka DC(bilangan pokok, pangkat dibagi 2)
dikali dengan pangkatDC(bilangan pokok, pangkatt/2 dikali bilangan pokok), sehingga
untuk method ini proses perhitungannya jauh lebih singkat daripada pangkatBD(), missal
: Untuk pangkat pangkatyBF() = a1000000 itu artinya n = 1 juta, sehingga disini proses
akan berlangsung sebanyak 1 juta. Sedangkat pangkatDC()= 2log 1000000, sehingga
proses hanya berlangsung sebanyak 20 kali saja.

3. Apakah tahap combine sudah termasuk dalam kode tersebut?Tunjukkan!


Jawab :
if (n % 2 == 1)
return (pangkatDC(a, n / 2) * pangkatDC(a, n / 2) * a);
else
return (pangkatDC(a, n / 2) * pangkatDC(a, n / 2));

yang saya kasih tanda kotak merupakan source code yang menunjukan combine

4. Modifikasi kode program tersebut, anggap proses pengisian atribut dilakukan


dengan konstruktor.

Jawab :
Hasil :

5. Tambahkan menu agar salah satu method yang terpilih saja yang akan dijalankan!

Hasil :
• Praktikum 3

Hasil :

Pertanyaan
1. Berikan ilustrasi perbedaan perhitungan keuntungan dengan method TotalBF() ataupun TotalDC()

Jawab :
➢ Keuntungan TotalBF() adalah menghasilkan algoritma baku(standard) untuk tugas-tugas
komputasi seperti penjumlahan/perkalian n buah bilangan, menentukan elemen minuman
atau maksimum di dalam table(list)
➢ Keuntungan TotalDC() adalah memiliki efisiensi algoritma yang tinggi. Pendekatan divide
and counquer ini lebih efisiend alam menyelesaikan algoritma sorting.
2. Perhatikan output dari kedua jenis algoritma tersebut bisa jadi memiliki hasil berbeda di belakang
koma. Bagaimana membatasi output di belakang koma agar menjadi standar untuk kedua jenis
algoritma tersebut.

Jawab :

Cara membatasi output di belakang koma agar menjadi standar untuk kedua jenis
algoritma tersebut adalah mengganti tipe data yang digunakan dari int ke float atau
double

3.Mengapa terdapat formulasi return value berikut?Jelaskan!

Jawab :
Karena Itu Merupakan Proses combine pada method devide conquer

4. Kenapa dibutuhkan variable mid pada method TotalDC()?

Jawab :
Untuk membagi elemen menjadi beberapa bagian.
5.Program perhitungan keuntungan suatu perusahaan ini hanya untuk satu perusahaan saja. Bagaimana
cara menghitung sekaligus keuntungan beberapa bulan untuk beberapa perusahaan.(Setiap perusahaan
bisa saja memiliki jumlah bulan berbeda-beda)? Buktikan dengan program!

Jawab :
• Tugas 1 – 3

Hasil :

• Tugas 4 – 5
Hasil :

5. Bagaimana jika jumlah suara ganjil? apakah harus ada perbaikan program?jika iya,
perbaiki program
untuk studi kasus no 4. Jika jumlah suara yang terkumpul tidak selalu genap!
Jawaban : Apabila suara yang diperoleh ganjil, maka tidak perlu adanya perbaikan
program karena program sebelumnya sudah cukup dan hasilnya akan sama saja.

• Tugas 6

Anda mungkin juga menyukai