• Tidak ada hasil yang ditemukan

Latihan Soal OSN Informatika: Logika, Algoritma, dan Jaringan Transportasi

N/A
N/A
Marubat Sitorus

Academic year: 2025

Membagikan "Latihan Soal OSN Informatika: Logika, Algoritma, dan Jaringan Transportasi"

Copied!
10
0
0

Teks penuh

(1)

LATIHAN SOAL OSN Informatika LOGIKA - ALGORITMA-

Soal 1: (Tingkat Mudah - Mirip dengan soal logika dan dasar pemrograman)

Judul: Sandi Kotak

Deskripsi: Diberikan sebuah kotak berukuran 2x2 yang berisi huruf- huruf sebagai berikut:

A B C D

Sebuah pesan dienkripsi dengan mengganti setiap huruf dengan dua digit angka berdasarkan posisinya dalam kotak. Huruf 'A' diganti

dengan '11', 'B' dengan '12', 'C' dengan '21', dan 'D' dengan '22'.

Diberikan sebuah pesan terenkripsi: 21121122. Deskripsikan pesan tersebut.

Soal 2: (Tingkat Menengah - Mirip dengan soal algoritma dasar dan struktur data)

Judul: Jumlah Terbesar Subarray Kontinu

Deskripsi: Diberikan sebuah array (daftar) bilangan bulat, misalnya [-2, 1, -3, 4, -1, 2, 1, -5, 4]. Tugas Anda adalah menemukan jumlah maksimum dari subarray (bagian array yang berurutan) mana pun.

Contoh: Untuk array di atas, subarray [4, -1, 2, 1] memiliki jumlah terbesar, yaitu 6.

Soal 3: (Tingkat Sulit - Mirip dengan soal algoritma lanjut dan pemodelan)

Judul: Jaringan Transportasi

Deskripsi: Sebuah kota memiliki sejumlah persimpangan jalan yang terhubung oleh jalan satu arah dengan kapasitas tertentu. Anda

diberikan informasi tentang persimpangan dan jalan (beserta

kapasitasnya). Anda juga diberikan sebuah sumber (awal) dan sebuah

(2)

tujuan (akhir). Tugas Anda adalah menentukan jumlah maksimum unit barang yang dapat dikirimkan dari sumber ke tujuan melalui jaringan jalan tersebut tanpa melebihi kapasitas jalan mana pun.

Contoh:

Misalkan ada 4 persimpangan (1, 2, 3, 4). Sumber adalah 1 dan tujuan adalah 4. Jalan-jalan dan kapasitasnya adalah:

● 1 -> 2 (kapasitas 10)

● 1 -> 3 (kapasitas 5)

● 2 -> 3 (kapasitas 2)

● 2 -> 4 (kapasitas 8)

● 3 -> 4 (kapasitas 7)

Berapa jumlah maksimum barang yang dapat dikirim dari 1 ke 4?

(3)

Pembahasan 1:

Soal ini menguji kemampuan dasar dalam memahami pola dan

melakukan pemetaan sederhana. Untuk mendekripsinya, kita tinggal memecah kode menjadi pasangan dua digit dan melihat huruf yang sesuai:

21 -> C

12 -> B

11 -> A

22 -> D

Jadi, pesan terdekripsi adalah "CBAD".

Pembahasan 2:

Soal ini menguji pemahaman tentang subarray dan kemampuan untuk merancang algoritma untuk mencari nilai maksimum. Salah satu

pendekatan yang efisien adalah menggunakan algoritma Kadane.

Algoritma Kadane:

1. Inisialisasi dua variabel: max_so_far (untuk menyimpan jumlah maksimum yang ditemukan sejauh ini) dengan nilai negatif tak hingga, dan current_max (untuk menyimpan jumlah maksimum subarray yang berakhir pada posisi saat ini) dengan 0.

2. Iterasi melalui array:

○ Untuk setiap elemen, tambahkan elemen tersebut ke

current_max.

○ Jika current_max menjadi negatif, reset current_max menjadi 0 (karena subarray negatif tidak akan pernah menjadi

kontributor jumlah maksimum).

○ Perbarui max_so_far dengan nilai maksimum antara max_so_far

dan current_max.

Setelah iterasi selesai, max_so_far akan berisi jumlah maksimum dari subarray kontinu.

Pembahasan 3:

(4)

Soal ini adalah contoh klasik dari masalah aliran maksimum (Maximum Flow) dalam teori graf. Salah satu algoritma yang umum digunakan untuk menyelesaikan masalah ini adalah algoritma Ford-Fulkerson atau Edmonds-Karp.

Konsep Dasar:

● Kita memodelkan kota dan jalan sebagai sebuah graf berarah dengan kapasitas pada setiap edge (jalan).

● Tujuannya adalah mencari jalur dari sumber ke tujuan dengan sisa kapasitas terbesar dan mengirimkan aliran sebanyak mungkin melalui jalur tersebut.

● Kita perlu mempertimbangkan "residual graph" (graf sisa) yang menunjukkan kapasitas yang tersisa pada setiap edge dan juga

"backward edges" (edge balik) untuk memungkinkan kita

"membatalkan" aliran yang telah dikirim sebelumnya jika diperlukan untuk mencapai aliran maksimum.

Penyelesaian (konseptual):

1. Mulai dengan aliran nol di semua jalan.

2. Cari jalur augmentasi (jalur dari sumber ke tujuan di residual graph dengan sisa kapasitas positif).

3. Jika jalur augmentasi ditemukan, tentukan kapasitas minimum di sepanjang jalur tersebut (bottleneck).

