Jika Allah kami yang kami puja sanggup melepaskan kami, maka Ia akan melepaskan kami dari perapian yang menyala-nyala itu, dan dari dalam tanganmu, ya raja; tetapi seandainya tidak, hendaklah tuanku mengetahui, ya raja, bahwa kami tidak akan memuja dewa tuanku, dan tidak akan menyembah patung emas yang tuanku dirikan itu. (Daniel 3:17-18)

Rabu Wage, 8 September 2010
Home | Kontak Saya | Eureka! | ArenA | Bimbingan Tugas Akhir | Download | Links
Algoritma & Pemrograman 1 | Algoritma & Pemrograman 2 | Struktur Data | Teknik Kompilasi | Kecerdasan Buatan
KDD & Data Mining | Web Mining | E-Business | Systems Analysis and Design
 
 Search Engine
Manfaatkan Google untuk memperoleh sejumlah informasi yang Anda inginkan dalam hansmichael.com.
 
Kutipan
Kita telah menjadi produk dari suatu budaya yang tidak mengembangkan ketrampilan daya ingat. (Renungan Harian, 22 Oktober 2009)

Times Magazine
 
Tokoh Hari Ini
Blaise Pascal

Blaise Pascal lahir pada 19 Juni 1623 di Rouen, Perancis. Ia meninggal dunia pada tahun 1666 di Perancis. Pascal adalah ahli matematika, fisika, penulis prosa, dan dikenal sebagai salah satu filsuf Kristen abad pertengahan. Pascal menemukan mesin penjumlah yang mengatur penambahan carry antar digit dan segitiga Pascal yang memuat koefisien-koefisien deret binomial. Ia juga penemu roda gerobak sampai roda rolet. Pascal juga meletakkan dasar bagi teori modern probabilitas: hukum Pascal untuk Tekanan. Menariknya, walaupun ia ahli dalam berbagai bidang sains, pemikiran religiusnya sebagai filsuf Kristen menekankan doktrin yang lebih mengutamakan pengalaman dengan Tuhan lebih melalui hati daripada melalui nalar.

 
Berita Terakhir

Buat TTS Cuma Tiga Menit

Deskripsi Tugas VIII NLP

Download File Pelengkap Tugas AI

Tugas V - Tagset dan Grammar Bahasa Indonesia

Proyek II Web Mining - Versi 2.0

Proyek II Web Mining - Versi 1.0

Handout Presentasi Kuliah ARM III: Apriori.

Tugas 8 - Assignment Kuliah DM & KDD

Materi Kuliah Algoritma dan Pemrograman 1

Talita, DocSearch, KoranNorak

Materi UTS Data Mining dan KDD

Materi UTS Alpro1 & Web Mining

20 Points Quiz 1 Alpro 1

File-file Deskripsi Tugas

Penyerahan Laporan Assignment 2 Web Mining

Web Mining

Materi UAS Web Mining Semester Genap 2006/2007

Daftar Metode yang TIDAK DAPAT Dipakai

Download File Kuliah Kecerdasan Buatan

Penambahan Soal Algoritma dan Pemrograman 1

Nilai Kuliah Algoritma dan Pemrograman 1 STTS

Pertama, Situs Tanya Jawab Alkitab

Materi UTS Algoritma 1 dan Data Mining-KDD

Turbo Pascal menjadi Software Antik

Rekayasa Perangkat Lunak

Extended Abstract Tugas Akhir

Life is Beautiful?

Eureka! dan Arena

Konfirmasi Materi Proyek II yang Disetujui

Penanganan Trouble Registrasi dan Upload

Download Materi UAS

Materi UAS Struktur Data Genap 2004/2005

Materi UAS Kecerdasan Buatan Genap 2004/2005

Lebih dari 100 Abstrak Tugas Akhir

Deadline Proyek I dan Tugas III

Komponen Penilaian Tugas Akhir

Materi UTS Kecerdasan Buatan Genap 2004/2005

Materi UTS Struktur Data Genap 2004/2005

Proyek Software Assignment I

Kuliah Pengganti

MKP Bernilai 'D' atau 'E' Tidak Perlu Dibatalkan

