Anda di halaman 1dari 19

TUGAS KELOMPOK

ALGORITMA DAN PEMROGRAMAN II

ANGGOTA KELOMPOK

1. 172410101132 – AL FIKRI ZAINI H


2. 172410101144 – AHMAD YUSUF F

FAKULTAS ILMU KOMPUTER

UNIVERSITAS JEMBER

2021
BAB I. DASAR TEORI

1.1. Knapsack Problem


Algoritma adalah susunan langkah-langkah sistematis dan logis dalam pemecahan suatu
masalah. Ada 3 cara dalam menyusun algoritma yaitu:
(1) Dengan merumuskan langkah-langkah pemecahan masalah melalui kalimat yang
terstuktur (tersusun secara logis);
(2) Menggabungkan kalimat dengan penggalan statements yang ada di suatu bahasa
pemrograman (misal: Pascal). Biasa disebut Pseudo code (mirip kode/perintah
pemrograman); dan
(3) Menggunakan diagram alir (flowchart). Algoritma adalah jantung ilmu komputer atau
informatika. Program adalah perwujudan atau implementasi dari algoritma. Program ditulis
dalam salah satu bahasa pemrograman. Kegiatan menulis program disebut pemrograman
(programming). Tiap langkah di dalam kode program disebut pernyataan atau instruksi.
Jadi program adalah “Sederetan instruksi yang sistematis dan logis yang menggunakan
sintaks tertentu untuk menyelesaikan permasalahan”.
Bahasa pemrograman yang menerapkan konsep prosedural didalam penulisan programnya
misalnya adalah Turbo Pascal. Teknik pemrograman prosedural adalah : program dibagi
menjadi beberapa bagian program yang lebih kecil yang disebut modul atau sub program
atau rutin atau procedure atau function. Bagian-bagian program kecil ini nantinya di
kontrol atau dikendalikan dari program utama (main program). Setiap sub program dapat
di panggil berkali-kali dari program utama. Agar algoritma mudah ditranslasikan ke dalam
notasi bahasa pemrograman, maka sebaiknya notasi algoritmik tersebut berkoresponden
dengan notasi bahasa pemrograman secara umum.
Pada umumnya, program komputer bekerja dengan memanipulasi objek (data) di dalam
memori. Objek yang akan diprogram bermacam-macam jenis atau tipenya, misal nilai
numerik, karakter, string dan rekaman (record). Suatu tipe menyatakan pola penyajian data
dalam komputer. Tipe data dapat dikelompokkan menjadi atas dua macam: tipe data dasar
dan tipe data bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai, sedangkan tipe
bentukan dibentuk dari tipe dasar. Suatu tipe diacu dari namanya. Nilai-nilai yang dicakup
oleh tipe tersebut dinyatakan di dalam ranah (domain) nilai.

1.2. Kanpsack Problem


a. Knapsack problem atau rucksack problem adalah masalah optimasi kombinatorial.
Namanya berasal dari masalah maksimasi untuk pilihan paling tepat dari barang-barang
yang akan dibawa dalam sebuah tas pada sebuah perjalanan. Sejumlah barang yang
tersedia ini, masing-masing memiliki berat dan nilai, yang menentukan jumlah barang
yang dapat dibawa sehingga total berat tidak melebihi kapasitas tas dan dengan total
nilai yang sebesar mungkin.
b. Jenis-Jenis Knapsack Problem
Terdapat beberapa variasi Knapsack problem:
• 0/1 Knapsack problem Setiap barang hanya tersedia 1 unit, take it or leave it.
• Fractional Knapsack problem Barang boleh dibawa sebagian saja (unit dalam
pecahan). Versi problem ini menjadi masuk akal apabila barang yang tersedia dapat
dibagi-bagi misalnya gula, tepung, dan sebagainya.
• Bounded Knapsack problem Setiap barang tersedia sebanyak N unit (jumlahnya
terbatas).
• Unbounded Knapsack problem Setiap barang tersedia lebih dari 1 unit, jumlahnya
tidak terbatas.
c. Perancangan Sistem
- Cara kerja program secara garis besar adalah mencari nilai barang yang paling
maksimum dengan berat barang tidak melebihi kapasitas yang tersedia.
Pencariannya menggunakan algoritma genetika. Berikut adalah gambar blok
diagram sistem:

Gambar 1.1.1 Blok Diagram Sstem


