• Tidak ada hasil yang ditemukan

PERANCANGAN PERMAINAN OIL COMPANY PROBLEM DENGAN MENGGUNAKAN TEOREMA MEDIANS DAN ORDER STATISTICS

N/A
N/A
Protected

Academic year: 2021

Membagikan "PERANCANGAN PERMAINAN OIL COMPANY PROBLEM DENGAN MENGGUNAKAN TEOREMA MEDIANS DAN ORDER STATISTICS"

Copied!
71
0
0

Teks penuh

(1)

ORDER STATISTICS

SKRIPSI

Oleh:

HENDY PRATAMA NIM: 1144093

PROGRAM STUDI TEKNIK INFORMATIKA

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK TIME

MEDAN 2015

(2)

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

divide-and-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-and-conquer 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

(3)

ABSTRACT

Oil Company Problem is a problem of Medians and Order Statistics theorem. This problem could be solved quickly and efficiently by using divide-and-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

(4)

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

(5)

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

(6)

DAFTAR ISI

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... viii

DAFTAR TABEL ... ix

DAFTAR LAMPIRAN ... x

BAB I 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

(7)

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

(8)

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

(9)

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

(10)

DAFTAR TABEL

Tabel 3.1. Jadwal Penelitian... 31 Tabel 4.1. Tabel High Score ... 45 Tabel 4.2. Tabel User List ... 45

(11)

DAFTAR LAMPIRAN

CD program

Surat keputusan dosen pembimbing skripsi Daftar riwayat hidup mahasiswa

(12)

1

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

(13)

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.

(14)

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.

(15)

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.

(16)

5

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 aturan-aturan 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)

(17)

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

(18)

(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.

(19)

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.

(20)

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

(21)

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.

(22)

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.

(23)

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.

(24)

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.

(25)

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)

(26)

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

(27)

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[2] = „B‟ A[3] = „C‟ A[4] = „D‟

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

A[5] = „E‟ A[6] = „F‟ A[7] = „G‟ A[8] = „H‟

(28)

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,

(29)

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

(30)

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]<A[I] do Inc(I); While A[J]<A[awal] do DEC(J); end; end;

(31)

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);

(32)

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:

Sedangkan, algoritma ini dari metode Randomize Quick Sort dapat dirincikan sebagai berikut,

RANDOMIZED-PARTITION (A, p, r)

1 i  RANDOM (p, r) 2 exchange A[p]  A[i] 3 return PARTITION (A, p, r)

RANDOMIZED-QUICKSORT (A, p, r)

1 if p < r

2 then q  RANDOMIZED-PARTITION (A, p, r)

3 RANDOMIZED-QUICKSORT (A, p, q)

(33)

(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.

(34)

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,

(35)

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,

(36)

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.

(37)

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 Apakah Informasi Data dari Sampel

Bila Ya, maka gunakan informasi

sampel untuk digunakan mengetahui sifat

-sifat populasinya Bila Tidak, gunakan

data sensus untuk menganalisa sifat -sifat populasinya

Buatlah Kesimpulan terhadap Sifat - sifat Populasi tersebut Berhenti Statistik Deskriptif Statistik Induktif

Gambar 2.2 Peranan statistik dalam melakukan penelitian Sumber: Samsubar Saleh, 1998

(38)

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,

(39)

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

(40)

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)

(41)

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:

(Cormen, et. al., 1990)

Ilustrasi dari algoritma Randomized-Select ini dapat dilihat pada gambar 2.3 berikut ini:

RANDOMIZED-PARTITION (A, p, r)

1 i  RANDOM (p, r) 2 exchange A[p]  A[i] 3 return PARTITION (A, p, r)

(42)

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).

(43)

31

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 2014 Januari 2015 Februari 2015 Maret 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

(44)

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.

(45)

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.

(46)

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 gambar-gambar 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 objek-objek pada perangkat lunak.

(47)

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.

(48)

36

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,

(49)

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:

(50)

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

randomized-select.

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 algoritma

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]

(51)

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.

(52)

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.

x Perancangan Permainan Oil Company Problem dengan Menggunakan Teorema Medians dan Order Statistics

Permainan

Daftar Nilai Tertinggi

Mengenai

Keluar Nama User : [Nama Pemain]

1

2

3

4 5

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.

(53)

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

Proses Tutup 1 2 3 4 5 6 8 9 Pause 7

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.

(54)

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.

x Daftar User

Tambah Pilih Batal

1

2 4 5

Hapus

3

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.

(55)

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

Hapus Semua Keluar

1

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.

(56)

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.

Tutup 1

3 2

Gambar 4.5 Tampilan Form About Keterangan:

1 : daerah tampilan judul perangkat lunak.

2 : daerah tampilan data pribadi dari pembuat perangkat lunak.

(57)

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

NamaUser Text 30

Nilai Number Integer

Tingkat Text 6

Waktu Date/Time -

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:

(58)
(59)

47

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:

(60)

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:

(61)

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

Gambar 2.1 Grafik Notasi , Notasi O dan Notasi   Sumber: Cormen, et. al., 1990
Gambar 2.2 Peranan statistik dalam melakukan penelitian  Sumber: Samsubar Saleh, 1998
Ilustrasi  dari  algoritma  Randomized-Select  ini  dapat  dilihat  pada  gambar  2.3 berikut ini:
Tabel 3.1 Jadwal Penelitian
+7

Referensi

Dokumen terkait

Sebagian besar proporsi portofolio optimal tersebut terdiri atas saham SMGR dan PGAS yang memiliki proporsi 70,56% , terpilihnya saham SMGR (Semen Indonesia

Peneliti tertarik melakukan penelitian tentang hubungan antara pengetahuan dan sikap masyarakat tentang pencegahan penyakit malaria dengan kejadian penyakit malaria di

Selama kerja praktek hal-hal yang dilakukan adalah melakukan diskusi dengan pembimbing lapangan mengenai proses produksi dan pengawasan mutu sirup, melakukan kunjungan dan

Besaran  dampak  yang  ditimbulkannya  terhadap  pembebasan  lahan  untuk  pembangunan jembatan Soka dan Nambangan berupa timbul permasalahan ganti rugi  terhadap 

Hal ini dipengaruhi oleh perletakan serat yang acak di dalam komposit sehingga orientasi serat dalam komposit tidak teratur, sedangkan pada perlakuan perendaman

b. Observasi kelas pra mengajar. Observasi kelas pra mengajar merupakan observasi proses pembelajaran. Praktikan melakukan pengamatan proses pembelajaran dalam kelas, meliputi

Keberadaan Ambon Card juga dapat ditemui di kota Makassar, istilah yang mirip dengan Ambon Card ini adalah ATL singkatan dari Ambon Tembak Langsung, dalam artian mereka yang lahir

Berdasarkan penilaian indikator reliabilitas berarti responden memberikan informasi mengenai pemahaman kariyawan mengenai warung upnormal yang sesuai dengan kualitas