Workshop IT for Non-IT Executive PLN Jatim

 
 

Algoritma dan Pemrograman 2 (IC314)

Contoh Soal

1.

Algoritma Backtracking : "Habis Dibagi". Angka-angka 1,2,3,4,5,6,7,8,9 dapat disusun dalam suatu urutan tertentu. Kesembilan angka harus dipergunakan semua dengan kata lain tidak boleh dipakai lebih dari satu kali, sehingga :

  • bilangan yang terbentuk oleh dua angka yang pertama habis dibagi 2

  • bilangan yang terbentuk oleh tiga angka yang pertama habis dibagi 3

  • bilangan yang terbentuk oleh empat angka yang pertama habis dibagi 4

  • dan demikian seterusnya sampai sembilan angka

Perlu diketahui bahwa satu-satunya bilangan dalam range 100000000 s.d. 999999999 yang memenuhi sifat ini adalah 381654729.

Untuk mendapatkan susunan bilangan yang benar, harus dilakukan trial-error untuk memeriksa apakah semua susunan digit mulai dari 2,3,4,..... 9 memenuhi syarat tersebut di atas atau tidak. Hal ini dapat diatasi dengan menggunakan metode backtracking.

  1. Untuk mengatasi masalah ini tulislah terlebih dahulu sebuah fungsi boolean (outputnya hanya true atau false): FUNCTION habis(bil[], jumlevel). Fungsi ini akan memeriksa apakah susunan digit sebanyak jumlevel yang tersimpan dalam vektor bil[] memenuhi syarat, artinya untuk semua nilai i=2,3,4,.....jumlevel, apakah bilangan yang terbentuk oleh i angka pertama habis dibagi oleh i ? Contoh:

  • Jika bil[] berisi 1, 2, 6 dan leveldigit=3 ; maka output fungsi ini true karena 12 mod 2 = 0, dan 126 mod 3 = 0.

  • Jika bil[ ] berisi 2, 4, 3, 6, 5 dan leveldigit=5 ; maka output fungsi ini juga true karena 24 mod 2, 243 mod 3, 2436 mod 4; dan 24365 mod 5 semuanya menghasilkan angka 0 (habis dibagi).

  • Jika bil[ ] berisi 2, 4, 3, 8 dan leveldigit=4 ; maka output fungsi ini false karena walaupun 24 mod 2=0; 243 mod 3=0; tetapi 2438 mod 4 <> 0.

  1. Tulis abstraksi algoritma backtracking untuk mendapatkan susunan bilangan yang habis dibagi.

Bantuan untuk mempermudah pekerjaan Anda: Abstraksi dan algoritma detil yang dibuat harus menggunakan vektor bil[] sebanyak 9 elemen untuk menampung hasilnya. Sebagai contoh bila algoritma ini akan menghasilkan bilangan 381654729, maka vektor bil[] akan berisi 3,8,1,6,5,4,7,2,9. Selain itu gunakan pula FUNCTION habis(bil[], jumlevel).

  1. Dari abstraksi yang telah dibuat, kembangkan untuk menulis algoritma (detil) backtrackingnya, dengan nama PROCEDURE cobadigit(ke), dimana ke adalah levelnya, mulai dari 1 sampai 9.

  2. Tulis pula  algoritma (lengkap) utama pemanggilnya, lengkap dengan inisialisasi vektor bil[] dan pencetakan hasilnya.

2.

Subgoal yang Recursive: "The Dashes and Stars Banner". Bendera negara UNITED STATES OF AlphanuMERICA tersusun dari sejumlah karakter dashes (-) dan stars (*) yang disusun silih berganti dalam beberapa baris seperti tampilan berikut ini, sehingga bendera ini sering disebut "The Dashes and Stars Banner":

 

----------------****************   k dashes diikuti k stars

--------********--------********   k/2 dashes diikuti k/2 stars

----****----****----****----****   ... demikian seterusnya

--**--**--**--**--**--**--**--**   ... digandakan dan dibagi 2

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*   sampai panjangnya 1.