- Perancangan Program
Dalam kasus knapsack problem, gen direpresentasikan dalam bentuk string bit.
Caranya yaitu dengan memilih barang secara manual pada Tabel 3.1, di mana
barang yang terpilih diberi tanda √ dan tanda x untuk barang yang tidak dipilih.
Kedua tanda tersebut bisa dikodekan sebagai 1 untuk tanda √ dan 0 untuk tanda x.
Dengan demikian representasi kromosom untuk masalah di atas adalah
pengkodean biner dengan panjang 4 bit (sejumlah barang yang ada)
Tabel 1.1 Daftar Barang yang Bisa Dibawa Pedagang dan Pilihannya

Sehingga didapatkan kromosom seperti pada gambar berikut ini.

Gambar 1.1.2 Representasi Kromosom

Table 1.1.2 Representasi Knapsack Problem Jika Kapasitas Maksimum 6 kg

Kromosom K1 menyatakan bahwa barang-barang yang terpilih adalah b2 dan b4.


Sesuai dengan Tabel 3.1, ternyata totalnya sama dengan 6 kg. Kromosom K1 ini
dinyatakan valid karena total beratnya kurang atau sama dengan berat maksimal
yang diijinkan (6 kg). Sedangkan kromosom K2 menyatakan barang-barang yang
terpilih adalah b1, b2, dan b4 yang total beratnya sama dengan 9 kg. Dengan
demikian, K2 dikatakan kromosom yang tidak valid karena memberikan total berat
yang melebihi berat maksimal yang diijinkan (6 kg).
- Prosedur Inisialisasi
Inisialisasi terhadap secara kromosom dilakukan secara acak (random)
- Fungsi Fitness
Untuk membangun fungsi fitness dalam kasus knapsack problem, bisa dimulai
dengan tujuan yang ingin dicapai, yakni menemukan sejumlah barang yang total
nilainya paling besar (maksimasi) dan total beratnya kurang atau sama dengan total
berat yang diijinkan sehingga bisa ditulis fungsi fitness-nya adalah

batasan total beratnya


di mana bi bernilai 1 atau 0 yang menyatakan barang ke-i diambil atau tidak
diambil, vi menyatakan nilai barang ke-i dan wi menyatakan berat barang ke-i. [8]
Oleh karena kapasitas maksimumnya 6 kg, maka berat pada kode biner (a) masih
sama dengan (tidak melebihi) kapasitas, sehingga nilai fitness sama dengan nilai
dari kode biner = 13, sedangkan berat pada kode biner (b) melebihi kapasitas,
sehingga nilai fitness-nya didapat dari pengurangan kapasitas dan berat pada kode
biner yakni 6 – 9 = -3.
- Seleksi
Untuk menyelesaikan masalah knapsack problem, digunakan metode seleksi induk
yaitu seleksi berdasarkan roulette wheel. Langkah-langkah penyeleksiannya:
i. Hitung fungsi fitness untuk masing-masing kromosom eval(vi), i = 1, 2, ...,
pop_size (ukuran populasi)
ii. Hitung total fitness dari populasi tersebut:
iii. Hitung probabilitas dari seleksi pi untuk masing-masing kromosom vi , i = 1, 2,
..., pop_size
pi = eval(vi) / F
iv. Hitung komulatif p qi untuk masing-masing kromosom vi , i = 1, 2, ..., pop_size

Proses seleksi berdasarkan atas pemutaran roulette wheel sebanyak pop_size kali;
setiap kali dipilih kromosom tunggal sebagai populasi baru, dengan cara:
• Bangkitkan bilangan acak r
• Bila r < q1 maka pilih kromosom pertama (v1); bila tidak pilih kromosom ke-i vi
(2 ≤ i ≤ pop_size) sedemikian rupa sehingga qi-1 < r ≤ qi
1.3. Spanning Tree
a. Sapnning tree adalah himpunan bagian dari Grafik G, yang memiliki semua simpul
yang ditutupi dengan jumlah tepi seminimal mungkin. Karenanya, Spanning tree tidak
memiliki siklus dan tidak dapat diputuskan .. Dengan definisi ini, kita dapat menarik
kesimpulan bahwa setiap Grafik G yang terhubung dan tidak diarahkan memiliki
setidaknya satu Spanning tree. Grafik yang terputus tidak memiliki pohon bentang,
karena tidak dapat direntang ke semua simpulnya.
Kami menemukan tiga Spanning tree dari satu grafik lengkap. Sebuah graf tak terarah
lengkap dapat memiliki maksimum n -2 jumlah Spanning tree, di mana n adalah jumlah
simpul. Dalam contoh di atas, n adalah 3, oleh karena itu 3 3−2 = 3 Spanning tree
dimungkinkan.
b. Properti Umum Spanning Tree

