KOMPUTER – PAKET 4
KOMPUTER – PAKET 4
Bagian Non-Algoritmik
Relasi Rekurens
Relasi rekursi adalah persamaan yang mendefinisikan keterhubungan suatu suku di barisan
bilangan, dimana suku selanjutnya adalah fungsi dari suku-suku sebelumnya.
Misalkan ai adalah suku ke i barisan, maka an dapat dituliskan sebagai fungsi dari a1, a2, a3,
…, an-1. Nilai suatu suku tidak akan bisa didapatkan tanpa mengetahui suku awalnya. Salah
satu contoh dari relasi rekursi adalah barisan Fibonacci.
Basis adalah suku-suku terkecil yang perlu diketahui untuk menyelesaikan setiap suku lain
yang lebih besar. Rekurens adalah
Barisan fibonacci :
F(1) = 1
F(2) = 1
F(3) = F(2) + F(1) = 2
F(4) = F(3) + F(2) = 3
F(5) = F(4) + F(3) = 5
F(6) = F(5) + F(4) = 8
F(7) = F(6) + F(5) = 13
...dst
Persoalan yang solusinya dapat dibagi ke dalam persoalan-persoalan yang sama namun lebih
kecil dapat kita modelkan ke dalam relasi rekursi.
Contoh :
Sebuah kontraktor diminta untuk merancang suatu gedung yang akan digosipkan akan
menjadi gedung tertinggi di dunia. Gedung tersebut diminta untuk dibangun dengan tinggi 10
meter. Anehnya, diperbolehkan untuk membuat tinggi lantai di gedung tersebut bermacam-
macam. Namun hanya terbatas pada tinggi 2, 3, dan 5 meter. Ada berapakah variasi gedung
yang dapat dibangun?
KOMPUTER – PAKET 4
Jawab :
Kita definisikan V(i) adalah banyaknya variasi pada gedung dengan ketinggian i.
Pertama-tama kita cari basis untuk barisan tersebut
V(0) = 0 (tidak ada variasi gedung yang dapat dibangun)
V(1) = 0 (tidak ada variasi gedung yang dapat dibangun)
V(2) = 1 (gedung dengan 1 lantai setinggi 2 meter)
V(3) = 1 (gedung dengan 1 lantai setinggi 2 meter)
V(4) = 1 (gedung dengan 2 lantai setinggi 2 meter+2 meter)
V(5) = 3 (terdapat 3 variasi gedung, yaitu satu gedung berisi satu lantai (5 meter), dan dua
gedung berisi 2 lantai (2+3 dan 3+2))
Jika lantai selanjutnya adalah 2 meter, maka sisa tinggi sekarang adalah T-2 meter.
Banyak variasi sisanya adalah V(T-2)
Jika lantai selanjutnya adalah 3 meter, maka sisa tinggi sekarang adalah T-3 meter.
Banyak variasi sisanya adalah V(T-3)
Jika lantai selanjutnya adalah 5 meter, maka sisa tinggi sekarang adalah T-5 meter.
Banyak variasi sisanya adalah V(T-5)
Banyaknya variasi gedung untuk tinggi T adalah jumlah dari banyaknya variasi gedung untuk
tinggi T-2, banyaknya variasi gedung untuk tinggi T-3, dan banyaknya variasi gedung untuk
tinggi T-5. Dari tiga kasus tersebut diperoleh relasi rekursi V(T) = V(T-2)+ V(T-3)+ V(T-5)
Contoh :
Ada berapakah banyaknya password biner 7 digit (hanya terdiri dari digit 0 atau 1) yang tidak
mengandung 2 digit nol bersebelahan (00) ?
Jawab :
Misalkan F(N) adalah banyaknya cara membuat password biner N-digit yang tidak
mengandung 2 digit nol bersebelahan.
F(1) = 2, yaitu 1 dan 0
F(2) = 3, yaitu 01, 10 dan 11
Untuk N>2 perhatikan bahwa kita dapat membagi ke dalam dua kasus :
1) Jika digit awalnya 1, maka akan tersisa N-1 digit yang masih bebas. Masalah ini
merupakan masalah awal tetapi untuk N-1 digit. Sehingga banyak variasi password
untuk kasus ini adalah F(N-1)
2) Jika digit awalnya 0, maka digit kedua pastilah 1 (jika digit kedua adalah 0, maka
akan ada dia nol bersebelahan) sehingga akan tersisa N-2 digit yang masih bebas.
Masalah ini merupakan masalah awal tetapi untuk N-1 digit. Sehingga banyak variasi
password untuk kasus ini adalah F(N-2)
3. Pak Dengklek membuat kandang baru untuk bebek‐bebeknya. Kandang baru ini luasnya
adalah 3 x N meter. Untuk menutupi seluruh permukaan lantai kandang baru tersebut, Pak
Dengklek sudah membeli sejumlah papan dengan ukuran 1 x 3 meter. Sayangnya Pak
Dengklek tidak memiliki gergaji, sehingga ia tidak dapat memotong papan‐papannya
seenak hati. Kini ia memikirkan bagaimana cara ia dapat menutupi semua permukaan
lantai dengan papan‐papan tersebut tanpa memotong satu papan pun dan tanpa ada dua
atau lebih papan bertumpuk. Dasar Pak Dengklek, ia tidak puas hanya dengan mengetahui
salah satu cara untuk menutup semua permukaan lantai, kini ia memikirkan berapa
banyak kemungkinan peletakan papan‐papan agar semua permukaan lantai tertutupi.
Berikut ini adalah tiga kemungkinan konfigurasi ubin untuk N=4
KOMPUTER – PAKET 4
4. Ada seekor katak yang ingin menyebrangi suatu sungai. Di sungai tersebut terdapat dua
jenis benda sungai, yaitu batu yang dapat ditempati katak, dan daun yang tidak dapat
ditempati katak. Seekor katak dapat melompat ke benda tepat di depannya atau dapat
melompatinya (dengan kata lain, menempati benda kedua yang ada di depannya). Berapa
banyak cara yang bisa ditempuh katak untuk menyebrangi sungai dengan selamat.
(dengan tidak menginjak daun) jika konfigurasi benda di sungai adalah sebagai berikut
(katak menyebrang dari kiri ke kanan)
A. 1
B. 3
C. 2
D. 6
E. 10
(OSK 2013)
5. Beberapa anak berbaris dalam satu barisan. Sang Guru memerintahkan mereka untuk
mengubah posisi barisan mereka, dengan aturan: setiap anak boleh memilih untuk tetap di
posisinya semula, atau bertukar dengan orang yang berdiri tepat di depan atau tepat di
belakangnya (apabila ada dan belum pernah bertukar). Jika ada 3 orang anak yang
berbaris, dengan urutan awal A, B, C, maka ada 3 kemungkinan hasil setelah perintah
Guru dijalankan, yaitu: tetap, berubah menjadi B,A,C, atau berubah menjadi A,C,B.
Berapa kemungkinan hasil yang mungkin apabila ada 15 anak yang berbaris?
A. 15
B. 30
C. 610
D. 987
E. 1021
(OSP 2012)
KOMPUTER – PAKET 4
6. Dengan menggunakan hanya simbol 0, 1 dan 2, kita ingin membentuk string sedemikian
rupa hingga selisih antara satu simbol dengan simbol di sebelahnya tidak lebih dari satu.
Sebagai contoh, kita dapat membentuk string 011221 dan 2211010, tetapi tidak boleh
membentuk string 102. Berapakah banyaknya string seperti ini yang panjangnya tepat 10
simbol?
A. 8119
B. 8229
C. 8339
D. 10000
E. 2312
(OSP 2012)
7. Di warung mbok Darmi terdapat 2 menu masakan padang, yaitu rendang dan cincang.
Selain itu terdapat juga 3 menu masakan sunda, yaitu nasi liwet, nasi tutug oncom dan
kupat tahu. Jika pak Dengklek tidak boleh makan nasi padang 2 hari berturut-turut, ada
berapa kemungkinan kombinsai menu masakann yang bisa disusun dalam 5 hari?
A. 810
B. 1773
C. 2583
D. 3125
E. 25
Dari satu tombol, kita hanya boleh menekan tombol yang tepat bersisian (kiri, kanan,
atas, bawah) dengan tombol tersebut pada kesempatan berikutnya. Berapakah
kemungkinan urutan penekanan tombol jika kita dapat menekan tombol kalkulator
maksimal tiga kali?
A. 10
B. 26
C. 74
D. 110
E. 200
(OSN 2010 sesi 1 dengan perubahan)
KOMPUTER – PAKET 4
Budi ingin bermain Loncat Berhadiah. Permainan dimainkan pada sebuah kotak
berukuran R x C petak. Petak kiri atas dinomori (1, 1) dan petak kanan bawah dinomori
(R, C). Pada setiap petak terdapat sebuah bilangan. Budi memulai permainan dengan
memilih salah satu petak pada kolom 1. Dari suatu petak (r, c), Budi harus berpindah ke
petak (r, c+1), (r+1, c+1), atau (r-1, c+1). Apabila Budi sudah berada pada kolom C,
permainan berakhir. Budi mendapat poin berupa jumlah seluruh bilangan yang terdapat
pada petak-petak yang dilalui Budi.
9. Berapa poin maksimum yang dapat diperoleh Budi pada kotak permainan di bawah ini?
A. 13
B. 14
C. 15
D. 16
E. 17
(OSP 2014)
10. Berapa poin maksimum yang dapat diperoleh Budi pada kotak permainan di bawah ini?
A. 37
B. 38
C. 39
D. 40
E. 41
(OSP 2014)
KOMPUTER – PAKET 4
Bagian Algoritmik
Rekursi
Secara umum, rekursi adalah sesuatu yang didefinisikan dari dirinya sendiri. Secara khusus di
dunia ilmu komputer, rekursi adalah metode pemecahan masalah dengan memper-kecil
permasalahan menjadi lebih kecil, lebih kecil, dan lebih kecil lagi hingga permasalahan
menjadi cukup kecil untuk diselesaikan secara trivial. Algoritma rekursi terdiri dari 2 bagian :
( ) {
( ) ( )
Aksi pada bagian if disebut sebagai basis, karena akan menjadi penghenti dari fungsi rekursi
tersebut, sedangkan aksi pada bagian else disebut sebagai rekurens.
Jika fungsi fibonacci di atas dipanggil dengan fib(5), maka yang terjadi adalah :
(Daerah dalam kotak menandakan bahwa kontrol program berpindah ke pemanggilan fungi
tersebut. Dan setelah nilai ditemukan, kontrol program kembali ke fungsi pemanggil.)
KOMPUTER – PAKET 4
Contoh :
function panggil1(x:longint):longint;
begin
if (x<3) then panggil1:=0
else panggil1:=panggil1(x-1)+2*panggil1(x-2)+3;
end;
Bila fungsi di atas dipanggil dengan panggil1(7), maka hasil keluarannya adalah:
A. 7
B. 28
C. 34
D. 63
E. 97
Jawab :
Kita tidak perlu menuliskan langkah-langkah rekursi sesuai dengan kontrol program. Kita
cukup hitung nilai dari panggil1() untuk parameter 1, lalu 2, lalu 3, dan seterusnya. Cara
seperti ini disebut sebagai bottom up.
panggil1(1) = 0
panggil1(2) = 0
panggil1(3) = panggil1(2) + 2.panggil1(1) + 3 = 3
panggil1(4) = panggil1(3) + 2.panggil1(2) + 3 = 6
panggil1(5) = panggil1(4) + 2.panggil1(3) + 3 = 15
panggil1(6) = panggil1(5) + 2.panggil1(4) + 3 = 30
panggil1(7) = panggil1(6) + 2.panggil1(5) + 3 = 63
Jawaban : D
KOMPUTER – PAKET 4
Berapa kalikah simbol '*' dituliskan jika procedure tersebut dipanggil dengan perintah
Star(6)?
A. 8
B. 6
C. 1
D. 13
E. 2
(OSK 2010)
procedure solve(X:integer);
begin
if (X>1) then
begin
hasil:=hasil+1;
solve(X div 2 + X mod 2);
end;
end;
begin
readln(N);
hasil:=0;
solve(N);
writeln(hasil);
end.
Bila diberi masukan bilangan 77, maka program akan memberikan keluaran …
A. 5
B. 6
C. 7
D. 8
E. 9
(OSP 2013 dengan perubahan)
A. 44
B. 47
C. 16
D. 14
E. 98
(OSK 2007)
1. Karena Bobbi sedang dalam perjalanan, maka Bobbi bukanlah ahli biologi, dokter
maupun ahli kimia (karena mereka sedang duduk bersebelahan). Sehingga Bobbi adalah
penulis.
Ket : terdapat kesalahan pada pilihan jawaban.
Jawaban : D
3. Dengan menggunakan tabel pemasangan dan membagi kasus, diperoleh yang berprofesi
sebagai pengarang adalah Riko
Jawaban : B
4. Karena pedagang V lebih dari pedagang I maupun II, sedangkan pedagang I lebih dari
pedagang III maupun IV, maka yang terbesar adalah pedagang V.
Jawaban : E
- Peringkat A lebih baik dari D, dan peringkat D lebih baik dari H. Selisih peringkat
A dan D sama dengan selisih peringkat D dan H
H<D<A
- Peringkat G lebih baik dari peringkat C
C<G
Jika selisih peringkat A dan D adalah 1, maka hanya ada satu kemungkinan, yaitu :
FCGEHDAB
Jika selisih peringkat A dan D adalah 2, maka hanya ada satu kemungkinan, yaitu :
FCHEDGA B
Jawaban : C
KOMPUTER – PAKET 4
_ S
__C
___
- E sedang tidur, sehingga dia duduk di sebelah jendela pada barisan paling
belakang
_ S _ S _ S
__C __C __C
E__ _E_ __E
Jawaban : B
10. Dari hasil penelusuran diperoleh yang berada di posisi depan, selain G adalah D
Jawaban : D
KOMPUTER – PAKET 4
13. Perhatikan bahwa prosedur esrever akan menukar dua buah variabel global (i, j) lalu
menulisnya dalam posisi terbalik. Outputnya adalah 100 2
Jawaban : B
14. Karena prosedur XYZ menerima variabel x dan y dengan passing by reference, maka
perubahan terhadap a dan b akan berpengaruh terhadap x dan y.
Dalam prosedur, nilai a dan b ditukar (mengakibatkan nilai x dan y tertukar), lalu
dilakukan aksi penambahan 10 terhadap x. Isi x di akhir prosedur adalah 15
Jawaban : C
15. Perhatikan bahwa prosedur swap(a, b, c) akan melakukan penukaran nilai-nilai dari (a
sampai b) dan (b+1 sampai c)
Array x setelah pemanggilan swap adalah (1, 5, 6, 2, 3, 4)
Jawaban : D
17. Idenya adalah menukarkan setengah bagian dari array, dengan setengah bagian lain.
Kemudian lakukan hal yang sama pada kedua setengah bagian tersebut secara rekursif.
Butuh minimal 17 kali pemanggilan swap :
Jawaban : B
18. Fungsi yyy akan menghasilkan nilai mutlak dari a (parameter fungsi).
Fungsi zzz akan menghasilkan penjumlahan nilai mutlak dari bilangann-bilangan dari x
sampai y (parameter fungsi).
KOMPUTER – PAKET 4
19. Karena nilai x lebih besar dari nilai y maka perulangan for tidak melakukan aksi apapun
Hasil pemanggilan fungsi zzz(10, 1) adalah 0
Jawaban : E
20. Perhatikan bahwa jika z bernilai positif, maka hitung(z) juga bernilai positif
Untuk suatu nilai z, program akan mencetak * sebanyak 1+2+3+…+z buah.
z yang harus dimasukkan adalah 5
Jawaban : C