Berbasis konsep subgoal, tulis recursive procedure DrawFlag(k), yang akan mencetak bendera negara tersebut mulai dengan k-dashes dan k-stars. Diasumsikan nilai k selalu 2n untuk n=0,1,2,..... Validitas k tidak perlu diperiksa lagi.

3.

Recursive: "Fungsi Satu Baris Saja....." Perhatikan subalgoritma function satu baris di bawah ini:

 

FUNCTION max3 ( a, b, c)

1. max3 <----- max(a, max(b, c))

2. RETURN

  1. Tulislah subalgoritma function max, sehingga FUNCTION max3 dapat dipakai untuk mendapatkan nilai maksimal dari 3 buah bilangan integer a, b, dan c? Sebagai contoh max(12, 17, 9) akan menghasilkan 17; sedangkan max(14, 16, 18) akan menghasilkan 18.

  2. Dengan memanfaatkan jawaban nomor (a). tulislah subalgoritma fungsi untuk mendapatkan nilai maksimal dari 5 buah bilangan integer, dengan nama max5. Sebagai contoh max5(2, 17, 29, 18, 26) akan menghasilkan 29; sedangkan max5(74, 71, 50, 76, 88) akan menghasilkan 88.

4.

State-Space Search : "Batu Hitam dan Batu Putih". Terdapat sebuah kotak kayu dengan 5 (lima) lubang. Sebuah lubang hanya dapat terdiri dari sebuah batu atau kosong. Pada keadaan awal, 2 batu hitam diletakkan di lubang ujung kiri kotak, sedangkan 2 batu putih diletakkan di lubang ujung kanan kotak. Sementara sebuah lubang yang tepat di tengah kotak dibiarkan kosong. 

l

l

  m m

Posisi batu hitam dan batu putih ingin ditukar, sehingga 2 batu hitam diletakkan di lubang ujung kanan kotak, sedangkan 2 batu putih diletakkan di lubang ujung kiri kotak.

m m   m m

Akan tetapi sebuah batu hanya dapat dipindahkan dengan cara:

  • menempati sebuah lubang kosong yang harus tepat di sebelahnya; atau

  • melompati hanya sebuah batu lainnya ke dalam lubang yang kosong.

Namun demikian pemindahan batu-batu ini masih dibatasi dengan aturan berikut:

  • untuk sebuah batu hitam hanya dapat dipindahkan ke arah kanan (menempati lubang di sebelahnya atau melompati), ke arah kiri tidak diijinkan.

  • untuk sebuah batu putih hanya dapat dipindahkan ke arah kiri (menempati lubang di sebelahnya atau melompati), ke arah kanan tidak diijinkan.

Yang harus anda jawab atau lakukan:

  1. Berapa jumlah rule/operator/move/action (alternatif perpindahan state) yang harus didefinisikan untuk menyelesaikan masalah ini dengan state-space search? Sebutkan setiap rule ini.

  2. Gambarkan tree pencarian solusi (state-space solution search tree) yang lengkap sampai level yang ke-3, jika strategi Breadth First Search (BFS) diterapkan. Perhatikan bahwa root tree dihitung sebagai level ke-0.

  3. Pada tree tersebut terdapat sejumlah inert nodes, yaitu state-state (sejumlah node) yang tidak dapat dikembangkan lagi dengan rule manapun (mati). Arsirlah semua inert nodes dalam tree jawaban nomor (b).

5.
  1. Tulis sub-algoritma procedure Recursive_Fibonacci_Search.

  2. Terdapat sebuah vektor A[ ] yang telah tersorting secara ascending order sejumlah 14 elemen integer : 04 29 29 34 47 55 55 55 67 76 76 76 98 98. Tunjukan perbandingan-perbandingan yang dilakukan, termasuk perubahan alokasi range pencarian data (perubahan variabel LOW dan HIGH) saat mencari data x = 55 pada vektor A[] dengan menggunakan Recursive Fibonacci Search.

6. Terdapat 25 mata uang emas yang salah satu di antaranya palsu, karena lebih ringan. Dengan hanya 3 (tiga) kali menimbang dengan menggunakan neraca keseimbangan nomor urut mata uang yang palsu dapat diketahui. Tulislah Function Recursive Weighted_Coin berdasarkan konsep divide and conquer untuk mensimulasikan algoritma dalam menentukan nomor mata uang yang palsu.
7.