Kami sekarang memahami bahwa satu grafik dapat memiliki lebih dari satu Spanning
tree. Berikut adalah beberapa properti dari Spanning tree yang terhubung ke grafik G -

 Grafik terhubung G dapat memiliki lebih dari satu Spanning tree.

 Semua Spanning tree yang mungkin dari grafik G, memiliki jumlah sisi dan simpul

yang sama.

 Spanning tree tidak memiliki siklus apa pun (loop).

 Menghapus satu sisi dari Spanning tree akan membuat grafik terputus, yaitu

Spanning tree terhubung secara minimal .

 Menambahkan satu tepi ke Spanning tree akan membuat sirkuit atau lingkaran, yaitu

Spanning tree secara maksimal asiklik .

c. Properti Matematika Spanning tree

 Spanning tree memiliki n-1 tepi, di mana n adalah jumlah simpul (simpul).

 Dari grafik lengkap, dengan menghilangkan maksimum e - n + 1 edge, kita dapat

membuat Spanning tree.

 Sebuah grafik lengkap dapat memiliki maksimum n n-2


jumlah pohon yang
mencakup.
Dengan demikian, kita dapat menyimpulkan bahwa Spanning tree adalah himpunan
bagian dari Grafik G yang terhubung dan grafik yang terputus tidak memiliki pohon
rentang.
d. Penerapan Spanning Tree

Spanning tree pada dasarnya digunakan untuk mencari jalur minimum untuk
menghubungkan semua node dalam sebuah grafik. Penerapan umum Spanning tree
adalah -

 Perencanaan Jaringan Sipil


 Protokol Perutean Jaringan Komputer

 Analisis Cluster

Mari kita pahami ini melalui contoh kecil. Pertimbangkan, jaringan kota sebagai grafik
yang sangat besar dan sekarang berencana untuk menggunakan saluran telepon
sedemikian rupa sehingga dalam saluran minimum kita dapat terhubung ke semua node
kota. Di sinilah pohon bentang muncul.

e. Minimum Spanning Tree (MST)


