IKI10100 Struktur Data dan Algoritma, 2003/2004
Tugas 1: Running Time, Recursion, Dynamic Programming
Bobot: 7.5% dari nilai akhir.
Batas akhir: 23 Maret 2004, pk: 15:00.
Penalty 25% untuk setiap hari keterlambatan.
Bagian 1 (35%)
Menurut teori, InterpolationSearch algorithm mempunyai running time yang lebih baik daripada BinarySearch. BinarySearch mempunyai O(log N) sedangkan InterpolationSearch memiliki O(log log N). Tugas anda adalah membuat program yang dapat dipakai untuk melakukan eksperimen dan pengamatan terhadap kebenaran teori tersebut. Secara garis besar langkah utama program adalah:
1. Buat suatu array integer dengan kapasitas besar dan nilai elemen yang acak namun terdistribusi merata dalam suatu rentang tertentu.
2. Lakukan sorting terhadap array tersebut.
3. Terhadap array integer tersebut, lakukan searching terhadap elemen tertentu secara BinarySearch maupun InterpolationSearch.
4. Bandingkan waktu yang dibutuhkan oleh kedua algoritma tersebut.
Tentukan sendiri kapasitas, rentang nilai dan metoda random generator yang anda pakai. Manfaatkan sorting algorithm (SelectionSort) yang tersedia di telaga. Lakukan searching untuk berbagai kasus yang mungkin, dengan jumlah iterasi yang cukup representative sehingga hasilnya dapat dipakai untuk melakukan judgement benar tidaknya running time BinarySearch = O(log N) dan InterpolationSearch = O(log log N).
Catatan: tidak perlu kawatir jika hasil eksperimen tidak mendukung teori di atas.
Bagian 2
Tugas pada bagian 2 ini mengacu pada program Maze yang tersedia di folder Tugas 1 telaga. Ekstraklah maze.zip yang bersisi source codes, struktur data dan class file ke dalam sebuah folder. Untuk mengeksekusi program, lakukan perintah berikut dari folder prompt.
C:.. folder …>java MazeRunner↵
Jika diinginkan bentuk maze yang lain, maka maze tersebut harus diketikkan dalam file Maze.input dengan format yang diterangkan di kelas, atau mengedit code dalam MazeRunner.java (tentu saja perlu di-recompile). Lihat contoh bentuk maze yang lain dalam Maze.input1 dan Maze.input2.
Bagian 2a (25%)
Ubahlah MazeRunner.java yang tersedia menjadi versi yang recursive. Program versi recursive harus menghasilkan output yang sama dengan versi asli (loop version) yang tersedia.
Bagian 2b (40%)
Buatlah sebuah algoritma yang menghasilkan maze sempurna. Kriteria sempurna sebuah maze adalah: hanya ada satu jalur yang menghubungkan satu titik mana pun ke titik mana pun di dalam maze. Oleh karena itu jalur yang circular (kembali menuju jalur yang pernah dilalui) ataupun open area tidak diperbolehkan.
Maze yang dihasilkan oleh program anda adalah dalam format textfile dengan nama “Maze.input”. Output dalam bentuk file ini harus bisa menjadi input dari MazeRunner yang telah disediakan.
MazeGenerator Algorithm.txt bisa dijadikan landasan dalam anda mengembangkan program tersebut.
Bentuk dan metoda penyerahan dokumen tugas akan diumumkan oleh asisten.
Selamat bekerja!
PM~090304