Ulangi algoritma pada soal nomor (6) di atas, juga dengan divide and conquer, hanya tidak diketahui bahwa berat coin yang palsu apakah lebih ringan atau lebih berat? Prinsipnya berat yang palsu berbeda dengan semua lainnya yang asli.

8.
  1. Jelaskan dan tunjukkan perbedaan Sub Goal, Hill-Climbing dan Working-Backward sebagai 3 (tiga) konsep dasar penyelesaian masalah dengan menggunakan algoritma.

  2. Berikan salah satu contoh problem dan penyelesaiannya (tidak perlu algoritma) yang menuntut pemakaian metode working backward.

9.

Tunjukkan perubahan nilai LOW, HIGH, dan MID untuk pencarian data x=33 pada vektor a[ ]: 98 93 82 78 57 57 49 40 37 33 33 15 12 11 11 10 dengan menggunakan:

  1. Recursive Binary Search (yang dimodifikasi untuk vektor descending).

  2. Recursive Fibonacci Search (yang dimodifikasi untuk vektor descending).

Perhatikan baik-baik bahwa data telah diurutkan secara descending order.

10.

TuliTulis sebuah recursive function multiply(M,N), yang berguna untuk mendapatkan hasil perkalian M x N, tanpa menggunakan operator perkalian. Perhatikan bahwa sebuah perkalian pada prinsipnya adalah penjumlahan yang berulang. Sebagai contoh untuk M=5 dan N=4, hasil perkalian adalah 5+5+5+5.

11. Tulis sebuah recursive procedure maxmin(V[ ], awal, akhir, max, min), yang berguna untuk mendapatkan nilai maximum dan nilai minimum dari vector V[ ] mulai elemen ke awal sampai elemen ke akhir. Proses recursive dilakukan dengan membagi vector menjadi dua bagian yang sama besar. Sedangkan nilai tengah diperoleh melalui rumus tengah ß (awal+akhir) DIV 2.
12.

Gunakan susunan 11 elemen vektor V[ ] berikut ini untuk menjawab soal nomor 1 sampai 7:

78, 5010, 888, 30, 94, 0, 270, 5730, 10, 204, 10

  1. Tunjukkan susunan elemen vektor V[ ] pada 6 (enam) pass pertama saja, bila pengurutan dilakukan dengan menggunakan Insertion Sort.

  2. Tunjukkan susunan elemen vektor V[ ] tepat setelah procedure partition dipanggil / dijalankan oleh procedure quick pada proses sorting dengan menggunakan Recursive Quick Sort. Jawab untuk 3 (tiga) pemanggilan pertama saja.

  3. Tunjukkan susunan elemen vektor V[ ] tepat setelah size dikalikan 2 pada proses sorting dengan menggunakan Iterative Merge Sort. Berturut-turut mulai size=1 sampai proses sorting selesai dilakukan.

  4. Anggaplah 11 elemen vektor V[ ] adalah isi node-node sebuah linked list L. Gambarlah susunan linked list L dan seluruh pockets saat pass 3 akan mulai dilakukan (setelah pass 2 berakhir) pada proses sorting dengan Radix Sort.

  5. Anggaplah 11 elemen vektor V[ ] adalah isi node-node sebuah linked list L. Sebuah node hanya memiliki 2 field untuk item dan link, yang masing-masing membutuhkan 2 bytes dan 4 bytes. Jika Radix Sort (versi naïf/bodoh) akan dilakukan pada linked list L, hitunglah kebutuhan memory (termasuk untuk linked list L) proses sorting ini.

  6. Anggaplah 11 elemen vektor V[ ] telah disorting secara ascending, tabelkan perubahan nilai low, high, dan mid jika Binary Search dilakukan untuk mencari data 99.

  7. Ulangi soal nomor 5 untuk mencari data 94 dengan menggunakan Fibonacci Search.

  8. Anggaplah 11 elemen vektor V[ ] telah disorting secara ascending, dapatkan 2 (dua) buah nilai mid yang pertama kali dihitung jika dicari data 5000 dengan menggunakan Interpolation Search.