Dalam grafik berbobot, pohon bentang minimum adalah pohon bentang yang memiliki
bobot minimum daripada semua pohon bentang lain dari grafik yang sama. Dalam
situasi dunia nyata, bobot ini dapat diukur sebagai jarak, kemacetan, beban lalu lintas,
atau nilai arbitrer apa pun yang ditunjukkan ke tepinya.
1.4. Maze Problem
Maze Problem adalah sebuah contoh dari penerapan algoritma backtracking yang
diberikan sebuah labirin (maze), untuk menemukan lintasan dari titik awal sampai titik
akhir. Runut-balik (backtracking) adalah algoritma pencarian solusi yang berbasis pada
DFS, salah satu contohnya yaitu Maze Problem. Algoritma backtrack pertama kali
diperkenalkan oleh D.H Lehmer pada tahun 1950. Dalam perkembangannya beberapa ahli
seperti Rwalker, Golomb, dan Baumert menyajikan uraian umum tentang backtrack dan
penerapannya dalam berbagai persoalan dan aplikasi.
Algoritma backtracking (runut-balik) merupakan salah satu metode pemecahan masalah
yang termasuk dalam strategi yang berbasis pencarian pada ruang status. Algoritma
backtracking bekerja secara rekursif dan melakukan pencarian pada ruang status persoalan
secara sistematis pada semua kemungkinan solusi yang ada. Oleh karena algoritma ini
berbasis pada algoritma Depth-First Search (DFS), maka pencarian solusi dilakukan
dengan menelusuri suatu struktur berbentuk pohon berakar secara preorder. Algoritma
DFS merupakan algoritma pencarian secara mendalam. Cara kerja algoritma ini
menelusuri kemungkinan yang lain hingga akar-akar maksimal juga. Proses dicirikan
dengan ekspansi simpul terdalam lebih dahulu samapi tidak ditemukan lagi suksesor dari
suatu simpul.
Prinsip dasar algoritma Backtracking adalah mencoba semua kemungkinan solusi yang
ada. Perbedaan utamanya adalah pada konsep dasarnya, yaitu pada backtracking semua
solusi dibuat dalam bentuk solusi (tree), dan kemudian pohon tersebut akan ditelusuri
secara DFS (Depth-First Search) sehingga ditemukan solusi terbaik yang diinginkan.
Contoh dari penerapan algoritma Backtrack adalah games Math Maze yaitu permainan
yang bertujuan untuk menentukan jalur yang tepat untuk mencapai tujuan yang telah
ditetapkan. Pada dasarnya Math Maze adalah permainan yang merupakan perkembangan
dari permainan Maze (Labirin). Perbedaan yang ada pada Math Maze adalah permainan
ini menggunakan angka-angka yang ada pada sisi bagian kiri dan bagian atas yang disebut
dengan nilai-nilai pemandu. Angka-angka tersebut merupakan indikator yang menyatakan
berapa banyak sel di dalam baris atau kolom tersebut yang dilalui oleh garis yang
merupakan jalur menuju tujuan akhir.
Arah pergerakan jalur ditentukan dengan mengklik dari satu sel ke sel yang lain pada grid.
Pilihan sel untuk di klik ada 4 yaitu, atas, kanan, kiri, dan bawah. Pemain tidak boleh
mengklik sel lain dengan arah diagonal. Saat di klik sel satu akan terhubung dengan sel
selanjutnya dengan suatu garis. Apabila pemain berhasil mencapai pintu keluar atau finish
maka terbentuk jalur dari garis-garis tersebut.
Dengan nilai-nilai pemandu pada sisi kiri dan sisi atas papan permainan maka pemain
harus memperhitungkan sel mana yang harus diklik setelah pemain mulai dari sel Start
atau Pintu Masuk. Pemain harus memperkirakan jalur solusi yang terbentuk nanti harus
sesuai dengan nilai-nilai pemandu. Apabila jumlah nilai baris dan kolom yang dilewati
tidak sesuai sampain mencapai garis selesai maka dianggap gagal menemukan jalur yang
tepat menuju pintu keluar atau selesai.
Berikut adalah contoh Maze

Berikut adalah representasi matriks biner dari labirin di atas.

{1, 0, 0, 0}
{1, 1, 0, 1}

{0, 1, 0, 0}

{1, 1, 1, 1}

Berikut ini adalah Maze dengan jalur solusi yang disorot.

1.5. Shortest Path Problem


