PERANCANGAN PERMAINAN OIL COMPANY PROBLEM DENGAN MENGGUNAKAN TEOREMA MEDIANS DAN ORDER STATISTICS
SKRIPSI
Oleh:
HENDY PRATAMA NIM: 1144093
PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK TIME MEDAN 2015
ABSTRAK
Problema perusahaan minyak (Oil Company Problem) merupakan salah satu permasalahan dari teorema Medians dan Order Statistics. Problema ini dapat diselesaikan dengan lebih cepat dan efisien dengan menerapkan algoritma divideand-conquer. Sasaran dari problema ini adalah untuk menentukan letak pipa saluran utama yang menghubungkan sumur-sumur minyak yang tersebar di suatu ladang minyak. Lokasi optimal dari pipa saluran utama pada problema di atas dapat dicari dengan cara menentukan nilai median dari koordinat y jika pipa utama ingin diletakkan secara horizontal dan nilai median dari koordinat x jika pipa utama ingin diletakkan secara vertikal. Penerapan metode divide-andconquer dalam menyelesaikan masalah median dapat dibagi menjadi beberapa langkah antara lain proses penentuan nilai n, yang merupakan jumlah data, proses penentuan deretan nilai A sebanyak n buah, proses perhitungan nilai m dan proses perhitungan nilai median. Perangkat lunak dapat digunakan untuk bermain Oil Company Problem yang solusinya dapat dicari dengan menggunakan teorema Medians dan Order Statistics.
Kata kunci: oil company problem, divide and conquer, teorema Medians dan Order Statistics
ABSTRACT
Oil Company Problem is a problem of Medians and Order Statistics theorem. This problem could be solved quickly and efficiently by using divideand-conquer algorithm. The goal of this problem is to determine the position of main pipe that is connected to oil well that are spread in oil farm The optimal location of main pipe in this problem could be found by determined the median value of y-coordinate if the main pipe is wanted to be put horizontally and median value of x-coordinate if the main pipe is wanted to be put vertically. The implementation of divide and conquer method in solving median could be classified into several steps such as determining n value, A value sequence, computing m value and computing median value The software could be used to play Oil Company Problem which solutions could be found by using Medians and Order Statistics theorem.
Keywords: oil company problem, divide and conquer, Medians and Order Statistics Theorem
KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa yang telah memberikan kesehatan kepada penulis dan berkat kebajikan yang telah diperbuat selama ini sehingga penulis dapat menyelesaikan skripsi yang merupakan salah satu pemenuhan kurikulum program studi Teknik Informatika pada STMIK TIME Medan. Adapun judul dari skripsi ini adalah “Perancangan Permainan Oil Company Problem dengan Menggunakan Teorema Medians dan Order Statistics”. Dalam penyusunan skripsi ini, penulis banyak menerima bantuan, baik bimbingan maupun petunjuk serta saran nasehat dari berbagai pihak. Melalui kesempatan ini, penulis ingin menyampaikan rasa terima kasih yang sebesar – besarnya kepada : 1.
Bapak Hendri, M.Kom, selaku Dosen Pembimbing I yang telah membantu dan membimbing penulis dalam menyelesaikan skripsi ini.
2.
Ibu Mina Wongso, M.Psi, selaku Dosen Pembimbing II yang telah membantu dan membimbing penulis dalam menyelesaikan skripsi ini.
3.
Bapak Simon Kanggali, selaku Ketua Yayasan STMIK TIME Medan.
4.
Bapak Prof. Chainur Arrasyid, selaku Ketua BPH STMIK TIME Medan.
5.
Bapak Prof. Harlem Marpaung, Ph.D, selaku Ketua STMIK TIME Medan.
6.
Bapak Jackri Hendrik, ST, M.Kom, selaku Puket I STMIK TIME Medan.
7.
Bapak Hendri, M.Kom, selaku Ketua Program Studi Teknik Informatika STMIK TIME Medan.
8.
Seluruh Dosen STMIK TIME Medan, yang telah banyak memberikan ilmu pengetahuan kepada penulis selama perkuliahan. Meskipun telah disusun, penulis menyadari bahwa isi dan teknik penulisan
skripsi ini masih memerlukan perbaikan untuk menyempurnakannya baik dari segi tata bahasa manapun materi yang terkandung didalamnya. Oleh karena itu, setiap kritik dan saran akan diterima dengan senang hati agar dapat dijadikan bahan perbaikan untuk penulisan selanjutnya.
Medan, April 2015 Penulis,
HENDY PRATAMA NIM: 1144093
DAFTAR ISI
ABSTRAK .......................................................................................................
i
ABSTRACT .......................................................................................................
ii
KATA PENGANTAR ...................................................................................... iii DAFTAR ISI .....................................................................................................
v
DAFTAR GAMBAR ........................................................................................ viii DAFTAR TABEL ............................................................................................. ix DAFTAR LAMPIRAN .................................................................................... BAB I
x
PENDAHULUAN ..................................................................... 0 1 1.1. Latar Belakang Masalah ...................................................... 0 1 1.2. Identifikasi Masalah ............................................................ 0 2 1.3. Batasan Masalah .................................................................. 0 2 1.4. Tujuan dan Manfaat Penelitian ........................................... 0 3 1.5. Sistematika Penulisan ......................................................... 0 4
BAB II
LANDASAN TEORI ................................................................ 0 5 2.1. Algoritma ............................................................................ 0 5 2.1.1. Definisi Algoritma ....................................................
5
2.1.2. Penerapan Algoritma ................................................
7
2.1.3. Klasifikasi Algoritma ...............................................
8
2.1.4. Karakteristik Algoritma ............................................ 10 2.1.5. Kompleksitas Algoritma........................................... 11 2.2. Struktur Data ...................................................................... 14
2.2.1. Manfaat Struktur Data .............................................. 15 2.2.2. Struktur Data Array (Larik) ..................................... 15 2.3. Pengurutan (Sorting) .......................................................... 17 2.3.1. Quick Sort .................................................................. 19 2.3.2. Randomized Quick Sort ............................................ 20 2.4. Statistik (Statistics) ............................................................. 21 2.4.1. Peranan Statistik ....................................................... 24 2.4.2. Data Statistik ............................................................ 26 2.4.3. Order Statistic ........................................................... 27 2.5. Metode Divide-and-Conquer ............................................. 28 2.6. Penerapan Metode Divide and Conquer dalam Masalah Seleksi ................................................................................ 29 2.7. Problema Perusahaan Minyak (Oil Company Problem) ... 30 BAB III
METODE PENELITIAN ........................................................ 31 3.1. Tempat dan Jadwal Penelitian ............................................ 31 3.2. Kerangka Kerja ................................................................... 32 3.2.1. Metode Pengumpulan Data ...................................... 32 3.2.2. Analisa Sistem .......................................................... 34 3.2.3. Perancangan Sistem ................................................. 34 3.2.4. Pembangunan Sistem ............................................... 35 3.2.5. Uji Coba Sistem ....................................................... 35
BAB IV
ANALISA DAN PERANCANGAN ......................................... 36 4.1. Analisa ................................................................................ 36 4.2. Perancangan ........................................................................ 39
4.2.1. Form Utama .............................................................. 40 4.2.2. Form Permainan ........................................................ 41 4.2.3. Form User .................................................................. 42 4.2.4. Form High Score ....................................................... 43 4.2.5. Form About ............................................................... 44 4.2.6. Perancangan Database ............................................... 45 BAB V
HASIL DAN PEMBAHASAN ................................................. 47 5.1. Hasil ..................................................................................... 47 5.1.1. Interface Program ...................................................... 47 5.1.2. Algoritma .................................................................. 51 5.1.3. Spesifikasi Hardware dan Software .......................... 55 5.2. Pembahasan ......................................................................... 56
BAB V1
KESIMPULAN DAN SARAN ................................................. 57 6.1. Kesimpulan .......................................................................... 58 6.2. Saran..................................................................................... 58
DAFTAR PUSTAKA LAMPIRAN
DAFTAR GAMBAR
Gambar 2.1. Grafik Notasi , Notasi O dan Notasi ....................................... 14 Gambar 2.2. Peranan statistik dalam melakukan penelitian ............................... 25 Gambar 2.3. Ilustrasi algoritma randomized-quick select .................................. 30 Gambar 3.1. Kerangka kerja penelitian............................................................... 32 Gambar 3.2. Model Waterfall ............................................................................. 33 Gambar 4.1. Tampilan Form Utama ................................................................... 40 Gambar 4.2. Tampilan Form Permainan ............................................................. 41 Gambar 4.3. Tampilan Form User ...................................................................... 42 Gambar 4.4. Tampilan Form High Score ............................................................ 43 Gambar 4.5. Tampilan Form About .................................................................... 44 Gambar 4.6. Relationship Tabel Pada Database ................................................. 46 Gambar 5.1. Form Utama ................................................................................... 47 Gambar 5.2. Form User....................................................................................... 48 Gambar 5.3. Input Box Tambah User ................................................................. 49 Gambar 5.4. Form Permainan ............................................................................. 49 Gambar 5.5. Form Daftar Nilai Tertinggi ........................................................... 50 Gambar 5.6. Form Mengenai .............................................................................. 51
DAFTAR TABEL
Tabel 3.1. Jadwal Penelitian................................................................................ 31 Tabel 4.1. Tabel High Score ............................................................................... 45 Tabel 4.2. Tabel User List ................................................................................... 45
DAFTAR LAMPIRAN
CD program Surat keputusan dosen pembimbing skripsi Daftar riwayat hidup mahasiswa Listing program
BAB I PENDAHULUAN
1.1.
Latar Belakang Masalah Oil Company Problem merupakan sebuah problem dari teorema Medians
dan Order Statistics, dimana sasaran dari problema ini adalah mencari nilai median dari sekumpulan nilai dengan menggunakan algoritma divide and conquer. Problema perusahaan minyak (Oil Company Problem) dapat dijabarkan sebagai berikut, seorang professor bekerja sebagai konsultan pada sebuah perusahaan minyak. Perusahaan tersebut berencana untuk membangun sebuah pipa saluran besar yang membentang dari timur ke barat melewati n buah sumur dari ladang minyak. Dari setiap sumur, sebuah cabang pipa saluran dihubungkan langsung ke pipa saluran utama pada jarak yang minimum (shortest path) baik timur maupun barat. Selain itu, juga diberikan koordinat x dan y dari setiap sumur. Permasalahannya adalah bagaimana sang professor menentukan lokasi optimal dari pipa saluran utama (Cormen, H., Leiserson, E., Rivest, L., 1990). Problema ini dapat diselesaikan dengan menggunakan teorema Medians dan Order Statistics. Lokasi pipa saluran utama tersebut dapat dicari dengan menggunakan algoritma divide and conquer untuk problema seleksi. Problema di atas sebenarnya hampir mirip dengan mencari nilai median dari sekelompok nilai, di mana nilai diwakili oleh posisi y dari setiap sumur. Selain itu, problema ini juga memerlukan algoritma sorting. Dalam hal ini, penulis memilih algoritma Randomized-Quicksort, dengan pertimbangan bahwa algoritma ini termasuk metode divide-and-conquer yang memiliki waktu eksekusi terbaik O(n).
1
2
Berdasarkan uraian di atas, maka penulis bermaksud untuk merancang sebuah perangkat lunak permainan untuk bermain oil company problem. Permainan ini dirancang dengan tujuan untuk mempelajari mengenai proses pencarian nilai median yang merupakan solusi dari permainan oil company problem. Permainan ini dapat digunakan oleh anak kelas SMP dan SMA untuk mempelajari mengenai statistik dan median. Oleh karena itu, penulis mengambil skripsi dengan judul “Perancangan Permainan Oil Company Problem dengan Menggunakan Teorema Medians dan Order Statistics”.
1.2.
Identifikasi Masalah Berdasarkan latar belakang pemilihan judul, maka yang menjadi
permasalahan adalah: 1. Menyediakan interface untuk menentukan lokasi pipa untuk menghubungkan semua sumur pada ladang minyak. 2. Menerapkan teorema Median dan Order Statistics untuk melakukan proses pencarian lokasi pipa saluran utama.
1.3.
Batasan Masalah Karena keterbatasan waktu dan pengetahuan penulis, maka ruang lingkup
permasalahan dalam merancang perangkat lunak ini adalah sebagai berikut : 1. Jumlah sumur dibatasi maksimal 50 buah. 2. Posisi pipa utama dibentangkan secara horizontal ataupun vertikal. 3. Bahasa pemrograman yang digunakan untuk membangun sistem adalah Microsoft Visual Basic 2010.
3
4. Waktu yang diberikan dalam permainan hanya 300 detik.
1.4.
Tujuan dan Manfaat Penelitian Tujuan penyusunan skripsi ini adalah:
1. Merancang suatu perangkat lunak yang dapat digunakan untuk bermain Oil Company Problem. 2. Menerapkan algoritma divide and conquer untuk menyelesaikan Oil Company Problem. Manfaat dari penyusunan skripsi ini, yaitu: 1. Bagi penulis Pembuatan skripsi ini dapat meningkatkan pengetahuan dan kemampuan penulis dalam membuat aplikasi dengan menggunakan Microsoft Visual Basic.NET. 2. Bagi pembaca a. Untuk memahami proses kerja dari algoritma divide and conquer untuk problema seleksi. b. Perangkat lunak dapat digunakan sebagai sarana hiburan yang cukup menarik untuk mengisi waktu senggang. 3. Bagi STMIK-TIME Laporan skripsi dapat dijadikan sebagai referensi bagi mahasiswa lainnya yang ingin mengembangkan aplikasi permainan lainnya.
4
1.5.
Sistematika Penulisan Rincian isi dari laporan skripsi ini meliputi beberapa BAB, yaitu:
BAB I
PENDAHULUAN Pada BAB ini akan membahas tentang latar belakang masalah, identifikasi masalah, batasan masalah, tujuan dan manfaat serta sistematika penulisan.
BAB II
LANDASAN TEORI Pada BAB ini berisi tentang landasan teori mengenai algoritma yang digunakan untuk menunjang penyusunan laporan skripsi ini.
BAB III
METODE PENELITIAN BAB ini berisi pembahasan jadwal penelitian, kerangka penulisan, metode pengumpulan data dan alur kerja program.
BAB IV
ANALISIS DAN PERANCANGAN SISTEM BAB ini berisi pembahasan masalah serta rancangan tampilan form yang terdapat pada program yang akan dibuat.
BAB V
HASIL DAN PEMBAHASAN BAB ini berisi tampilan output program dan penjabaran mengenai kelebihan dan kelemahan program permainan Oil Company Problem.
BAB VI
KESIMPULAN DAN SARAN BAB ini berisi kesimpulan dan saran terhadap laporan skripsi yang telah dilakukan.
BAB II
LANDASAN TEORI
2.1 Algoritma Kata algoritma berasal dari nama seorang ahli matematika berkebangsaan Persia yang hidup pada abad ke-9 yang bernama Abu Abdullah Muhammad bin Musa Al-Khawarizmi. Pada awalnya, kata „algorism‟ diartikan sebagai aturanaturan untuk melakukan proses aritmatika menggunakan numerik Arab. Kata „algorism‟ diubah menjadi kata „algorithm‟ pada abad ke-18. Sekarang, pengertian dari kata ini mencakup semua prosedur terhingga untuk menyelesaikan problema atau melakukan pekerjaan. (Cormen, et. al., 1990) Penerapan pertama dari algoritma yang ditulis untuk sebuah komputer adalah „Ada Byron’s notes on the analytical engine‟ yang ditulis pada tahun 1842, dimana Ada Byron dianggap oleh kebanyakan orang sebagai programmer pertama di dunia. Walaupun, sejak Charles Babbage tidak menyelesaikan analytical engine-nya, algoritma ini tidak pernah diimplementasikan lagi.
2.1.1
Definisi Algoritma Algoritma adalah suatu kumpulan terhingga (finite set) dari instruksi yang
terdefinisi dengan baik (well-defined instructions) untuk menyelesaikan beberapa pekerjaan dimana diberikan state awal (initial state) dan akan dihentikan pada saat ditemukan state akhir (end-state) yang dikenal. (Cormen, et. al., 1990)
5
6
Algoritma dapat diimplementasikan dalam pembuatan program komputer. Kesalahan dalam merancang algoritma untuk menyelesaikan suatu problema dapat menyebabkan program gagal dalam implementasinya. Konsep dari suatu algoritma sering diilustrasikan dengan mengambil contoh sebuah resep, walaupun banyak algoritma yang jauh lebih kompleks. Algoritma sering memiliki beberapa langkah perulangan (iterasi) atau memerlukan pengambilan keputusan seperti logika (logic) atau perbandingan (comparison) sampai pekerjaan diselesaikan. Menerapkan suatu algoritma secara benar belum tentu dapat menyelesaikan problema. Hal ini dikarenakan adanya kemungkinan algoritma tersebut rusak atau cacat, atau penerapannya tidak cocok (tidak tepat) untuk menyelesaikan problema. Sebagai contoh, sebuah algoritma hipotesis untuk membuat sebuah salad kentang akan gagal jika tidak terdapat kentang. Suatu pekerjaan dapat diselesaikan dengan menggunakan algoritma yang berbeda dengan kumpulan instruksi (set of instructions) yang berbeda dengan perbedaan waktu akses, efisiensi tempat, usaha dan sebagainya. Sebagai contoh, diberikan dua buah resep yang berbeda untuk membuat salad kentang, resep pertama mengupas kulit kentang terlebih dahulu sebelum memasak kentang tersebut, sementara resep lainnya dilakukan dengan langkah yang terbalik, dan kedua resep akan mengulangi kedua langkah tersebut dan akan dihentikan pada saat salad kentang siap untuk dimakan. Algoritma adalah hal yang mendasar untuk komputer dalam memproses informasi, karena sebuah program komputer adalah sebuah algoritma yang memberitahukan kepada komputer langkah-langkah spesifik yang akan dijalankan
7
(dalam urutan spesifik) untuk melakukan pekerjaan tertentu, misalnya menghitung gaji karyawan atau mencetak rapor murid. Oleh karena itu, algoritma dapat dianggap sebagai beberapa operasi sekuensial (terurut) yang dapat dijalankan oleh sebuah sistem lengkap Turing.
2.1.2
Penerapan Algoritma Algoritma tidak hanya diimplementasikan dalam program komputer, tetapi
juga dalam bidang lain, seperti jaringan neural biologis (biological neural network), otak manusia dalam menghitung operasi aritmatika, serangga dalam proses mencari makanan, peralatan mekanik, dan sebagainya. (Hariyanto, 2003) Analisis dan studi dari algoritma adalah salah satu bidang ilmu dalam computer science (ilmu komputer) dan sering dipraktekkan secara abstrak tanpa penggunaan dari bahasa pemrograman tertentu ataupun implementasi lainnya. Algoritma mirip dengan bidang ilmu matematika lainnya dimana analisis difokuskan pada prinsip yang mendasar dari algoritma dan bukan pada implementasi faktanya. Salah satu cara untuk mewujudkan sebuah algoritma adalah dengan menuliskan pseudocode-nya. Sebuah contoh sederhana dari algoritma dapat dilihat pada ilustrasi berikut ini. Misalkan diketahui sebuah daftar bilangan acak yang tidak terurut. Sasarannya adalah untuk menemukan nilai tertinggi dari daftar bilangan tersebut. Algoritma untuk menyelesaikan pekerjaan tersebut adalah sebagai berikut : 1. Anggap angka pertama sebagai angka terbesar. 2. Baca angka selanjutnya dan bandingkan dengan angka terbesar.
8
3. Jika angka tersebut lebih besar daripada angka terbesar maka angka tersebut menjadi angka terbesar. 4. Ulangi langkah kedua dan ketiga hingga semua angka dalam daftar terbaca.
2.1.3
Klasifikasi Algoritma Banyak cara yang dapat digunakan untuk mengklasifikasikan algoritma,
dan penggunaan dari setiap klasifikasi telah lama diperdebatkan. Salah satu cara untuk mengklasifikasikan algoritma adalah berdasarkan metodologi atau paradigma perancangan. Cara ini mengklasifikasikan algoritma menjadi beberapa macam antara lain : 1. Divide and Conquer Algoritma Divide and Conquer secara berulang membagi kejadian dari suatu problema menjadi satu atau lebih kejadian yang lebih kecil sampai kejadian tersebut cukup kecil untuk diselesaikan dengan mudah. 2. Dynamic Programming Algoritma dynamic programming merupakan cara untuk menyelesaikan suatu problema dengan membagi problema menjadi subproblema-subproblema yang saling berhubungan satu sama lain. Dynamic programming menyelesaikan setiap subproblema hanya sekali, menyimpannya dalam sebuah tabel dan menggunakan hasilnya untuk subproblema lain apabila diperlukan. Di sini terlihat bahwa, dynamic programming dapat menghemat waktu dalam menyelesaikan suatu problema.
9
3. The Greedy Method Sebuah algoritma Greedy sama dengan sebuah algoritma Dynamic Programming. Perbedaannya adalah setiap stage tidak perlu dicari solusinya untuk sub problema, melainkan dapat dibuat sebuah pilihan tamak (“greedy”) terhadap apa yang dianggap terbaik pada saat itu. Contoh problema yang dapat diselesaikan dengan algoritma ini adalah Zero-One Knapsack. 4. Linear Programming Ketika menyelesaikan sebuah problema menggunakan linear programming, program dimasukkan sekumpulan ketidaksamaan linier (linear inequalities) dan kemudian mencoba memaksimalkan atau meminimalkan input-nya. Banyak problema seperti maximum flow untuk directed graphs dapat diselesaikan dengan cara linear programming dan kemudian diselesaikan dengan sebuah algoritma „generic‟ seperti Simplex algorithm. 5. Search and Enumeration Banyak problema seperti permainan catur dapat dimodelkan sebagai problema dalam graph. Sebuah algoritma eksplorasi dari graph menspesifikasi aturan untuk bergerak di dalam sebuah graph dan berguna untuk problema tersebut. Kategori ini termasuk search algorithms and backtracking. 6. The Probabilistic and Heuristic Paradigm. Algoritma yang termasuk dalam kelas ini tidak begitu tepat (cocok) dengan definisi dari algoritma. a. Probabilistic Algorithms, adalah semua algoritma yang membuat beberapa pilihan secara random atau pseudo random untuk beberapa problema. Algoritma ini juga membuktikan bahwa solusi tercepat untuk suatu
10
masalah adalah diselesaikan secara random (acak). Contohnya adalah membuat binary search tree dengan acak (randomly built binary search tree). b. Genetic Algorithms, menemukan solusi dari problema dengan meniru proses evolusi biologis, dengan sebuah lingkaran mutasi random (acak) menghasilkan solusi yang sukses. Maka akan diemulasikan reproduksi dan cara terbaik yang selamat. Contoh problema yang dapat diselesaikan dengan algoritma ini adalah Travelling Salesman Problem (TSP). c. Heuristic Algorithms, dimana tujuan utama bukan untuk mencari solusi optimal, tetapi solusi yang pantas (tepat) karena waktu dan tempat untuk mencari solusi optimal tidak praktis. Contohnya local search, taboo search, atau algoritma simulated annealing, class dari heuristic probabilistic algorithms dan sebagainya. (Cormen, et. al., 1990)
2.1.4
Karakteristik Algoritma Suatu algoritma memiliki beberapa karakteristik yang sangat berguna
dalam mendeskripsikan algoritma tersebut. Karakteristik tersebut dapat dijabarkan sebagai berikut : 1. Input Sebuah algoritma memiliki nilai input dari sebuah kumpulan / set tertentu. 2. Output Dari setiap kumpulan / set dari nilai input, sebuah algoritma akan menghasilkan nilai output dari sebuah kumpulan / set tertentu. Nilai output terdiri dari solusi-solusi dari permasalahan.
11
3. Kepastian (Definiteness) Langkah-langkah dari algoritma harus dapat didefinisikan dengan tepat. 4. Terbatas (Finiteness) Sebuah algoritma harus menghasilkan output yang diinginkan setelah melakukan sejumlah langkah tertentu (mungkin banyak langkah) dari sembarang input dalam kumpulan / set. 5. Efektif (Effectiveness) Setiap langkah dari sebuah algoritma harus dapat dijalankan dengan tepat dalam sejumlah waktu tertentu. 6. Keadaan yang umum (Generality) Prosedur yang dirancang harus dapat diaplikasikan untuk semua persoalan dari bentuk yang diinginkan, dan tidak hanya untuk sekelompok nilai input saja.
2.1.5
Kompleksitas Algoritma Suatu algoritma memiliki kemungkinan terbaik (best case) dan
kemungkinan terburuk (worst case). Best Case maksudnya adalah waktu eksekusi tercepat dari algoritma, sedangkan Worst Case maksudnya adalah waktu eksekusi terlama dari algoritma. Waktu eksekusi dari algoritma ini biasanya disebut dengan kompleksitas algoritma. Kompleksitas algoritma biasanya dinyatakan dengan notasi O (Big-O). Suatu algoritma dikatakan memiliki kompleksitas O(n2) berarti bahwa waktu eksekusi terlama dari algoritma tersebut adalah sebesar kuadrat dari banyaknya elemen data yang akan diproses.
12
Semakin kecil kompleksitas suatu algoritma maka algoritma tersebut dikatakan lebih efisien dan efektif. Algoritma semacam inilah yang lebih disukai orang untuk digunakan dalam penyelesaian masalah. Dalam
analisis
matematika
khususnya
analisis
algoritma,
untuk
menentukan pertumbuhan dari fungsi, dapat digunakan asymtotic notations (notasi asimtot). Knuth mengutarakan beberapa notasi antara lain : 1. Big-O 2. Big- (Omega) 3. Big- (Theta) Notasi-notasi di atas tidak memiliki sifat matematika konvensional dan tidak berlaku ketentuan-ketentuan matematika di dalamnya. Suatu fungsi f(x) memiliki notasi O(x) dan fungsi lainnya g(x) juga memiliki notasi O(x), namun ini tidak berarti bahwa f(x) sama dengan g(x). Notasi Big-O adalah suatu cara untuk membandingkan fungsi dan sangat berguna untuk menghitung kompleksitas dari algoritma, misalnya banyaknya waktu yang diperlukan oleh komputer untuk menjalankan program. Contoh : 3x3 + 5x2 – 9 = O(x3) Persamaan di atas tidak berarti bahwa ada suatu fungsi O(x3) yang sama dengan fungsi 3x3 + 5x2 - 9, namun persamaan tersebut berarti bahwa 3x3 + 5x2 - 9 memiliki big-O x3 atau dapat dikatakan bahwa 3x3 + 5x2 - 9 didominasi secara asimtot oleh x3. Notasi asimtot mencerminkan kelakuan dari fungsi untuk nilai yang besar sehingga notasi asimtot kadang kala tidak berlaku untuk nilai yang kecil.
13
Notasi O-Besar menyediakan batas lebih atas (upper bound) untuk fungsi T(n), tetapi tidak memberikan batas lebih bawah (lower bound). Untuk mendefinisikan batas lebih bawah (lower bound) untuk kompleksitas waktu, digunakan lambang Omega-Besar (Big-). Big- merupakan kebalikan dari Big-O. Hal ini dapat diilustrasikan seperti berikut : f(x) = (g(x)) g(x) = O(f(x)) Sedangkan Big- menyatakan bahwa fungsi-fungsi saling mendominasi satu sama lain, sehingga fungsi-fungsi tersebut dikatakan ekivalen secara asimtotik. f(x) = (g(x)) (f(x) = O(g(x)) f(x) = (g(x))) Beberapa penggunaan dari notasi asimtot dapat dilihat pada contoh di bawah ini, 1. Big- dari polinomial adalah bentuk variabel dengan orde terbesar. x4/100000 + 3x3 + 5x2 – 9 = O(x4) 2. Penjumlahan dari dua fungsi memiliki Big-O dari fungsi dengan orde terbesar. x4 ln(x) + x5 = O(x5) 3. Konstanta di samping variabel tidak diambil. 17x4 ln(x) = O(x4 ln(x)) Notasi , notasi O dan notasi dapat digambarkan dalam bentuk grafik, seperti terlihat pada gambar 2.1 berikut ini.
14
Gambar 2.1 Grafik Notasi , Notasi O dan Notasi Sumber: Cormen, et. al., 1990 Pada gambar 2.1, diasumsikan nilai n0 adalah nilai terkecil yang mungkin. Gambar 2.1 (a) menggambarkan notasi . Nilai dari f(n) = (g(n)) selalu berada di antara grafik c1g(n) dan c2g(n). Gambar 2.1 (b) menggambarkan notasi O. Notasi ini memberikan batas lebih atas (upper bound) untuk sebuah fungsi dan nilai dari f(n) = O(g(n)) selalu berada di bawah grafik cg(n). Gambar 2.1 (c) menggambarkan notasi . Notasi ini memberikan batas lebih bawah (lower bound) untuk sebuah fungsi dan nilai dari f(n) = (g(n)) selalu berada di atas grafik cg(n).
2.2 Struktur Data Struktur berarti susunan / jenjang, dan data berarti sesuatu simbol / huruf / lambang angka yang menyatakan sesuatu. Struktur data berarti susunan dari simbol / huruf / lambang angka untuk menyatakan sesuatu hal. Gabungan dari algoritma dan struktur data akan membentuk suatu program. (Hariyanto, 2003)
15
2.2.1
Manfaat Struktur Data Adapun manfaat dari struktur data adalah sebagai berikut,
1. Mengefisiensikan program. Program yang dibuat dengan menerapkan konsep – konsep yang berlaku pada struktur data akan lebih efisien dibandingkan dengan program yang dibuat dengan mengabaikan konsep struktur data. 2. Modifikasi Sesuatu program harus dapat dimodifikasi apabila diperlukan, hal ini dapat dilakukan jika fasilitas yang diperlukan dibuat (disertakan) walaupun pada tahap awal belum dipakai. 3. Memilih metode yang tepat Misalkan suatu plaza pada hari – hari tertentu mengalami antrian yang panjang pada kasir, hal ini dapat diatasi dengan metode, 1. Pemasukan data tidak melalui keyboard lagi, melainkan melalui barcode. 2. Membuat pemberitahuan pada kasir – kasir. Data terstruktur adalah suatu tipe data yang batas nilainya masih dapat diuraikan, contohnya antrian, set, tumpukan (stack), dan sebagainya. Data terstruktur terbagi dua yaitu, 1. Data Terstruktur Linier (Struktur Data Linier) 2. Data Terstruktur Non Linier (Struktur Data Non Linier) (Hariyanto, 2003)
2.2.2
Struktur Data Array (Larik) Array (larik) adalah suatu tipe data terstruktur yang dapat menampung
(berisikan) suatu data yang sejenis (Hariyanto, 2003).
16
Komponen – komponen dari Array antara lain, 1. Nama Array 2. Nilai Array 3. Index Array 4. Jenis (tipe) Array Deklarasi Array dapat dibuat pada, 1. Bagian Tipe Contoh, Type A = Array [1..5] of Char; 2. Bagian Variabel Contoh, Var A = Array [1..5] of Char; Array terdiri dari beberapa jenis antara lain, 1. Array 1 dimensi Contohnya, A[1] = „A‟
A[5] = „E‟
A[2] = „B‟
A[6] = „F‟
A[3] = „C‟
A[7] = „G‟
A[4] = „D‟
A[8] = „H‟
2. Array Multi dimensi (≥ 2) Contoh, misalkan diketahui sebuah Array dua dimensi B dengan jenis data Integer, B[1,1] = 1
B[1,2] = 2
B[2,1] = 3
Proses - proses yang mungkin dilakukan pada Array adalah, 1. Proses memasukkan data
17
2. Proses mencari data 3. Proses menghapus data 4. Proses mencetak data 5. Proses menyisip data 6. Proses mencari posisi 7. Proses mengurutkan data 8. Dan sebagainya
2.3
Pengurutan (Sorting) Pengurutan (sorting) merupakan pekerjaan yang sering kita lakukan dalam
kehidupan sehari-hari. Tujuan dari pengurutan adalah menyusun sejumlah data sedemikian sehingga diperoleh suatu keteraturan apakah terurut menaik atau terurut menurun. Dengan adanya data terurut, disamping enak dipandang maka pencarian dapat dilakukan dengan cepat baik dengan algoritma biner maupun dengan rumus interpolasi. Hal ini sangat penting apalagi jika jumlah data sangat besar. Akan tetapi yang menjadi perhatian kita adalah bagaimana mendapatkan algoritma pengurutan yang efisien atau cepat. Sebab mengurutkan data dengan jumlah besar dan apalagi jika data sering berubah (bertambah atau berkurang) sehingga pengurutan harus dilakukan berulang-ulang, maka kita sangat membutuhkan algoritma pengurutan yang sangat cepat. Dalam pengurutan data, waktu yang diperlukan untuk melakukan proses pengurutan perlu dipertimbangkan dan juga masih ada beberapa aspek lain yang harus diperhatikan. Data yang harus kita urutkan tentunya sangat bervariasi baik dalam hal banyak data maupun jenis data yang akan diurutkan. Dalam hal ini,
18
tidak ada satu algoritma yang terbaik untuk setiap situasi yang kita hadapi. Bahkan cukup sulit untuk menentukan algoritma mana yang paling baik untuk situasi tertentu karena ada beberapa faktor yang mempengaruhi efektivitas algoritma pengurutan. Beberapa faktor yang berpengaruh dalam efektivitas suatu algoritma pengurutan antara lain: 1. Banyak data yang diurutkan. 2. Kapasitas pengingat apakah mampu menyimpan semua data yang kita miliki. 3. Tempat penyimpanan data, seperti Hard disk, Flash Disk atau media penyimpan yang lain. Keuntungan ataupun tujuan dari pengurutan data adalah bahwa data akan lebih mudah dicari, mudah untuk dibetulkan, dihapus, disisipi atau digabungkan. Dalam keadaan terurut, kita mudah mencek apakah ada data yang hilang. Hal tersebut sangat penting dalam pemrograman database. Bayangkan saja, jika komputer diperintah untuk mencari sebuah data dari sepuluh juta buah data yang tidak terurut, maka komputer secepat apapun juga akan memerlukan waktu yang tidak sedikit untuk dapat menemukan data tersebut dan tentunya hal ini akan menganggu efektivitas dan efisiensi kerja. Algoritma pengurutan yang digunakan adalah algoritma Randomize Quick Sort, maka pembahasan kali ini hanya memfokuskan pada algoritma Quick Sort dan algoritma Randomize Quick Sort saja. (Cormen, et. al., 1990)
19
2.3.1
Quick Sort Metode Quick Sort sering juga disebut dengan metode partition exchange
sort. Metode ini diperkenalkan oleh C.A.R Hoare. Untuk mempertinggi efektifitasnya, dalam metode ini jarak kedua elemen yang akan ditukarkan nilainya cukup besar. Berikut merupakan penggalan prosedur Quick Sort dalam bahasa Pascal, Procedure Quick(var A:Data ; awal,akhir,Sort:BYTE); var I, J : integer; Procedure Atur; BEGIN I:=awal+1; J:=akhir; Case Sort Of 1 : Begin
{terurut menaik}
While A[awal] > A[I] do Inc(I); While A[J] > A[awal] do Dec(J); end; 2 : Begin
{terurut menurun}
While A[awal]
20
While I<J do begin Tukar(A[I],A[J]); Case sort of 1 : Begin {terurut menaik} while A[awal] > A[I] do Inc(I); while A[J] > A[awal] do Dec(J); END; 2 : Begin {terurut menurun} while A[awal] < A[I] do Inc(I); While A[J] < A[awal] do Dec(J); END; END; END; Tukar(A[awal],A[J]); END; {Badan Program dari Quick Sort} Begin IF awal < akhir then begin Atur; Quick(A, awal, J-1 , sort); Quick(A, J+1 , akhir, sort);
21
end; end;
(Cormen, et. al., 1990)
2.3.2
Randomize Quick Sort Metode ini dinamakan algoritma acak (randomized) karena prosesnya
tidak hanya ditentukan oleh nilai input-nya saja tetapi juga ditentukan oleh nilai acak yang dihasilkan sebuah pembangkit bilangan acak (random-number generator). Nilai acak ini dihasilkan oleh perintah RANDOM(a, b) yang terdapat dalam algoritma. Perintah RANDOM(a, b) mengembalikan sebuah nilai bilangan bulat yang berada diantara nilai a dan nilai b. Dalam prakteknya, nilai RANDOM ini sering dibangkitkan dengan menggunakan pembangkit bilangan acak semu (pseudo-random number generator). Dalam pembahasan kali ini, digunakan generator Geffe sebagai pseudo-random number generator-nya. Pembahasan mengenai generato Geffe ini akan dibahas pada subbab selanjutnya. Versi randomized dari Quick Sort ini juga menggunakan sebuah algoritma Randomized-Partition yang dapat dideskripsikan seperti berikut: RANDOMIZED-PARTITION (A, p, r) 1
i RANDOM (p, r)
2
exchange A[p] A[i]
3 return PARTITION (A, p, r)
Sedangkan, algoritma ini dari metode Randomize Quick Sort dapat dirincikan sebagai berikut, RANDOMIZED-QUICKSORT (A, p, r) 1 2
if p < r then q RANDOMIZED-PARTITION (A, p, r)
3
RANDOMIZED-QUICKSORT (A, p, q)
4
RANDOMIZED-QUICKSORT (A, q+1, r)
22
(Cormen, et. al., 1990)
2.4
Statistik (Statistics) Banyak persoalan, apakah itu hasil penelitian, riset ataupun pengamatan,
baik yang dilakukan khusus ataupun pengamatan, baik yang dilakukan khusus ataupun berbentuk laporan, dinyatakan dan dicatat dalam bentuk bilangan atau angka – angka. Kumpulan angka – angka itu sering disusun, diatur atau disajikan dalam bentuk daftar atau tabel. Sering pula daftar atau tabel tersebut disertai dengan gambar – gambar yang biasa disebut diagram atau grafik supaya lebih dapat menjelaskan lagi tentang persoalan yang sedang dipelajari. Hal – hal yang dijelaskan di atas disebut dengan statistik. Jadi, kata statistik dipakai untuk menyatakan kumpulan data, bilangan maupun non-bilangan yang disusun dalam tabel dan atau diagram, yang melukiskan atau menggambarkan suatu persoalan. Statistik yang menjelaskan sesuatu hal biasanya diberi nama statistik mengenai hal yang bersangkutan, misalnya statistik penduduk, statistik kelahiran, statistik pendidikan, statistik produksi, statistik pertanian, statistik kesehatan dan masih banyak nama – nama lain. Kata statistik juga masih mengandung pengertian lain, yakni dipakai untuk menyatakan ukuran sebagai wakil dari kumpulan data mengenai sesuatu hal. Ukuran ini didapat berdasarkan perhitungan menggunakan kumpulan sebagian data yang diambil dari keseuluruhan tentang persoalan tersebut. Contohnya seperti kata – kata persen dan rata – rata. Jika dilakukan penelitian terhadap 20 pegawai dan dicatat gajinya setiap bulan dan dihitung rata – rata gajinya, misalnya Rp.
23
87.500,- maka rata – rata ini dinamakan statistik. Demikian pula, jika dari kedua puluh pegawai itu ada 40 % yang gajinya tiap bulan kurang dari Rp. 60.000,maka nilai 40 % ini dinamakan statistik. Selain persen dan rata – rata sebagai statistik masih banyak lagi ukuran – ukuran lain yang merupakan statistik. Dari hasil penelitian, riset maupun pengamatan, baik yang dilakukan khusus ataupun berbentuk laporan, sering diminta atau diinginkan suatu uraian, penjelasan atau kesimpulan tentang persoalan yang diteliti. Sebelum kesimpulan dibuat, keterangan atau data yang telah terkumpul itu terlebih dahulu dipelajari, dianalisis atau diolah dan berdasarkan pengolahan inilah kesimpulan dibuat. Tentulah mudah dimengerti bahwa pengumpulan data datau keterangan, pengolahan dan pembuatan kesimpulan harus dilakukan dengan baik, cermat, teliti, hati – hati, mengikuti cara – cara dan teori yang benar dan dapat dipertanggungjawabkan. Ini semua merupakan pengetahuan tersendiri yang dinamakan statistika. Jadi, statistika adalah pengetahuan yang berhubungan dengan cara – cara pengumpulan data, pengolahan atau penganalisisan dan penarikan kesimpulan berdasarkan kumpulan data dan penganalisisan yang dilakukan. Ada dua jalan yang dapat ditempuh untuk mempelajari statistika. Jika ingin membahas statistika secara mendasar, mendalam dan teoritis, maka yang dipelajari digolongkan ke dalam statistika matematis atau statistika teoritis. Ini memerlukan dasar matematika yang kuat dan mendalam. Yang dibahas antara lain penurunan sifat – sifat, dalil – dalil, rumus – rumus, menciptakan model – model dan segi – segi lainnya yang teoritis dan matematis. Yang kedua yaitu mempelajari statistika semata – mata dari segi penggunaannya. Aturan – aturan,
24
rumus – rumus, sifat – sifat dan sebagainya yang telah diciptakan oleh statisitika teoritis, diambil dan digunakan dalam berbagai bidang pengetahuan. Jadi, tidak dipersoalkan bagaimana didapatnya rumus – rumus atau aturan – aturan, melainkan hanya dipentingkan bagaimana cara, teknik atau metoda statistika digunakan. Statistik pada dasarnya dibagi ke dalam 2 pokok masalah yaitu: 1. Statistik Deskriptif, merupakan ilmu yang mempelajari bagaimana cara menyajikan, menyusun maupun mengukur nilai – nilai data yang tersedia / terkumpul dari suatu penelitian, sehingga akhirnya nanti dapat diperoleh suatu gambaran yang jelas serta penyusunan data yang lebih baik sehingga mudah dimengerti oleh banyak orang, dan statistik deskriptif ini merupakan suatu landasan analisis statistik yang cukup penting dalam mempelajari statistik induktif. 2. Statistik Induktif, merupakan ilmu statistik yang mempelajari mengenai cara – cara di dalam pengambilan / penarikan suatu kesimpulan dari populasi, dimana penarikan kesimpulan ini biasanya didasarkan pada data yang diperoleh dalam suatu bagian dari populasi tersebut (sampel) atau penarikan kesimpulan tersebut didasarkan pada suatu pengujian (test) yang dilakukan terhadap hasil observasi pengamatan sampelnya. (Samsubar Saleh, 1998)
2.4.1
Peranan Statistik Secara garis besar, peranan statistika dalam berbagai bidang kehidupan
adalah sebagai berikut,
25
1. Dalam bidang ekonomi dan manajemen perusahaan a. Bidang produksi i. Penetapan standar kualitas dan pengawasan kualitas. ii. Pengawasan terhadap efisiensi kerja. iii. Tes terhadap metode atau produk baru. b. Bidang akuntansi i. Penyesuaian yang bertalian dengan perubahan harga. ii. Hubungan antara ongkos dan volume produksi. c. Bidang pemasaran i. Penyelidikan tentang preferensi konsumen. ii. Penelitian potensi pasar produk. iii. Penetapan harga. iv. Penelitian terhadap efektifnya cara mengiklankan produk. v. Tes terhadap efektifnya metode – metode penjualan yang berbeda. 2. Dalam penelitian a. Penyusunan model – model statistik dari perumusan hipotenis yang bersifat operasional untuk pengajian secara sistematis. b. Perancangan pengumpulan data secara efisien baik dalam bentuk teknik penarikan contoh maupun perancangan percobaan. c. Penyajian dan penerapan data. d. Penganalisaan data dalam bentuk pendugaan parameter populasi dan pengujian hipotesis.
26
e. Penafsiran hasil – hasil analisis data ke dalam konteks (bahasa) bidang item yang sedang diteliti. (Samsubar Saleh, 1998) Secara garis besar, peranan statistik dalam melakukan penelitian pada masalah tertentu dapat dilihat pada gambar 2.2, Mulai
Pengumpulan data
Klasifikasi Tabulasi Data
Presentasi Data
Statistik Deskriptif
Bila Ya, maka gunakan informasi sampel untuk digunakan mengetahui sifat sifat populasinya
Apakah Informasi Data dari Sampel
Bila Tidak, gunakan data sensus untuk menganalisa sifat sifat populasinya
Buatlah Kesimpulan terhadap Sifat - sifat Populasi tersebut
Berhenti
Gambar 2.2 Peranan statistik dalam melakukan penelitian Sumber: Samsubar Saleh, 1998
2.4.2
Data Statistik
Statistik Induktif
27
Keterangan atau ilustrasi mengenai sesuatu hal bisa berbentuk kategori, misalnya rusak, baik, senang, puas, berhasil, gagal, dan sebagainya, atau bisa berbentuk bilangan. Semuanya ini dinamakan data atau lengkapnya data statistik. Data yang berbentuk bilangan disebut data kuantitatif, harganya berubah – ubah atau bersifat variabel. Dari nilainya, dikenal dua golongan data kuantitatif yaitu, 1. Data dengan variabel diskrit atau singkatnya disebut data diskrit. 2. Data dengan variabel kontinu atau singkatnya disebut data kontinu. Hasil menghitung atau membilang merupakan data diskrit sedangkan hasil pengukuran merupakan data kontinu. Contoh data diskrit yaitu, 1. Keluarga A mempunyai lima anak laki – laki dan tiga anak perempuan. 2. Kabupaten B sudah membangun 85 gedung sekolah. Sedang contoh data kontinu dapat dilihat dalam tiga hal berikut, 1. Tinggi badan seseorang, misalnya 155 cm, 167 cm, atau 172,4 cm. 2. Luas daerah sebesar 425,7 km2. 3. Kecepatan mobil 60 km / jam. Data yang bukan kuantitatif disebut data kualitatif. Ini tidak lain daripada data yang dikategorikan menurut lukisan kualitas objek yang dipelajari. Golongan ini dikenal pula dengan nama atribut. Misalnya sembuh, rusak, gagal, berhasil, dan sebagainya. Menurut sumbernya, data terbagi dari dua macam yaitu,
1. Data Intern
28
Pengusaha mencatat segala aktivitas perusahaannya sendiri, misalnya keadaan pegawai, pengeluaran, keadaan barang di gudang, hasil jualan, keadaan produksi pabriknya dan lain – lain aktivitas yang terjadi di dalam perusahan itu. Data yang diperoleh demikian merupakan data intern. 2. Data Ekstern. Dalam berbagai situasi, untuk perbandingan misalnya, diperlukan data dari sumber lain di luar perusahaan tadi. Data demikian merupakan data ekstern. Data ekstern dibagi menjadi dua yaitu, a. Data Ekstern Primer atau disingkat Data Primer, yaitu data yang dikeluarkan dan dikumpulkan oleh badan yang sama. b. Data Ekstern Sekunder atau disingkat Data Sekunder, yaitu data yang dikeluarkan dan dikumpulkan oleh badan yang berbeda. Data yang baru dikumpulkan dan belum pernah mengalami pengolahan apapun dikenal dengan nama data mentah. Satu hal yang harus diperhatikan yaitu bagaimanapun dan dari manapun data diperoleh, kebenaran data yang diperoleh harus dapat diandalkan. (Sudjana, 1989)
2.4.3
Order Statistics Statistik
(statistics)
merupakan
metode
untuk
mengkombinasikan
sekumpulan data yang sangat banyak (seperti nilai tugas dari seluruh kelas) menjadi sebuah nilai tunggal dari sekumpulan nilai yang kecil yang dapat memberikan informasi mengenai data secara keseluruhan. Kata „order statistics‟ menunjuk kepada metode statistik yang hanya bergantung pada urutan dari data dan bukan pada nilai numeriknya. Sebagai contoh, nilai rata-rata dari data, yang
29
sangat mudah dihitung dan sangat penting sebagai estimasi dari sebuah nilai tengah, bukanlah sebuah nilai order statistic. Order statistic yang paling sering dipakai adalah median, yaitu nilai pada posisi tengah dari sekumpulan data yang terurut. Nilai median ini dapat dicari dengan mudah dengan waktu eksekusi terbaik O(n log n) dengan melakukan sorting, tetapi apakah mungkin untuk mendapatkan waktu eksekusi yang lebih baik ? Ya, mungkin saja, yaitu dengan waktu eksekusi terbaik O(n) dengan menggunakan metode divide-and-conquer yang akan dibahas pada subbab berikutnya. Proses penyelesaiannya berhubungan dengan permasalahan yang lebih umum yaitu seleksi (selection). Seleksi adalah suatu metode untuk menemukan nilai elemen ke-k dari sebuah daftar (list) dari n item, dimana nilai k berada di antara 1 dan n dan list tersebut diurutkan terlebih dahulu. Dalam hal ini, median merupakan kasus khusus, dimana k = n/2. (Cormen, et. al., 1990)
2.5
Metode Divide-and-Conquer Metode divide-and-conquer menyelesaikan problema dengan mencari dan
mengkombinasikan solusi dari subproblema-subproblema yang terdapat dalam problema tersebut. Algoritma divide-and-conquer membagi problema menjadi subproblema-subproblema yang tidak berhubungan satu sama lain (independen), menyelesaikan subproblema secara rekursif dan kemudian mengkombinasikan solusi-solusi yang dihasilkan untuk menyelesaikan problema asli. Pada konteks ini, algoritma divide-and-conquer bekerja lebih banyak dari yang seharusnya, menyelesaikan subproblema-subproblema secara berulang. (Cormen, et. al., 1990)
30
2.5.1
Penerapan Metode Divide-and-Conquer dalam Masalah Seleksi Algoritma
Randomized-Select
merupakan
algoritma
seleksi
yang
menerapkan metode divide-and-conquer. Algoritma ini memiliki waktu eksekusi yang lebih baik daripada algoritma naïve biasa yang melakukan sorting (bukan dengan quicksort). Algoritma ini memiliki waktu eksekusi terbaik sebesar O(n). Algoritma Randomized-Select ini dapat dirincikan sebagai berikut:
Algoritma ini juga menggunakan algoritma Randomized-Partition dalam proses kerjanya. Algoritma Randomized-Partition ini dapat dijabarkan sebagai berikut: RANDOMIZED-PARTITION (A, p, r) 1
i RANDOM (p, r)
2
exchange A[p] A[i]
3 return PARTITION (A, p, r)
(Cormen, et. al., 1990) Ilustrasi dari algoritma Randomized-Select ini dapat dilihat pada gambar 2.3 berikut ini:
31
Gambar 2.3 Ilustrasi Algoritma Randomized-Select Sumber : Cormen, et. al., 1990 Namun, algoritma Randomized-Select ini memiliki waktu eksekusi terburuk sebesar O(n2). Waktu eksekusi ini lebih buruk daripada waktu eksekusi terburuk dari algoritma naïve biasa yang menggunakan sorting yang hanya sebesar O(n log n) saja.
2.5.2
Problema Perusahaan Minyak (Oil Company Problem) Problema perusahaan minyak (Oil Company Problem) dapat dijabarkan
sebagai berikut, seorang professor bekerja sebagai konsultan pada sebuah perusahaan minyak. Perusahaan tersebut berencana untuk membangun sebuah pipa saluran besar yang membentang dari timur ke barat melewati n buah sumur dari ladang minyak. Dari setiap sumur, sebuah cabang pipa saluran dihubungkan langsung ke pipa saluran utama pada jarak yang minimum (shortest path) baik utara maupun selatan. Selain itu, juga diberikan koordinat x dan y dari setiap sumur. Permasalahannya adalah bagaimana sang professor menentukan lokasi optimal dari pipa saluran utama. Nilai median dari koordinat y dari setiap sumur merupakan solusi optimal yang dapat dicari dalam waktu linier. Nilai median ini dapat dicari dengan menggunakan bantuan algoritma Randomized-Select diatas. (Cormen, et. al., 1990).
BAB III METODE PENELITIAN
3.1.
Tempat dan Jadwal Penelitian Penelitian ini dimulai dari Desember 2014 sampai Maret 2015. Penelitian
ini dilakukan untuk mengumpulkan data yang diperlukan dengan menggunakan buku-buku ataupun referensi lainnya yang berhubungan dengan algoritma dan pemrograman dalam proses perancangan dan pembuatan sistem usulan. Berikut ini dijabarkan jadwal penelitian yang dapat dilihat pada Tabel 3.1. Tabel 3.1 Jadwal Penelitian
Waktu Kegiatan
Desember
Januari
Februari
Maret
2014
2015
2015
2015
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Identifikasi Masalah Pengumpulan Data Analisis Sistem Perancangan Sistem Pembangunan Uji coba Sistem Penulisan Lap. Skripsi
31
32
3.2.
Kerangka Kerja Dalam melakukan perancangan sistem, diperlukan sebuah kerangka kerja yang
dijadikan sebagai panduan mengenai langkah-langkah yang harus dikerjakan. Adapun kerangka kerja yang dibuat penulis seperti gambar 3.1.
Pengumpulan Data
Analisa Sistem
Perancangan Sistem
Pembangunan Sistem
Uji coba Sistem Gambar 3.1 Kerangka Kerja Penelitian
3.2.1. Metode Pengumpulan Data Untuk memperoleh data atau keterangan yang diperlukan untuk menyelesaikan penelitian skripsi ini, maka penulis melakukan pengambilan data melalui dua metode penelitian yaitu metode Penelitian Kepustakaan (Library Research) dan Observasi di Perpustakaan STMIK-TIME. Penulis mengumpulkan informasi melalui buku-buku, maupun bahan referensi lainnya yang berhubungan dengan Algoritma dan Pemrograman.
33
Sedangkan, metodologi yang digunakan untuk melakukan perancangan sistem baru adalah model Waterfall. Gambaran model Waterfall dapat dilihat pada gambar 3.2. berikut:
Gambar 3.2 Model Waterfall
Langkah-langkah penyelesaian skripsi dengan menggunakan model waterfall adalah sebagai berikut : a. Membaca dan mempelajari buku-buku yang berhubungan dengan Algoritma dan Pemrograman. b. Mempelajari cara kerja dari Oil Company Problem. c. Mempelajari teknik-teknik dasar pemrograman dengan menggunakan bahasa pemrograman Microsoft Visual Basic.NET 2010. d. Merancang interface untuk perangkat lunak. e. Merancang suatu perangkat lunak dengan menggunakan bahasa pemrograman Microsoft Visual Basic.NET 2010. f. Menguji perangkat lunak dan memperbaiki kesalahan (error) yang muncul.
34
3.2.2. Analisa Sistem Pada tahap ini penulis akan menganalisis permasalahan lebih mendalam mengenai masalah yang ditemukan dalam perancangan sistem, sehingga dapat dicari solusi untuk menyelesaikan permasalahan tersebut. Salah satu problema yang menerapkan teorema median adalah problema perusahaan minyak (oil company problem) yang dapat dideskripsikan sebagai berikut, seorang professor bekerja sebagai konsultan pada sebuah perusahaan minyak. Perusahaan tersebut berencana untuk membangun sebuah pipa saluran besar yang membentang dari timur ke barat melewati n buah sumur dari ladang minyak. Dari setiap sumur, sebuah cabang pipa saluran dihubungkan langsung ke pipa saluran utama pada jarak yang minimum (shortest path) baik utara maupun selatan. Selain itu, juga diberikan koordinat x dan y dari setiap sumur. Permasalahannya adalah menentukan lokasi optimal dari pipa saluran utama.
3.2.3. Perancangan Sistem Proses perancangan sistem akan dimulai dari proses desain tampilan antarmuka pemakai (user interface) dari perangkat lunak. Gambar-gambar yang diperlukan tersebut diperoleh dari berbagai sumber di internet. Adapun gambargambar tersebut dibuat dengan menggunakan aplikasi Adobe Photoshop CS dan disimpan ke dalam format *.JPG. Setelah itu, proses dilanjutkan dengan membuat menu yang terdapat pada perangkat lunak dan melakukan penyusunan letak objekobjek pada perangkat lunak.
35
3.2.4. Pembangunan Sistem Perangkat lunak juga menggunakan beberapa buah komponen Visual Basic, seperti button sebagai tombol, textbox sebagai tempat input, label untuk menampilkan tulisan, dan komponen lainnya. Aplikasi yang digunakan dalam proses pembangunan sistem mencakup: 1. Microsoft Visual Basic.NET 2010 yang digunakan untuk membuat coding dari perangkat lunak. 2. Adobe Photoshop CS yang digunakan untuk mendesain dan menyimpan gambar yang akan digunakan dalam perangkat lunak.
3.2.5. Uji Coba Sistem Setiap aplikasi perangkat lunak yang telah dibangun harus dilakukan uji coba terlebih dahulu sebelum digunakan, untuk mengetahui apakah aplikasi perangkat lunak yang dibangun sudah sesuai dengan yang diharapkan dan bekerja dengan baik atau masih terdapat kesalahan (error). Setiap kesalahan (error) yang terjadi akan diperbaiki kembali. Sistem yang telah selesai dirancang akan coba diimplementasikan dengan memberikan beberapa contoh input untuk mengetahui apakah sistem yang dirancang sudah sesuai kebutuhan.
BAB IV ANALISA DAN PERANCANGAN
4.1.
Analisa Proses pencarian nilai median, yaitu nilai pada posisi tengah dari
sekumpulan data yang terurut dapat menggunakan beberapa cara. Cara termudah yaitu dengan melakukan sorting, kemudian mengambil nilai pada posisi ke-k. Namun, cara ini memiliki waktu eksekusi yang relatif agak lama. Cara lainnya yaitu dengan menerapkan metode divide-and-conquer untuk menyelesaikan permasalahan median tersebut. Pada pembahasan kali ini, akan dibahas proses pencarian nilai median dengan menggunakan metode divide-and-conquer. Salah satu problema yang menerapkan teorema median adalah problema perusahaan minyak (oil company problem) yang dapat dideskripsikan sebagai berikut, seorang professor bekerja sebagai konsultan pada sebuah perusahaan minyak. Perusahaan tersebut berencana untuk membangun sebuah pipa saluran besar yang membentang dari timur ke barat melewati n buah sumur dari ladang minyak. Dari setiap sumur, sebuah cabang pipa saluran dihubungkan langsung ke pipa saluran utama pada jarak yang minimum (shortest path) baik utara maupun selatan. Selain itu, juga diberikan koordinat x dan y dari setiap sumur. Permasalahannya adalah menentukan lokasi optimal dari pipa saluran utama. Lokasi optimal dari pipa saluran utama pada problema di atas dapat dicari dengan cara menentukan nilai median dari koordinat y. Hal ini dapat dibuktikan dengan memeriksa nilai yang dihasilkan oleh fungsi biaya berikut,
36
37
dimana: C
= biaya yang diperlukan
y
= nilai median
yi
= nilai koordinat-y dari setiap sumur
n
= jumlah data Jika diberikan sebuah ketentuan bahwa y tidak boleh sama dengan
koordinat y dari salah satu sumur yang terdapat dalam ladang minyak, maka dengan koordinat sumur tersebut telah diurutkan, dapat dilihat perubahan nilai biaya dari setiap sumur. Kemudian, perlu ditambahkan sebuah nilai biaya (yi+1 – yi) pada nilai total biaya semua sumur yang berada di bawah yi dan dikurangkan nilai (yi+1 – yi) pada total biaya yang berada di atas yi. Set persamaan ini menjadi 0, maka akan didapatkan nilai y, dimana biaya yang diperlukan adalah paling minimal. Untuk data yang telah diurutkan, jika jumlah data berupa bilangan ganjil, maka nilai median terletak pada posisi ke-[(n + 1) / 2], sedangkan jika jumlah data berupa bilangan genap, maka nilai median terletak pada posisi ke-[n / 2]. Metode divide-and-conquer akan menyelesaikan problema dengan cara membagi problema menjadi subproblema-subproblema yang tidak berhubungan satu sama lain (independen), menyelesaikan subproblema secara rekursif dan kemudian mengkombinasikan solusi-solusi yang dihasilkan untuk menyelesaikan problema asli. Penerapan metode divide-and-conquer dalam menyelesaikan masalah median dapat dideskripsikan sebagai berikut:
38
1. Tentukan nilai n, yang merupakan jumlah data. 2. Tentukan deretan nilai A sebanyak n buah. 3. Hitung nilai m dengan menggunakan rumusan berikut, m = (1 + n) / 2 4. Hitung nilai median dengan menggunakan bantuan algoritma randomizedselect. median = (randomized_select(A,1,n,m) + randomized_select(A,1,n,m+1)) / 2 Algoritma randomized-select yang digunakan dapat dideskripsikan sebagai berikut: fungsi randomized-select(A, p, r, i) jika p = r maka nilai fungsi = A[p] q = randomized-partition(A,p,r) k=q–p+1 jika i = k maka nilai fungsi = A[q] jika tidak, jika i < k maka nilai fungsi = randomized-select(A, p, q – 1, i) jika tidak, maka nilai fungsi = randomized-select(A, q + 1, r, i – k)
Dalam
algoritma
randomized-select
juga
digunakan
randomized-partition yang dapat dideskripsikan sebagai berikut: fungsi randomized-partition(A, p, r) i = ambil sebuah nilai acak yang berada dalam range(p, r) tukar nilai A[p] dan A[i] nilai fungsi = partition(A, p, r)
algoritma
39
Dalam algoritma randomized-partition di atas juga digunakan sebuah algoritma partition yang dapat dideskripsikan sebagai berikut: fungsi partition(A, p, r) x = A[p] i=p–1 j=r+1 selama ekspresi (i < j) masih bernilai true, lakukan proses berikut hitung nilai j = j – 1, hingga nilai A[j] ≤ x hitung nilai i = i + 1, hingga nilai A[i] ≥ x jika i < j maka tukar nilai A[i] dan A[j] jika tidak, maka nilai fungsi = j
4.2.
Perancangan Perancangan permainan Oil Company Problem dengan menggunakan
teorema Medians and Order Statistics ini menggunakan bahasa pemograman Microsoft Visual Basic.NET 2010. Perangkat lunak memiliki beberapa form, antara lain: 1. Form Utama. 2. Form Permainan. 3. Form User. 4. Form High Score. 5. Form About. 6. Perancangan database
40
Selain itu, perangkat lunak juga menggunakan beberapa buah komponen Visual Basic, seperti button sebagai tombol, textbox sebagai tempat input dan label untuk menampilkan tulisan
4.2.1. Form Utama Fungsi form ini adalah sebagai penghubung (link) ke form-form lainnya yang terdapat dalam perangkat lunak. Tampilan form ‟Utama‟ dapat dilihat pada gambar 4.1 berikut. 5 Perancangan Permainan Oil Company Problem dengan Menggunakan Teorema Medians dan Order Statistics
x 1
Nama User : [Nama Pemain] Permainan 2 Daftar Nilai Tertinggi
Mengenai
3
Keluar 4
Gambar 4.1 Tampilan Form Utama Keterangan: 1 : link label ‟Permainan‟ untuk menampilkan form Permainan. 2 : link label ‟Daftar Nilai Tertinggi‟ untuk menampilkan form High Score. 3 : link label ‟Mengenai‟ untuk menampilkan form About. 4 : tombol ‟Keluar‟, untuk menutup perangkat lunak. 5 : link label ‟Nama Pemain‟ untuk menampilkan form User.
41
4.2.2. Form Permainan Form ini berfungsi untuk bermain Oil Company Problem dengan menentukan tempat posisi dari sumur-sumur minyak. Tampilan form ‟Permainan‟ dapat dilihat pada gambar 4.2 berikut. x
Permainan Oil Company Problem
1
2
3
4
6
7
5 Pause
8
Proses Tutup 9
Gambar 4.2 Tampilan Form Permainan Keterangan: 1 : daerah tampilan sisa waktu permainan. 2 : daerah tampilan nilai yang diperoleh pemain. 3 : daerah tampilan keterangan mengenai cara bermain. 4 : daerah tampilan informasi mengenai level permainan. 5 : daerah tempat penentuan lokasi sumur. 6 : daerah tampilan informasi mengenai sasaran permainan. 7 : link label ‟Pause‟ untuk menghentikan permainan secara sementara. 8 : link label ‟Proses‟ untuk mengecek jawaban yang diberikan oleh pemain.
42
Jika benar, maka proses akan dilanjutkan ke soal berikutnya dan nilai pemain akan ditambah sebesar 20. Jika tidak, maka akan muncul pesan kesalahan dan nilai pemain akan dikurangi sebesar 10. 9 : link label ‟Tutup‟, untuk menutup form dan kembali ke form ‟Utama‟.
4.2.3. Form User Form ini berfungsi sebagai tempat pemilihan data nama user yang akan digunakan dalam permainan ataupun untuk membuat data nama user baru yang akan disimpan ke dalam database Microsoft Access 2007. Tampilan form User dapat dilihat pada gambar 4.3 berikut. Daftar User
x
1
Tambah
2
Hapus
3
Pilih
Batal
4
5
Gambar 4.3 Tampilan Form User Keterangan: 1 : listbox untuk menampilkan daftar user yang tersimpan dalam database. 2 : tombol ‟Tambah‟, untuk menambah user baru yang akan disimpan ke dalam database.
43
3 : tombol ‟Hapus‟, untuk menghapus nama user yang dipilih. 4 : tombol ‟Pilih‟, untuk menyimpan data user yang dipilih ke dalam memori sementara. Setelah itu, sistem akan menutup form dan kembali ke form ‟Utama‟. 5 : tombol ‟Batal‟, untuk menutup form dan kembali ke form ‟Utama‟.
4.2.4. Form High Score Form ini berfungsi untuk menampilkan daftar nilai tertinggi yang diperoleh pemain. Daftar nilai tertinggi yang ditampilkan hanya sebanyak sepuluh nilai tertinggi saja. Data ini akan dibaca dari database Microsoft Access 2007. Tampilan form High Score dapat dilihat pada gambar 4.4 berikut. High Score
1
Hapus Semua
Keluar
2
3
Gambar 4.4 Tampilan Form High Score Keterangan: 1 : listbox untuk menampilkan daftar sepuluh nilai tertinggi yang diperoleh user yang tersimpan dalam database.
44
2 : tombol ‟Hapus Semua‟, untuk menghapus semua daftar nilai yang diperoleh user yang tersimpan dalam database. Setelah mengklik tombol ini, maka database High Score akan menjadi kosong. 3 : tombol ‟Keluar‟, untuk menutup form dan kembali ke form ‟Utama‟.
4.2.5. Form About Form ini berfungsi untuk menampilkan identitas pembuat perangkat lunak (penyusun skripsi). Tampilan form ‟About‟ dapat dilihat pada gambar 4.5 berikut.
1
2
Tutup
3
Gambar 4.5 Tampilan Form About Keterangan: 1 : daerah tampilan judul perangkat lunak. 2 : daerah tampilan data pribadi dari pembuat perangkat lunak. 3 : tombol ‟Tutup‟, untuk menutup form dan kembali ke form ‟Utama‟.
45
4.2.6. Perancangan Database Perancangan database dilakukan dengan menggunakan Microsoft office Access 2007. Desain database dimaksudkan untuk mendefinisikan isi atau struktur tabel. Entitas yang digunakan dalam perancangan database adalah sebagai berikut. 1. High Score, berisi tentang daftar sepuluh nilai tertinggi. Rancangan tabel High Score dapat dilihat pada tabel 4.1. berikut: Tabel 4.1. Tabel High Score Nama Input
Tipe Data
Panjang Maksimum
Text
30
Number
Integer
Tingkat
Text
6
Waktu
Date/Time
-
NamaUser Nilai
2. User List, berisi tentang daftar nama user. Rancangan tabel User List dapat dilihat pada tabel 4.2. berikut: Tabel 4.2. Tabel User List Nama Input
Tipe Data
Panjang Maksimum
NamaUser
Text
30
Keterangan
Text
50
Berdasarkan entitas yang diperoleh di atas, maka dapat dibuat hubungan antarentitasnya seperti ditunjukkan pada gambar 4.6 berikut ini:
46
Gambar 4.6 Relationship Tabel Pada Database
BAB V HASIL DAN PEMBAHASAN
5.1
Hasil Pembahasan mengenai hasil mencakup interface program, algoritma dan
spesifikasi hardware dan software.
5.1.1
Interface Program Untuk menjalankan aplikasi yang dibuat, maka dapat mengklik file ‟Oil
Company Problem.exe‟ yang terdapat pada folder bin >> debug, sehingga sistem akan menampilkan form Utama yang merupakan form awal yang akan ditampilkan pada saat menjalankan aplikasi. Tampilan form Utama dapat dilihat pada gambar 5.1 berikut:
Gambar 5.1 Form Utama
47
48
Pada form Utama terdapat beberapa link yang dapat diakses, yaitu: 1. Link ‟Permainan‟, yang berfungsi untuk menampilkan form Permainan yang digunakan untuk bermain Oil Company Problem. 2. Link ‟Daftar Nilai Tertinggi‟, yang berfungsi untuk menampilkan sepuluh daftar nilai tertinggi yang diperoleh pemain. 3. Link ‟Mengenai‟, yang berfungsi untuk menampilkan data pribadi dari pembuat perangkat lunak. 4. Link ‟Keluar‟, yang berfungsi untuk menutup perangkat lunak. 5. Link ‟Nama Pemain‟, yang berfungsi untuk melakukan penambahan dan pemilihan user yang akan digunakan dalam permainan. Untuk bermain Oil Company Problem, maka langkah pertama yang harus dilakukan adalah memilih nama user yang akan digunakan dalam permainan, yaitu dengan mengklik link ‟Nama Pemain‟, sehingga sistem akan menampilkan form User seperti terlihat pada gambar 5.2 berikut:
Gambar 5.2 Form User Pemakai dapat menambah data nama user baru dengan mengklik tombol ‟Tambah‟ sehingga sistem akan menampilkan input box pada gambar 5.3 berikut:
49
Gambar 5.3 Input Box Tambah User Pemakai dapat mengisi data nama user dan mengklik tombol ‟OK‟ untuk menyimpan data nama user yang dimasukkan ke dalam database. Untuk membatalkan proses pengisian data user, maka pemakai dapat mengklik tombol ‟Cancel‟. Setelah melakukan pengisian data user, maka pemakai dapat bermain Oil Company Problem. Jika ada nama pemain yang ingin dihapus maka pemakai dapat mengklik tombol ‟Hapus‟. Dengan mengklik link ‟Permainan‟, sistem akan menampilkan form Permainan seperti terlihat pada gambar 5.4 berikut:
Gambar 5.4 Form Permainan
50
Permainan akan dimulai dari level 1 dan waktu yang diberikan hanya 300 detik saja. Tidak ada penambahan waktu permainan jika memasuki level berikutnya, permainan akan berakhir jika waktu yang diberikan telah habis. Nilai dan level yang diperoleh pemain akan disimpan ke dalam database Microsoft Access 2007 pada saat pemakai keluar dari permainan. Daftar nilai tertinggi ini dapat dilihat pada form High Score yang dapat ditampilkan dengan mengklik link ‟Daftar Nilai Tertinggi‟ yang terdapat pada form Utama, sehingga sistem akan menampilkan form Daftar Nilai Tertinggi seperti yang terlihat pada gambar 5.5 berikut:
Gambar 5.5 Form Daftar Nilai Tertinggi Terakhir, apabila pemakai ingin menampilkan data pribadi dari pembuat perangkat lunak, maka pemakai dapat mengklik link ‟Mengenai‟ sehingga sistem akan menampilkan form Mengenai seperti yang terlihat pada gambar 5.6 berikut:
51
Gambar 5.6 Form Mengenai
5.1.2
Algoritma Algoritma
yang
digunakan
untuk
membangun
perangkat
lunak
pemahaman secara visualisasi teorema Medians and Order Statistics dengan studi kasus Oil Company Problem ini dapat dibagi menjadi beberapa bagian, yaitu: 1. Algoritma Median. Algoritma
ini
menggunakan
digunakan bantuan
untuk
algoritma
menghitung
nilai
median
divide-and-conquer.
memerlukan beberapa buah input yaitu: a. Parameter numerik pnN yang merupakan jumlah data. b. Parameter array pnA yang merupakan kumpulan nilai data.
dengan
Algoritma
ini
52
Algoritma ini akan menghasilkan sebuah nilai real yang merupakan nilai median dari sekumpulan nilai data tersebut. Algoritma Median adalah sebagai berikut: a. Hitung nilai nM = (pnN + 1) div 2. b. Hitung
nilai
Median
dengan
menggunakan
bantuan
fungsi
Randomized_Select(pnA, pnP, pnR, pnI) seperti berikut: Median
=
(Randomized_Select(pnA,
1,
pnN,
nM)
+
Randomized_Select(pnA, 1, pnN, nM + 1)) / 2 2. Algoritma Randomized-Select. Algoritma ini digunakan untuk menghitung nilai pada posisi ke-i dari suatu deretan bilangan dengan menerapkan bilangan acak dalam proses kerja algoritmanya. Algoritma ini memerlukan beberapa buah input yaitu: a. Parameter array pnA yang merupakan kumpulan nilai data. b. Parameter numerik pnP yang merupakan posisi awal. c. Paramater numerik pnR yang merupakan posisi akhir. d. Parameter numerik pnI yang merupakan posisi dari nilai yang akan dipilih. Algoritma ini akan menghasilkan sebuah nilai bertipe data bilangan bulat positif. Algoritma dari fungsi rekursif Randomized-Select adalah sebagai berikut: a. Jika pnP = pnR maka nHasil = pnA(pnP). b. Hitung
nilai
Q
dengan
menggunakan
Randomized_Partition(pnA, pnP, pnR) seperti berikut: nQ = Randomized_Partition(pnA, pnP, pnR) c. Hitung nilai nK = nQ – pnP + 1.
bantuan
fungsi
53
d. Jika pnI = nK maka set nilai nHasil = pnA(nQ). e. Jika tidak, jika pnI < nK maka set nilai nHasil = Randomized_Select(pnA, pnP, nQ – 1, pnI). {rekursif} f. Jika tidak, maka set nilai nHasil = Randomized_Select(pnA, nQ + 1, pnR, pnI – nK). {rekursif} g. Kembalikan nilai nHasil. 3. Algoritma Randomized-Partition. Algoritma ini digunakan untuk menghitung nilai dari fungsi partisi dengan menggunakan bantuan bilangan acak dalam proses kerja algoritmanya. Algoritma ini memerlukan beberapa buah input yaitu: a. Parameter array pnA yang merupakan kumpulan nilai data. b. Parameter numerik pnP yang merupakan posisi awal. c. Paramater numerik pnR yang merupakan posisi akhir. Algoritma ini akan menghasilkan sebuah nilai bertipe data bilangan bulat positif. Algoritma dari fungsi Randomized-Partition adalah sebagai berikut: a. Ambil nilai acak nI antara pnP sampai pnR. b. Set nilai nTemp = pnA(pnP). c. Set nilai pnA(pnP) = pnA(nI). d. Set nilai pnA(nI) = nTemp. e. Kembalikan nilai Partition(pnA, pnP, pnR). 4. Algoritma Partition. Algoritma ini digunakan untuk menghitung nilai dari fungsi partisi yaitu posisi pemecahan deretan bilangan menjadi dua bagian. Algoritma ini memerlukan beberapa buah input yaitu:
54
a. Parameter array pnA yang merupakan kumpulan nilai data. b. Parameter numerik pnP yang merupakan posisi awal. c. Paramater numerik pnR yang merupakan posisi akhir. Algoritma ini akan menghasilkan sebuah nilai bertipe data bilangan bulat positif. Algoritma dari fungsi Partition adalah sebagai berikut: a. Set nilai nX = pnA(pnP). b. Set nilai nI = pnP – 1. c. Set nilai nJ = pnR + 1. d. Selama (nI < nJ) lakukan proses berikut: 1) Ulangi proses berikut hingga pnA(nJ) nX, maka set nilai nJ = nJ – 1. 2) Ulangi proses berikut hingga pnA(nI) nX, maka set nilai nI = nI + 1. 3) Jika nI < nJ maka: a) Set nilai nTemp = pnA(nI). b) Set nilai pnA(nI) = pnA(nJ). c) Set nilai pnA(nJ) = nTemp. 4) Jika tidak, maka kembalikan nilai nJ. 5. Algoritma Randomized-QuickSort. Algoritma ini digunakan untuk mengurutkan deretan bilangan dengan menerapkan konsep algoritma divide-and-conquer. Algoritma ini memerlukan beberapa buah input yaitu: a. Parameter array pnA yang merupakan kumpulan nilai data. b. Parameter numerik pnP yang merupakan posisi awal array.
55
c. Paramater numerik pnR yang merupakan posisi akhir array. Algoritma ini akan menghasilkan sebuah nilai bertipe data bilangan bulat positif. Algoritma dari prosedur rekursif Randomized-QuickSort adalah sebagai berikut: Jika pnP < pnR maka: 1) Set nilai nQ = Randomized_Partition(pnA, pnP, pnR). 2) Panggil Randomized_QuickSort(pnA, pnP, nQ). {rekursif} 3) Panggil Randomized_QuickSort(pnA, nQ + 1, pnR). {rekursif}
5.1.3
Spesifikasi Hardware dan Software Spesifikasi perangkat keras yang direkomendasikan untuk menjalankan
perangkat lunak ini adalah sebagai berikut : 1.
Prosesor Core 2 Duo 2.1 GHz.
2.
Hard disk dengan minimal free space 500 MB.
3.
Memori sebesar 256 MB.
4.
Monitor SVGA dengan resolusi 1024 x 768.
5.
VGA Card 64 MB.
6.
Keyboard dan Mouse. Adapun perangkat lunak (software) yang digunakan untuk menjalankan
aplikasi ini adalah sistem operasi Microsoft Windows XP.
56
5.2 Pembahasan Kelebihan dari aplikasi permainan Oil Company Problem dengan menggunakan teorema Medians dan Order Statistics ini adalah sebagai berikut: 1. Aplikasi menyediakan interface untuk memilih dan membuat nama pemain baru. 2. Posisi pipa utama dapat dibentangkan secara horizontal ataupun vertikal. 3. Aplikasi dapat digunakan untuk melatih pemakai dalam menentukan nilai median dari sekumpulan nilai. Sementara itu, kelemahan dari aplikasi permainan Oil Company Problem dengan menggunakan teorema Medians dan Order Statistics ini adalah sebagai berikut: 1. Animasi dari aplikasi masih sangat sederhana, sehingga aplikasi permainan yang dibuat kurang menarik. 2. Aplikasi tidak memiliki fitur yang dapat digunakan pemakai untuk memahami proses kerja dari penerapan teorema Medians dan Order Statistics untuk mencari solusi dari Oil Company Problem.
BAB VI KESIMPULAN DAN SARAN
6.1
Kesimpulan Setelah menyelesaikan perangkat lunak pemahaman secara visualisasi teorema Medians and Order Statistics dengan studi kasus Oil Company Problem, penulis menarik kesimpulan sebagai berikut:
1. Penelitian ini dapat digunakan untuk membantu pemahaman terhadap penerapan algoritma divide-and-conquer dalam menyelesaikan permasalahan yang berhubungan dengan median. 2. Perangkat lunak dapat digunakan untuk menyelesaikan persoalan perusahaan minyak dalam menentukan posisi pipa utama yang menghubungkan sumur minyak yang terdapat pada ladang minyak. Persoalan lain yang dapat diselesaikan adalah persoalan yang memiliki konsep sama dengan persoalan perusahaan minyak di atas, seperti persoalan penentuan lokasi pipa air bersih yang harus dipasang pada suatu desa yang menghubungkan semua rumah penduduk.
6.2
Saran
Penulis ingin memberikan beberapa saran yang mungkin dapat membantu dalam pengembangan perangkat lunak ini yaitu: 1. Pemahaman terhadap algoritma dapat diperjelas dengan menambahkan suara (audio) dan animasi yang lebih baik dengan menggunakan aplikasi Adobe Flash.
57
58
2. Perangkat lunak dapat ditambahkan simulasi sederhana, dimana user dapat menentukan sendiri letak pipa saluran utama. Setelah itu, perangkat lunak akan mengecek apakah solusi yang diberikan user sesuai dengan solusi yang dihasilkan dari algoritma atau tidak. 3. Perangkat lunak dapat dikembangkan lebih lanjut dengan menggunakan aplikasi eclipse atau android application sehingga dapat dimainkan pada smart phone.
DAFTAR PUSTAKA
Cormen, H., Leiserson, E., Rivest, L., 1990, Introduction to Algorithms, Mc Graw Hill Book Company. Hariyanto, B., 2003, Struktur Data, Edisi Kedua, Informatika, Bandung. Samsubar Saleh, 1998, Statistik Deskriptip, UPP AMP YKPN. Sudjana, 1989, Metoda Statistika, Tarsito, Bandung. Putra, R., 2009, The Best Source Code Visual Basic, PT. Elex Media Komputindo. Sadeli, M., 2010, Visual Basic.net 2010, Maxikom.
59