4. Tingkatkan aliran di sepanjang jalur augmentasi sebesar kapasitas minimum tersebut.

5. Perbarui residual graph dengan mengurangi kapasitas forward edges dan menambahkan kapasitas backward edges sebesar aliran yang baru ditambahkan.

6. Ulangi langkah 2-5 sampai tidak ada lagi jalur augmentasi yang dapat ditemukan.

7. Jumlah total aliran yang telah dikirimkan adalah aliran maksimum.

(5)

PILIHAN GANDA

Soal-soal ini mencakup berbagai topik penting dalam OSN Informatika, termasuk struktur data, algoritma pengurutan dan pencarian, pohon biner, rekursi, analisis kompleksitas, teori graf dasar, algoritma greedy, pengkodean Huffman (konsep dasar), dan dynamic programming.

Model soal OSN biasanya menguji pemahaman konsep dan kemampuan aplikasi dalam konteks yang diberikan.

Soal 1:

Manakah dari pernyataan berikut yang PALING TEPAT

menggambarkan perbedaan mendasar antara struktur data stack dan queue?

A. Stack menggunakan prinsip FIFO (First-In, First-Out), sedangkan queue menggunakan prinsip LIFO (Last-In, First-Out).

B. Stack memungkinkan penambahan dan penghapusan elemen hanya dari satu ujung, sedangkan queue memungkinkan dari kedua ujung yang berbeda.

C. Stack secara efisien mendukung pencarian elemen di tengah, sedangkan queue tidak.

D. Stack umumnya diimplementasikan menggunakan array, sedangkan queue menggunakan linked list.

E. Stack menggunakan prinsip LIFO (Last-In, First-Out), sedangkan queue menggunakan prinsip FIFO (First-In, First-Out).

Soal 2:

Sebuah array A berisi elemen-elemen berikut: [5, 2, 8, 1, 9, 4]. Jika kita menerapkan algoritma Bubble Sort untuk mengurutkan array ini secara menaik, berapa kali operasi pertukaran (swap) akan terjadi pada iterasi (pass) pertama?

A. 1

(6)

B. 2 C. 3 D. 4 E. 5 Soal 3:

Diberikan sebuah pohon biner (binary tree). Proses penelusuran mana yang akan menghasilkan urutan node di mana setiap node dikunjungi setelah semua node di subtree kirinya dan sebelum semua node di subtree kanannya?

A. Pre-order B. In-order C. Post-order

D. Breadth-First Search E. Depth-First Search Soal 4:

Sebuah fungsi rekursif hitung(n) didefinisikan sebagai berikut:

hitung(n):

jika n <= 1, kembalikan 1

lainnya, kembalikan n * hitung(n-1)

Berapakah nilai dari hitung(4)? A. 4

(7)

B. 6 C. 10 D. 24 E. 120 Soal 5:

Algoritma Binary Search bekerja paling efisien pada struktur data yang bagaimana?

A. Linked list yang tidak terurut B. Array yang tidak terurut

C. Stack D. Queue

E. Array yang terurut Soal 6:

Dalam notasi Big O, manakah dari fungsi pertumbuhan berikut yang memiliki kompleksitas waktu TERKECIL seiring dengan bertambahnya ukuran input (n)?

A. O(n2) B. O(nlogn) C. O(2n) D. O(n) E. O(logn) Soal 7:

(8)

Diberikan sebuah graf tak berarah dengan 5 buah simpul. Berapakah jumlah maksimum sisi (edge) yang mungkin ada dalam graf tersebut?

A. 4 B. 5 C. 10 D. 15 E. 20 Soal 8:

Metode Greedy (rakus) dalam perancangan algoritma umumnya

digunakan untuk menyelesaikan masalah optimasi. Karakteristik utama dari metode ini adalah...

A. Membuat pilihan yang optimal secara global pada setiap langkah.

B. Mencoba semua kemungkinan solusi untuk menemukan yang terbaik.

C. Memecah masalah menjadi sub-masalah yang lebih kecil dan menyelesaikan masing-masing sub-masalah secara optimal.

D. Menggunakan pendekatan rekursif dengan memoization untuk menghindari perhitungan berulang.

E. Membuat pilihan yang tampak optimal pada saat itu tanpa mempertimbangkan konsekuensi jangka panjang.

Soal 9:

Sebuah pesan terdiri dari huruf-huruf: A, B, C, D dengan frekuensi kemunculan masing-masing: A=5, B=2, C=3, D=1. Jika kita ingin

mengkodekan pesan ini menggunakan kode Huffman, berapa panjang rata-rata bit per huruf yang mungkin dihasilkan?

(9)

A. Kurang dari 2 bit B. Tepat 2 bit

C. Lebih dari 2 bit tetapi kurang dari 3 bit D. Tepat 3 bit

E. Lebih dari 3 bit Soal 10:

Teknik pemrograman Dynamic Programming sering digunakan untuk menyelesaikan masalah yang memiliki karakteristik...

A. Sub-masalah yang independen dan tidak tumpang tindih.

B. Solusi optimal dapat ditemukan dengan hanya mempertimbangkan pilihan lokal.

C. Membutuhkan pencarian mendalam melalui semua kemungkinan solusi.

D. Memiliki optimal substructure dan overlapping subproblems.

E. Tidak ada batasan pada ukuran input.

Kunci Jawaban:

1. E 2. D 3. B 4. D 5. E 6. E 7. C 8. E 9. C

(10)

10. D

Referensi

Dokumen terkait