Shortest Path Problem (Jalur Terpendek) adalah lintasan terpendek yang diperlukan untuk
mencapai suatu tempat dari tempat tertentu. Persoalan jalur terpendek (Shortest Path
Problem) yaitu menemukan jalur terpedek antara dua atau lebih simpul yang berhubungan.
Persoalan mencari jalur terpendek merupakan salah satu persoalan optimasi. Persoalan ini
biasanya direpresentasikan dalam bentuk Graf, dimana keadaan yang berhubungan dengan
ruang lingkup pencarian direpresentasikan oleh verteks dan transisi yang terjadi
digambarkan dalam bentuk edge.
Metode algoritma yang dikembangkan yang dapat menyelesaikan persoalan jalur
terpendek diantaranya algoritma Dijkstra. Algoritma Dijkstra adalah sebuah algoritma
rakus (greedy algorithm) yang dipakai untuk memecahkan permasalahan jarak terpendek
(Shortest Path Problem) untuk sebuah graf berarah (directed graph) dengan bobot-bobot
sisi (edge weights) yang bernilai tak negatif. Input algoritma ini adalah sebuah graf berarah
yang berbobot (weight directed graph) G dan sebuah sumber verteks s dalam G dan V
adalah himpunan semua vertices dalam graph G.
1.6. Traveling Salesman Problem
Travelling Salesman Problem (TSP) dikenal sebagai salah satu permasalahan optimasi
klasik yang berat untuk dipecahkan secara konvensional. Penyelesaian eksak terhadap
persoalan ini akan melibatkan algoritma yang mengharuskan untuk mencari kemungkinan
semua solusi yang ada. Sebagai akibatnya, kompleksitas waktu dari eksekusi algoritma ini
akan menjadi eksponensial terhadap ukuran dari masukan yang diberikan. Permasalahan
yang melibatkan algoritma demikian lebih dikenal sebagai permasalahan yang bersifat
Nondeterministic Polynomial-time Complete (NP-Complete).
Travelling Salesman Problem melibatkan seorang travelling salesman yang harus
melakukan kunjungan ke sejumlah kota dalam menjajakan produknya. Rangkaian kota-
kota yang dikunjungi harus membentuk suatu jalur sedemikian sehingga kota-kota tersebut
hanya boleh dilewati tepat satu kali dan kemudian kembali lagi ke kota awal. Penyelesaian
terhadap permasalahan TSP ini adalah untuk memperoleh jalur terpendek. Penyelesaian
eksak terhadap masalah TSP mengharuskan untuk melakukan perhitungan terhadap semua
kemungkinan rute yang dapat diperoleh, kemudian memilih salah satu rute yang terpendek.
Untuk itu jika terdapat n kota yang harus dikunjungi, maka diperlukan proses pencarian
sebanyak n!/2n rute. Dengan cara ini waktu komputasi yang diperlukan akan jauh
meningkat seiring dengan bertambahnya jumlah kota yang harus dikunjungi. Sebagai
ilustrasi, untuk 10 kota saja, diperlukan proses pencarian jalur sebanyak 181.440 rute.
Penjelasan ini menunjukkan bahwa solusi eksak terhadap masalah TSP sangat sulit
dilakukan. Oleh karena itu dibuat suatu perangkat lunak yang melibatkan Jaringan Saraf
Self Organizing dengan metode pembelajaran Kohonen untuk memberikan pemecahan
alternatif yang lebih baik.
TSP merupakan persoalan yang mempunyai konsep sederhana dan mudah dipahami.
Optimasi pada suatu penyelesaian fungsi berarti penentuan jarak lokasi minimum atau
maksimum dari fungsi tersebut. Pada TSP, optimasi diinginkan agar ditemukan rute
perjalanan terpendek untuk melewati sejumlah kota dengan jalur tertentu sehingga setiap
kota hanya terlewati satu kali dan perjalanan diakhiri dengan kembali ke kota semula.
Terdapat dua macam bentuk persoalan TSP ditinjau dari jumlah pelaku perjalanan, bentuk
pertama dengan satu orang yang berkeliling dan dengan lebih dari satu (banyak) orang
yang berkeliling sebagai bentuk kedua. Dalam penelitian ini hanya akan dibahas bentuk
pertama.
BAB II. TOPIK PROJECT

Topik/Judul Project : PENERAPAN ALGORITMA GREEDY DAN DYNAMIC PROGRAMMING PADA


PERMASALAHAN INTEGER KNAPSACK Di UD/TOKO

2.1 Latar belakang


