1.3. BATASAN MASALAH
Batasan permasalahan pada penelitian ini adalah: 1.
Melakukan perhitungan biaya produksi produk percetakan seperti: brosur, undangan, kalender dan nota.
2. Perhitungan penentuan bahan baku kertas yang digunakan pada proses
pembuatan produk percetakan. 3.
Implementasi 0 1 knapsack menggunakan dynamic programming.
1.4. TUJUAN DAN MANFAAT PENELITIAN
1.4.1. Tujuan Penelitian
Tujuan dari penelitian ini yaitu: 1.
Menghitung biaya produksi produk percetakan secara terkomputerisasi.
2. Menentukan ukuran bahan baku kertas yang akan digunakan.
1.4.2. Manfaat Penelitian
Manfaat dari penelitian ini adalah: 1. Aplikasi ini dapat melakukan perhitungan biaya produksi produk
percetakan. 2. Aplikasi ini dapat menentukan ukuran kertas yang akan digunakan
sebagai bahan baku produksi.
1.5. METODOLOGI PENELITIAN
1.5.1. Metode Pengumpulan Data
1. Observasi
Yaitu terjun langsung ke CV. Tunas Utama, Dengan cara observasi ini akan diperoleh data yang lengkap dan tepat. Selain itu,
metode observasi mempunyai kelebihan yaitu peneliti mengetahui sendiri dengan jelas tentang masalah knapsack yang terjadi serta
mengetahui perhitungan biaya produksi. 2.
Studi Pustaka Penelitian yang dilakukan dengan data atau keterangan dari
perpustakaan serta mencari referensi yang diperlukan dari buku–buku acuan yang ada berhubungan dengan masalah knapsack dan
perhitungan biaya produksi.
1.5.2. Metode Pengembangan Sistem
Metode pengembangan sistem yang akan digunakan dalam penelitian ini menggunakan RAD Rapid Application Development yang
dikembangkan oleh James Martin pada tahun 1971. Metode ini memiliki lima tahapan Pressman, 2005:81 , yaitu :
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
1.6. SISTEMATIKA PENULISAN
Dalam skripsi ini, pembahasan yang penulis sajikan terbagi dalam lima bab, yang secara singkat dapat diuraikan sebagai berikut :
BAB I PENDAHULUAN
Bab ini membahas tentang latar belakang, perumusan masalah, batasan masalah, tujuan dan manfaat penelitian,
metodologi penelitian dan sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini membahas secara singkat teori yang diperlukan dalam penelitian skripsi.
BAB III METODOLOGI PENELITIAN
Pada bab ini akan dijelaskan metodologi yang digunakan penulis dalam melakukan penelitian.
BAB IV HASIL DAN PEMBAHASAN
Dalam bab ini diuraikan hasil analisis dan perancangan sistem yang dibuat.
BAB V KESIMPULAN DAN SARAN
Bab ini adalah bab terakhir yang menyajikan kesimpulan serta saran dari apa yang telah diterangkan dan diuraikan
pada bab-bab sebelumnya.
BAB II LANDASAN TEORI
2.1. ALGORITMA
Untuk menyelesaikan persoalan-persoalan yang kita hadapi, kita perlu menyusun langkah dan strategi. Langkah dan stratergi dalam
menyelesaikan suatu persoalan disebut algoritma. Algoritma berasal dari kata algorism, yaitu penulis buku arab yang terkenal, Abu Ja’far
Muhammad Ibnu Musa Al-Khowarizmi Sismoro,2005:29. Algoritma adalah kumpulan instruksiperintahlangkah yang
berhingga jumlahnya, dituliskan secara sistematis, dan digunakan untuk menyelesaikan masalahpersoalan logika dan matematika dengan bantuan
komputer Sismoro,2005:29. Algoritma adalah urutan langkah-langkah untuk memecahkan suatu
masalah Munir,2007:4 Algoritma adalah alur pikiran dalam menyelesaikan suatu
pekerjaan, yang dituangkan dalam bentuk tertulis yang dapat dimengerti oleh orang lain Sjukani,2007:1.
Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran Cormen,2002:5
Dari beberapa penjabaran di atas, maka dapat disimpulkan bahwa algoritma adalah tahapan-tahapan yang diproses untuk memperoleh
pemecahan suatu masalah.
Bila digambarkan maka proses penyelesaian masalah sampai memperoleh pemecahannya adalah sebagai berikut :
Masalah Algoritma
Solusi
Gambar 2.1. Hubungan masalah, algoritma dan solusi
2.1.1. Penyajian Algoritma
Algoritma disajikan dengan tulisan atau gambar. Algoritma yang disajikan dengan tulisan memiliki struktur bahasa tertentu dan
pseudocode, sedangkan yang disajikan dengan gambar, misalnya
flowchart program, data flow diagram, diagram chart dan lain-lain.
1. Pseudocode berasal dari kata pseudo miripmenyerupai dan code,
yang berarti kode yang mirip dengan kode program yang sebenarnya. Sebagai contoh, algoritma yang ditulis dengan pseudocode untuk
menyelesaikan permasalahan akan menukarkan isi dari dua nilai yang berbeda, yaitu A = 10 dan B = 20.
C B
B A
A C
Output A,B
Gambar 2.2.
Contoh algoritma menggunakan pseudocode
2. flowchart adalah bagan yang menggambarkan urutan logika dari suatu
prosedur pemecahan masalah. Tabel 2.1. menjelaskan tentang simbol-
simbol yang dipergunakan dalam flowchart beserta dengan nama dan fungsi masing-masing simbol.
Tabel. 2.1. Simbol-simbol yang dipergunakan dalam flowchart
Simbol Nama Fungsi
terminal symbol menunjukkan awal dan akhir dari
program preparation symbol
memberikan nilai awal pada suatu variabel
processing symbol Menunjukkan pengolahan
aritmatika dan pemindahan data inputoutput symbol
menunjukkan proses input atau output
desicion symbol mewakili operasi perbandingan
dengan logika. predefined process
symbol proses yang ditulis sebagai
subprogram, yaitu prosedurfungsi connector symbol
penghubung pada halaman yang sama
off page connector symbol
penghubung pada halaman yang berbeda.
arrow arah proses
Gambar 2.3 memperlihatkan flowchart untuk menghitung luas lingkaran, pertama memulai program kemudian memasukkan jari-jari dan program akan
menghitung luas sesuai dengan rumus yang telah dibuat dan menghasilkan keluaran berupa luas:
Mulai
Masukan jari_jari
Luas 3,14 x jari_jari x jari_jari
Keluaran Luas
Selesai
Gambar 2.3. Contoh flowchart perhitungan luas
2.1.2. Struktur Dasar Algoritma
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut bisa berupa aksi kejadiantindakan, pemilihan
aksi, dan pengulangan aksi. Berikut adalah tiga struktur dasar algoritma, yaitu:
1. Sequence Structure Struktur Runtunan
Struktur runtunan adalah struktur dasar algoritma di mana instruksi akan dieksekusi secara berurutan. Digunakan untuk program yang
instruksinya berurutan. Gambar 2.4. menjelaskan algoritma dengan struktur runtunan, jika langkah 1 telah dikerjakan maka lanjut ke
langkah 2 tanpa ada persyaratan.
Langkah 1 Langkah 2
Gambar 2.4. Struktur Runtunan
2. Selection Structure Struktur percabangan
Struktur percabangan adalah struktur dasar algoritma di mana instruksipernyataan akan dieksekusi apabila memerlukan atau
memnuhi suatu kondisi. Gambar 2.5. menggambarkan algoritma yang berstruktur percabangan, jika kondisi telah terpenuhi maka akan
menjalankan langkah 1 dan menghasilkan output tetapi jika kondisi tidak terpenuhi maka akan menjalankan langkah 2.
F kondisi
T
Gambar 2.5. Struktur Percabangan
Langkah 1 Langkah 2
output
3. Repetition Structure Struktur Perulangan
Struktur perulangan adalah struktur dasar algoritma di mana instruksi akan dieksekusi secara berulang-ulang apabila memenuhi atau tidak
memenuhi suatu kondisi. Gambar 2.5. menggambarkan algoritma yang berstruktur percabangan, jika kondisi terpenuhi maka akan
berulang sampai kondisi tidak terpenuhi.
Gambar 2.6. Struktur Perulangan
2.1.3. Dasar Penyusunan Algoritma
Sejauh ini tidak ada standarisasi tentang bagaimana menyusun algoritma. Secara prinsip anda mempunyai kebebasan untuk menyusun
algoritma. Anda dapat menggunakan kata-kata dalam bahasa manusia ataupun flowchart untuk mewujudkan suatu algoritma.
Walaupun begitu ada beberapa hal yang perlu diperhatikan dalam menyusun suatu algoritma. Menurut Knuth yang terkutip dalam
Kadir,2005:42, ada lima ciri penting yang harus dimiliki sebuah algoritma, yaitu berupa finiteness, definiteness, masukan, keluaran, dan
efektifitas. F
T
Kondisi
Prosedur
1. Finiteness, menyatakan bahwa suatu algoritma harus berakhir untuk
semua kondisi setelah memproses sejumlah langkah. 2.
Definiteness, menyatakan setiap langkah harus dinyatakan dengan jelas tidak rancu atau mendua-arti.
3. Masukan, setiap algoritma dapat tidak memiliki masukan atau
mempunyai satu atau beberapa masukan. Masukan merupakan suatu besaran yang diberikan diawal sebelum algoritma diproses.
4. Keluaran, setiap algoritma memiliki keluaran, entah hanya sebuah
keluaran atau banyak keluaran. Keluaran merupakan besaran yang mempunyai kaitan atau hubungan dengan masukan.
5. Efektifitas, setiap algoritma diharapkan bersifat efektif, dalam arti
semua operasi yang dilaksanakan oleh algoritma harus sederhana dan dapat dikerjakan dalam waktu yang terbatas. Secara prinsip,
setiap instruksi dalam algoritma dapat dikerjakan oleh orang hanya dengan menggunakan kertas dan pensil.
Sebuah algoritma dikatakan benar, untuk beragam masukan, jika algoritma berakhir dengan keluaran yang benar. Pada keadaan ini
algoritma menyelesaikan masalah komputasi yang diberikan. Cormen,2002:6.
2.1.4. Kompleksitas Waktu
Kompleksitas waktu adalah lamanya waktu tempuh sebuah algoritma. Terdapat tiga keadaan yang bisa muncul selama masa tempuh
algoritma yaitu worst case, average case, best case. Penjelasan masing- masing kompleksitas adalah sebagai berikut :
1. Worst Case
Merupakan waktu tempuh yang bernilai maksimum dari suatu fungsi fn
untuk setiap input yang mungkin. Keadaan ini disebut sebagai keadaan terburuk dari sebuah algoritma.
2. Average Case
Merupakan seuatu keadaan dari waktu tempuh yang ekivalen dengan nilai suatu fungsi fn.
3. Best Case
Merupakan waktu tempuh yang bernilai minimum dari suatu fungsi fn untuk setiap input yang mungkin. Keadaan ini disebut keadaan terbaik
dari sebuah proses algoritma dalam menyelesaikan masalah.
2.2. DYNAMIC PROGRAMMING
Dynamic Programming merupakan prosedur optimasi yang
dikembangkan oleh Richar Bellman pada tahun 1952. Dynamic Programming
adalah desain algoritma yang dapat digunakan ketika solusi untuk masalah dapat dilihat sebagai hasil dari
rangkaian keputusan. Menghitung semua urutan keputusan dan kemudian memilih yang terbaik Hanchate,2007:3-1.
Dynamic Programming merupakan metode yang secara umum
memecahkan masalah optimasi yang melibatkan urutan keputusan, solusi optimal dari masalah yang asli dapat ditemukan dari solusi optimal
subproblem. Lew,2007:5
Dynamic Programming adalah sebuah metode yang dapat
digunakan saat permasalahan dapat diurai menjadi beberapa permasalahan. Dynamic programming
menyelesaikan setiap permasalahan hanya sekali kemudian jawaban tersebut disimpan dalam sebuah tabel, itu dilakukan
untuk menghindari perhitungan kembali permasalahan yang ditemui selanjutnya.Cormen,2002:323.
Dari beberapa pengertian yang telah dipaparkan sebelumnya, maka dapat disimpulkan bahwa dynamic programming adalah sebuah metode
yang digunakan untuk mendapatkan sebuah solusi masalah utama dengan cara menyatukan solusi-solusi optimal sub masalah.
Dynamic Programming biasa digunakan dalam permasalahan
optimalisasi. Pada sebuah masalah bisa didapatkan banyak kemungkinan solusi. Tiap solusi mempunyai nilai dan kita ingin menemukan sebuah
nilai yang optimal pada masalah tersebut. Algoritma dynamic programming dapat dipecah menjadi 4 langkah
rangkaian :
1. Karakteristikan bahwa masalah adalah solusi optimal.
2. Secara berulang mendefinisikan nilai dari solusi optimal.
3. Menghitung nilai solusi optimal dengan cara bottom-up.
4. Membangun solusi optimal dari informasi yang telah didapat.
Pada dynamic programming menggunakan teknik bottom-up. Ada tiga maksud dalam teknik bottom-up yaitu;
1. Mulai dengan bagian permasalahan yang paling kecil
2. Kombinasikan solusi yang didapatkan dan ukuran dinaikkan
3. Kerjakan hingga dicapai solusi permasalah asli.
Dynamic programming menggunakan prinsip-prinsip optimal,
artinya setiap bagian dari penyelesaian yang dijalankan harus optimal, solusi bagian tersebut lalu dikombinasikan sehingga menghasilkan solusi
yang optimal.
2.3. KNAPSACK PROBLEM