Soal Olimpiade Komputer SMA

0
Olimpiade Komputer SMA Tingkat Kabupaten
 Olimpiade Komputer SMA Tingkat Provinsi
 Olimpiade Komputer SMA Tingkat Nasional
22
Pak Dengklek ingin mengikuti kursus berternak bebek unggul. Kursus tersebut terdiri dari modul C1 s.d. C12, dan setiap modul membutuhkan 3 bulan. Urutan modul ditunjukkan pada graf sebagai berikut, dimana arah panah: C1-C2 berarti pak dengklek harus lulus C1 sebelum mengikuti C2. Pak Dengklek harus lulus C4 dan C13 sebelum mengikuti C14. Beberapa modul boleh diikuti secara paralel, pak Dengklek dapat melakukan sekaligus karena beliau sangat pandai.
Jika setiap modul membutuhkan 3 bulan, berapa lama minimum pak Dengklek dapat menyelesaikan kursusnya?
a. 9
b. 15
c. 21
d. 30
e. 42
Solusi : Breadth First Search (BFS)
Algoritma :
1. Buat sebuah antrian yang memuat nama kursus
2. Masukkan kursus yang harus diikuti pertama kali (kursus ini akan ditandai sebagai kursus yang sudah diikuti)
3. Untuk setiap kursus B yang dapat diikuti setelah menyelesaikan suatu kursus A dan kursus B tersebut belum diikuti, buang kursus A, masukkan kursus B ke dalam antrian
4. Tandai kursus B tadi sebagai kursus yang telah diikuti
5. Jika semua kursus sudah diikuti alias antriannya sudah kosong, berhenti. Jika antrian belum kosong, ulangi langkah ke-3

Waktu = 0 bulan, jika antrian terisi, waktu akan bertambah 3 bulan
Antrian : [ ] (kosong)
Kursus yang bisa diikuti Pak Dengklek adalah C1 dan C13
Antrian : [C1, C13], waktu = 3 bulan

- Kursus yang dapat diikuti setelah menyelesaikan C1 => C2, C3, C4
  Buang C1 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C13 => C4, C14
  Buang C13 dalam antrian
Antrian : [ ]
Masukkan C2, C3, C4, C14 dalam antrian
Antrian : [C2, C3, C4, C14], waktu = 6 bulan

- Kursus yang dapat diikuti setelah menyelesaikan C2 => C3
  Karena C3 sudah dipelajari, maka tidak usah dimasukkan
  Buang C2 dari antrian
- Kursus yang dapat diikuti setelah menyelesaikan C3 => C6, C7, C9, C10
  Buang C3 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C4 => C14
  Karena C14 sudah dipelajari, maka tidak usah dimasukkan
  Buang C4 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C14 => C5
  Buang C14 dalam antrian
Antrian : [ ]
Masukkan C5, C6, C7, C9, C10 ke dalam antrian
Antrian : [C5, C6, C7, C9, C10], waktu = 9 bulan

- Kursus yang dapat diikuti setelah menyelesaikan C5 => C8
  Buang C5 dari antrian
- Kursus yang dapat diikuti setelah menyelesaikan C6 => tidak ada
  Buang C6 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C7 => tidak ada
  Buang C7 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C9 => tidak ada
  Buang C9 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C10 => C11
  Buang C10 dalam antrian
Antrian : [ ]
Masukkan C8, C11 ke dalam antrian
Antrian : [C8, C11], waktu = 12 bulan

- Kursus yang dapat diikuti setelah menyelesaikan C8 => tidak ada
  Buang C8 dalam antrian
- Kursus yang dapat diikuti setelah menyelesaikan C11 => C12
  Buang C11 dalam antrian
Antrian : [ ]
Masukkan C12 dalam antrian
Antrian : [C12], waktu = 15 bulan

- Kursus yang dapat diikuti setelah menyelesaikan C12 => tidak ada
  Buang C12 dalam antrian
Antrian : [ ]
Semua kursus sudah diikuti dan algoritma berhenti

Jawab : 15 bulan
SUMBER COPY PASTE = Bhttp: //sma-olimpiade.blogspot.co.id/2014/06/kumpulan-soal-olimpiade-komputer-sma.html

Posting Komentar

0Komentar
Posting Komentar (0)
To Top