Setiap manusia pasti menginginkan keuntungan yang sebanyak-banyaknya
dengan hanya menggunakan sumber daya yang seefisien mungkin dari berbagai
batasan yang ada. Salah satu contohnya dalam kehidupan sehari-hari adalah dalam
permasalahan saat seseorang memilih objek dari sekumpulan objek yang masing-
masing mempunyai bobot/berat (weight) dan nilai/profit (value) untuk dimuat dalam
sebuah media penyimpanan dengan keterbatasan ruang tertentu sehingga di dapat
keuntungan maksimum dari objek-objek tersebut. Permasalahan seperti ini disebut
problem knapsack.
Terkadang keterbatasan manusia dalam menyelesaikan masalah knapsack tanpa
menggunakan alat bantu merupakan salah satu kendala dalam pencarian solusi
optimum. Apalagi jika dihadapkan dengan jumlah objek terlampau banyak maka
perhitungannya semakin sulit. Efisiensi waktu juga sering menjadi pertimbangan.
Oleh karena itu, dibutuhkan suatu metode sekaligus program aplikasi penerapan
metode tersebut yang dapat membantu menyelesaikan masalah knapsack.
Permasalahan knapsack terbagi menjadi tiga, yaitu integer knapsack, bounded
knapsack, dan unbounded knapsack. Persoalan integer knapsack adalah menentukan
objek mana saja yang harus dimuat atau tidak di muat sama sekali dalam media
penyimpanan. Persoalan bounded knapsack adalah menentukan berapa bagian dari
masing-masing objek yang akan dimuat dalam media penyimpanan, sedangkan pada
unbounded knapsack persoalannya adalah penentuan untuk barang yang tidak
terbatas (Martello, 2006).
Knapsack problem dapat diselesaikan dengan berbagai cara. Terdapat beberapa
strategi algoritma yang dapat menghasilkan solusi optimal diantaranya algoritma
greedy, dynamic programming, branch and bound, brute force, dan genetik.
Setiap perusahaan perlu menentukan pilihan masing-masing barang yang akan
dijual dalam menjamin kelangsungan hidup usahanya. Tanpa adanya penentuan
pemilihan barang, perusahaan akan dihadapkan pada resiko bahwa suatu waktu
perusahaan tidak dapat memeuhi keinginan pelanggan yang memerlukan barang
tersebut. Penentuan pemilihan barang sangat mempengaruhi omset penjualan dan
perolehan keuntungan.
Perolehan keuntungan maksimal merupakan tujuan yang diharapkan suatu
perusahaan dalam menggunakan modalnya secara efektif dan efisien.
Berdasarkan masalah diatas, maka permasalahan yang digunakan dalam skripsi ini
adalah permasalahan integer knapsack untuk mencari keuntungan maksimum di
sebuah toko/UD dengan menggunakan algoritma greedy dan dynamic programming
dan bagaimana menentukan pembelian barang yang tepat karena sangat penting
dalam pemenuhan kebutuhan bagi kelancaran usahanya yakni untuk memenuhi
kebutuhan para konsumen sehingga dapat mencapai keuntungan yang optimal.
2.2 Rumusan Masalah
a. Bagaimana menentukan keuntungan maksimum pada permasalahan knapsack di
UDdengan menggunakan algoritma greedy.
b. Bagaimana menentukan keuntungan maksimum pada permasalahan knapsack
di UD. dengan menggunakan algoritma dynamic programming.
c. Bagaimana cara mempercepat perhitungan dengan algoritma greedy dan
dynamic programming untuk mencari keuntungan maksimum pada
permasalahan knapsack di UD
d. Diantara algoritma greedy dan dynamic programming, algoritma mana yang
memberikan solusi paling optimal untuk permasalahan knapsack (dari segi hasil
maupun waktu yang dibutuhkan).
2.3 Batasan Masalah
Adapun batasan permasalahan yang harus dibatasi pada penyelesaian permasalahan
integer knapsack di UD yakni tingkat penjualan/permintaan konsumen untuk masing-
masing barang diasumsikan sama.
2.3 Tujuan
a. Mencari keuntungan maksimum pada permasalahan knapsack di UD. dengan
menggunakan algoritma greedy.
b. Mencari keuntungan maksimum pada permasalahan knapsack di UD. dengan
menggunakan algoritma dynamic programming.
d. Membandingkan algoritma greedy dan dynamic programming (dari segi hasil
dan waktu).
REFERENSI

Diah, K., Mardhiah, F., dan CharloSutanto. 2010. “Penyelesaian Knapsack Problem
Menggunakan Algoritma Genetik”. Riau: Teknik Komputer Politeknik Caltex Riu Pekanbaru.

Kellerer, H., Pferschy, U., & Pisinger, D. 2004. Knapsack Problems.New York: Springer-
Verlag Berlin Heidelberg.
Li, Z., &Li, N. 2009. A novel multi-mutation binary particle swarm optimization for 0/1
knapsack problem. Chinese Control and Decision Conference(pp. 3090-3095). New
Jersey: IEEE Press.
Lin, F.-T. (2008, February 16). Solving the knapsack problem with imprecise weight
coefficients using genetic algorithms. European Journal of Operational Research,
185(1), 133-145.
Liu, Y., & Liu, C. 2009. A Schema-Guiding Evolutionary Algorithm for 0-1 Knapsack
Problem. International Association of Computer Science and Information
Technology -Spring Conference(pp. 160-164). IEEE.
S. Alfeno and R. E. C. Devi, “Implementasi Global Positioning System ( GPS ) dan Location
Based Service ( LSB ) pada Sistem Informasi Kereta Api untuk Wilayah Jabodetabek,”
Sisfotek Glob., vol. 7, no. 2, pp. 27–33, 2017.
Paryati. 2009. “StrategiAlgoritma Greedy untuk Menyelesaikan Permasalahan Knapsack 0-1”.
Yogyakarta: Teknik Informatika UPN “Veteran” Yogyakarta.

Anda mungkin juga menyukai