BATASAN MASALAH SISTEMATIKA PENULISAN DYNAMIC PROGRAMMING

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