13.

Write an algorithm to count the number of times a given target value occurs in an array of N integers recursively.

14. Nonograms. Perhatikan kutipan artikel berikut:

"..... around 1994, a certain kind of puzzles was very popular in England. The "Sunday Telegraph" newspaper wrote: "Nonograms are puzzles from Japan and are currently published each week only in The Sunday Telegraph. Simply use your logic and skill to complete the grid and reveal a picture or diagram." The puzzle goes like this: Essentially, each row and column of a rectangular bitmap is annotated with the respective lengths of its distinct strings of occupied cells. The person who solves the puzzle must complete the bitmap given only these lengths. Published puzzles are larger than this example, and apparently always have unique solutions....."

Sebagai contoh untuk nonogram berukuran baris=4 dan kolom=6, serta label jumlah string seperti yang dicantumkan pada setiap baris dan kolom gambar kiri, maka salah satu solusinya ditunjukkan pada gambar kanan.

Hanya untuk mempermudah pekerjaan Anda, perhatikan bahwa semua rangkaian karakter 'X' dalam setiap kolom ataupun baris, tidak mungkin terputus oleh blank, dalam arti di antaranya terdapat satu atau lebih sel yang kosong (lihat gambar). Original nonogram sebenarnya tidak dibatasi seperti pada soal ujian ini.

Anda diminta untuk menyelesaikan Nonogram berukuran 10 baris x 10 kolom dengan menggunakan program komputer berdasarkan algoritma backtracking:

  1. Tentukan jumlah level. Berikan penjelasan singkat mengapa demikian?
  2. Tentukan jumlah prioritas. Berikan penjelasan singkat mengapa demikian?
  3. Jelaskan satu per satu, semua struktur data yang digunakan untuk menyelesaikan masalah ini, termasuk ukuran, tipe, manfaat, dan contohnya.
  4. Jelaskan apa saja yang Anda lakukan untuk proses-proses pada algoritma backtracking standard di bawah ini, kaitkan jawaban Anda dengan usulan struktur datanya:
  • if acceptable
  • record move
  • cancel / erase previous recording
  1. Tulislah algoritma detil backtrackingnya.
15.

Problem asli nonogram mengijinkan dalam setiap baris atau kolom terdapat dua atau lebih rangkaian karakter 'X' (Lihat gambar kiri di bawah). Ulangi soal nomor (14) di atas, lengkap untuk point-point a sampai e, sehingga algoritma yang Anda desain mampu menghasilkan solusi yang diinginkan. 

Masalah:                 Solusi:

|_|_|_|_|_|_|_|_| 3      |_|X|X|X|_|_|_|_| 3

|_|_|_|_|_|_|_|_| 2 1    |X|X|_|X|_|_|_|_| 2 1

|_|_|_|_|_|_|_|_| 3 2    |_|X|X|X|_|_|X|X| 3 2

|_|_|_|_|_|_|_|_| 2 2    |_|_|X|X|_|_|X|X| 2 2

|_|_|_|_|_|_|_|_| 6      |_|_|X|X|X|X|X|X| 6

|_|_|_|_|_|_|_|_| 1 5    |X|_|X|X|X|X|X|_| 1 5

|_|_|_|_|_|_|_|_| 6      |X|X|X|X|X|X|_|_| 6

|_|_|_|_|_|_|_|_| 1      |_|_|_|_|X|_|_|_| 1

|_|_|_|_|_|_|_|_| 2      |_|_|_|X|X|_|_|_| 2

1 3 1 7 5 3 4 3           1 3 1 7 5 3 4 3

2 1 5 1                   2 1 5 1

Home | Kontak Saya | Eureka! | ArenA | Bimbingan Tugas Akhir | Download | Links
Algoritma & Pemrograman 1 | Algoritma & Pemrograman 2 | Struktur Data | Teknik Kompilasi | Kecerdasan Buatan
KDD & Data Mining | Web Mining | E-Business | Systems Analysis and Design

Copyright (C) December 2004, October 2007, www.hansmichael.com