2012-2-00987-MTIF Bab2001
2012-2-00987-MTIF Bab2001
BAB 2
LANDASAN TEORI
2.1 Algoritma
Algoritma berasal dari kata Algoris dan Ritmis, kata-kata tersebut berasal dari
bagian dari royal court, Baghdad. Algoritma adalah sebuah prosedur yang terstruktur
memberikan initial state (keadaan awal), dan akan terminate di akhir (end state)
definisi algoritma adalah Urutan langkah logis tertentu untuk memecahkan suatu
masalah. Sedangkan dari Algoritma dan Struktur Data dengan C, C++, dan Java oleh
pekerjaan yang dituangkan secara tertulis. Dari dua definisi diatas dapat disimpulkan
bahwa algoritma harus mengikuti suatu urutan aturan tertentu dan tidak boleh
karena mempunyai alur pikir yang berbeda-beda pula, serta Algoritma dapat berupa
diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa
apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus
9
untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda
masalah yang sama dan mungkin saja, mempunyai kompleksitas waktu yang
sangat berbeda (Liu, C.L, 1995, p274). Kompleksitas waktu algoritma terbaik
Deterministik Polinomial)
problem)
sesuatu hal yang bertujuan untuk mengelola sesuatu yang dikerjakan, sehingga
optimasi bisa dikatakan kata benda yang berasal dari kata kerja, dan optimasi bisa
dianggap baik sebagai ilmu pengetahuan dan seni menurut tujuan yang ingin
hasil yang ideal atau optimal (nilai efektif yang dapat dicapai). Dalam disiplin
mencari nilai minimum dan maksimum dari suatu fungsi nyata. Untuk mencapai nilai
prosedur yang digunakan untuk membuat sistem atau desain yang fungsional atau
masalah untuk menemukan solusi terbaik dari semua solusi. Masalah optimasi dapat
dibagi menjadi dua kategori tergantung pada apakah variabel yang kontinyu atau
diskrit. Masalah optimasi dengan variabel diskrit dikenal sebagai masalah optimasi
benda seperti grafik integer, permutasi atau dari himpunan berhingga (atau mungkin
logam, atau bahan lain yang ditempelkan pada wadah atau benda yang
dicetak sebagai informasi produk, alamat, dan lain-lain. Label juga dapat
langsung dicetak pada wadah atau benda. Sedangkan, pelabelan adalah setiap
komunikasi tertulis, elektronik, atau gambar pada kemasan atau terpisah dari
label terkait.
Dalam sistem online komputer, label (tag) adalah kata kunci non
Tujuan utama dari label sebagai daya tarik calon pelanggan untuk
mengetahui sebuah produk dan membuat produk terkesan unik. Label sebuah
Namun demikian ada hal-hal yang harus diperhatikan dalam membuat label
kemasan yaitu :
1. Label tidak boleh menyesatkan, apa saja yang tercantum dalam sebuah
dalamnya.
a. Nama produk
Suatu usaha sebaiknya memiliki cap atau trade mark atau merek
bahan penyusun dimulai dari bahan mayor atau bahan utama atau
pengemas.
h. Kode Produksi
i. Keterangan kadaluarsa
tercantum terlewati.
terlewati.
j. Logo halal
k. Keterangan Lainnya
Tulisan atau keterangan yang ada pada label harus jelas dan mudah di
baca, tidak dikaburkan oleh warna latar belakang atau gambar lainnya.
Desain yang kita buat akan dicetak pada media apa? Plastik, kertas,
aluminium foil, atau lainnya. Apakah akan dicetak dengan sablon atau
1. Brand Label
Label ini memuat merk, gambar, atau produsen dari produk yang
produk lainnya.
2. Descriptive Label
3. Grade Label
kualitas produk.
2.4 Pencarian
untuk masalah yang dihadapi. Ruang masalah ini dapat digambarkan sebagai
himpunan keadaan (state) atau bisa juga sebagai himpunan rute dari keadaan awal
informasi)
informasi)
matematis menempatkan label dengan berbagai macam pola dua dimensi pada
sebuah bin atau alas dasar, dalam kasus ini seperti kertas atau plastik. Tujuan dari
program peletakan posisi label ini adalah meminimalkan penggunaan kertas atau
Nilai dari sebuah pola adalah pasti, tidak nol, dan memiliki nilai yang positif
bin atau pada kasus ini sebuah alas kertas atau plastik. Bin adalah ukuran yang pasti
dari kertas atau plastik sebagai alas dasar untuk penempatan sejumlah pola label.
19
Terdapat banyak variasi dalam masalah optimasi peletakkan posisi label ini,
seperti linear packing, packing by weight, packing by cost, dan lain sebagainya.
Karena masalah ini termasuk ke dalam NP-Hard, maka algoritma yang diketahui
yang baik dalam kebanyakan kasus, tetapi mungkin saja buka sebagai optimasi yang
paling optimal. Heurisitic adalah sebuah algoritma yang mungkin saja menemukan
solusi yang baik, tetapi tidak ada bukti bahwa solusinya tidak bisa menjadi buruk
secara tidak masuk akal dan tidak ada argumen tentang hal ini bahwa hal seperti ini
2.6 NP-Hard
Turing machines merupakan symbol abstrak dasar yang memanipulasi alat dimana
dapat disesuaikan untuk mensimulasi logika dari komputer yang secara mungkin
dapat dikonstruksi.
Hal ini dikemukakan pada tahun 1936 oleh Alan Turing, polynomial time
satu atau lebih variable dan konstanta, dan hanya menggunakan penjumlahan,
Sebuah kelas yang kompleks dari decision problems di mana pada dasarnya
lebih sulit dari pada masalah yang biasa diselesaikan dengan non-deterministic
20
yaitu :
“yes” maka ada pembuktian dari fakta itu yang bisa dicek dalam waktu
Co-NP adalah kebalikan dari NP, jika jawaban dari permasalahan co-NP
adalah “no” maka ada pembuktian dari fakta itu yang bisa dicek dalam
waktu polynomial.
Menurut Munir (2009), heuristic berasal dari sebuah kata kerja Yunani,
sebagian orang menggunakan kata heuristic sebagai lawan kata dari algoritmik,
dimana kata heuristic ini diartikan sebagai proses yang mungkin dapat
menyelesaikan suatu masalah tetapi tidak ada jaminan bahwa solusi yang dicari
dengan solusi yang terbaik dan proses pencariannya cepat dan mudah. Fungsi
heuristic h(n) adalah perkiraan biaya termurah dari node n ke node tujuan. Fungsi
heuristic melambangkan cost yang akan dikeluarkan agent, jika memilih node
tertentu.
yang baik tetapi tidak ada bukti bahwa solusinya tidak bisa menjadi buruk secara
tidak masuk akal, dan tidak ada argument tentang ini bahwa hal ini mungkin saja bisa
terjadi.
menuju final node tanpa harus mencari ke arah lain. Sehingga jika fungsi heuristic-
nya terlalu underestimate akan menyebabkan algoritma ini beranggapan bahwa ada
rute yang lebih baik dari rute yang ada. Untuk fungsi heuristic yang underestimate,
bila nilainya terlalu rendah akan menyebabkan algoritma ini seperti algoritma
Dijkstra yang mencari kesegala arah yang mungkin. Hal ini dikarenakan tidak
evaluasi f(n). fungsi evaluasi best first search dapat berupa biaya
sebuah pencarian.
pencarian.
sedang dijalankan.
berhasil didapatkan.
algoritma best first search dapat dilihat pada gambar 2.3 dibawah
ini.
24
dalam OPEN.
sukses.
CLOSED.
bawahnya.
yaitu:
b. A*
Metode A* adalah salah satu contoh dari metode best first search. Metode A*
dikembangkan pada tahun 1968 oleh Peter Hart, Nils Nilsson, dan Bertram Raphael,
mereka juga menyebut metode tersebut dengan sebutan algoritma A, dengan metode
ini dan fungsi heuristic yang tepat menghasilkan sebuah hasil yang optimal, yaitu
A*.
Dalam ilmu komputer, A* (dibaca : A star) adalah sebuah graph atau metode
tree search yang digunakan untuk mencari jalan dari sebuah node awal ke node
tujuan yang telah ditentukan, metode ini mengunakan “estimasi heuristic” h(n) pada
setiap node untuk mengurutkan setiap node n berdasarkan estimasi rute terbaik yang
tujuan. Untuk mengetahui rute mana yang memungkinkan mengarah ke titik akhir,
Prinsip algoritma ini adalah mencari jalur terpendek dari sebuah simpul awal
(starting point) menuju simpul tujuan dengan memperhatikan harga (F) terkecil.
27
Secara umum, Depth First Search (DFS) dan Breadth First Search (BFS)
adalah dua kasus spesial dari metode A*. Algoritma Dijkstra’s merupakan kasus
Beberapa terminologi dasar yang terdapat pada algoritma ini adalah starting
point, simpul (nodes), A, open list, closed list, harga (cost), dan rintangan
(unwalkable).
Open list adalah tempat menyimpan data simpul yang mungkin diakses dari
Closed list adalah tempat menyimpan data simpul sebelum A yang juga
Harga (F) adalah nilai yang diperoleh dari penjumlahan nilai G, jumlah nilai
tiap simpul dalam jalur terpendek dari starting point ke A, dan H, jumlah nilai
Rintangan adalah sebuah atribut yang menyatakan bahwa sebuah simpul tidak
a. Cari node n dengan nilai f(n) yang paling rendah dalam open list.
b. Keluarkan current node dari open list dan masukan ke close list.
Jika tidak dapat dilalui atau sudah ada dalam close list,
abaikan.
Jika belum ada di open list. Buat current node parent dari
Jika sudah ada di open list, cek bila node tetangga ini lebih
telah ditemukan.
3. Simpan rute. Secara ‘backward’, urut mulai dari node goal ke parent-nya
algoritma-pencarian-rute.html)
secara bertahap membangun semua rute yang mengarah mulai dari titik awal
sampai akhirnya mencapai titik akhir. Metode A* hanya membangun rute yang
mungkin digunakan untuk mencapai tujuan. Untuk mengetahui rute mana yang
dari sembarang node ke node tujuan. Dalam kasus pencarian rute, ini bisa jadi
sama dengan jarak lurus antara dua titik, dimana biasanya merupakan perkiraan
dispesifikasikan oleh suatu formula, relasi, atau tabel yang mendaftar output
deterministic, yakni selalu menghasikan output yang sama dari input yang
sama. Input sering disebut argumen fungsi, sedangkan output disebut nilai
fungsi.
30
bagi suatu algoritma, tetapi mungkin juga gagal dalam memberikan petunjuk
h(x) bagian dari f(x) fungsi harus menjadi heuristik diterima, yaitu
seperti routing , h(x) mungkin mewakili garis lurus jarak ke tujuan, karena itu
adalah fisik yang mungkin jarak terkecil antara dua titik atau node.
maka h disebut monoton, atau konsisten . Dalam kasus seperti itu, A* dapat
diproses lebih dari sekali (lihat ditutup ditetapkan di bawah) dan A* setara
menemukan solusi jika ada. Jika heuristik fungsi h adalah diterima , artinya tidak
sendiri diterima (atau optimal ) jika kita tidak menggunakan satu set tertutup. Jika
suatu himpunan tertutup digunakan, maka h juga harus monoton (atau konsisten )
untuk A* menjadi optimal. Ini berarti bahwa untuk setiap pasangan node yang
31
berdekatan x dan y , di mana d (x, y) menunjukkan panjang tepi antara mereka, kita
harus memiliki:
Hal ini memastikan bahwa untuk setiap jalur X dari node awal untuk x :
jalur X diperluas untuk mencakup y . Dengan kata lain, tidak mungkin untuk
mengurangi (jarak total sejauh + perkiraan jarak yang tersisa) dengan memperluas
jalan untuk memasukkan node tetangga. (Hal ini analog dengan pembatasan bobot
ketika perkiraan heuristik pada setiap node tujuan itu sendiri adalah nol, karena
tujuan terdekat g ):
A * juga efisien secara optimal untuk setiap heuristik h , yang berarti bahwa
tidak ada algoritma yang optimal mempekerjakan heuristik yang sama akan
memperluas node kurang dari A *, kecuali ketika ada beberapa solusi parsial di
mana h tepatnya memprediksi biaya jalur yang optimal. Bahkan dalam kasus ini,
untuk setiap grafik ada ada beberapa urutan memutuskan hubungan dalam antrian
juga berarti bahwa A* harus memeriksa semua jalan sama berjasa untuk
diterimanya. Seringkali kita ingin terikat relaksasi ini, sehingga kami dapat
menjamin bahwa jalan solusi tidak lebih buruk daripada (1 + ε) kali jalan
h (n) , ε> 1 sebagai fungsi heuristik, dan melakukan pencarian A * seperti biasa
memiliki biaya paling ε kali dari jalur biaya termurah dalam grafik.
h (n) .
mana d(n) adalah kedalaman pencarian dan N adalah panjang diantisipasi dari
jalur solusi.
daftar FOCAL, yang digunakan untuk memilih node calon, dan yang
kedua h F digunakan untuk memilih node yang paling menjanjikan dari daftar
FOCAL.
mana A dan B adalah konstanta. Jika tidak ada node dapat dipilih, algoritma
konstanta.
33
konstanta dengan , π (n) adalah induk dari n, dan ñ adalah paling baru
memperluas simpul.
pohon, ada negara tujuan tunggal, dan fungsi heuristik h memenuhi Kondisi
berikut:
optimal, biaya yang tepat untuk mendapatkan dari x ke tujuan. Dengan kata
lain, kesalahan h tidak akan tumbuh lebih cepat daripada logaritma dari
dari x ke tujuan.
graph dimulai dari node awal, dan akan disimpan dalam sebuah queue yang
oleh fungsi :
Dimana, g(n) adalah nilai cost dari path yang telah ditemukan, yaitu
berat atau bobot dari jalur antar node yang telah dilalui. h(n) adalah estimasi
34
heuristic dari nilai cost paling minimal yang digunakan atau didapat untuk
menapai goal dari n. semakin besar nilai f(n), maka semakin besar
prioritasnya.
Pada kasus ini, fungsi f(n) = g(n) + h(n) didefinisikan sebagai berikut:
pola_dempet) + nilai_tambahan
saling bersinggungan/berdempetan.
1. Manhattan Distance
35
distance :
Dimana :
manhattan distance :
dipecahkan).
Dimana :
yaitu :
3. Diagonal Distance
Dimana :
dipecahkan).
untuk algoritma A* pada graph, fungsi heuristic yang tepat adalah straight
line distance dimana hasil yang didapat akan mempunyai cost yang lebih
p150)
merencanakan, oleh aplikasi komputer, dari rute terpendek antara dua titik. Pada
intinya, metode pathfinding mencari sebuah graph dengan memulai pada satu titik
dan mengeksplorasi berdekatan node sampai node tujuan tercapai, umumnya dengan
Tujuan dari algoritma pathfinding adalah untuk menemukan jalur terbaik dari
node awal ke node tujuan. Secara umum algoritma pathfinding digolongkan menjadi
dua jenis (Russel, Stuart, dan Peter Norvig, 1995, p73), yaitu :
keterangan tentang jarak atau biaya dari path dan tidak memiliki
39
pertimbangan akan path mana yang lebih baik. Yang termasuk dalam
Dalam posesnya, backtrack akan mundur ke solusi partial sebelumnya, jika terdapat
berada dalam lingkungan .NET(red: dot net) Framework yang sudah sejak lama
C# adalah salah satu dari banyak bahasa yang bisa dipakai untuk
pemrograman .NET. Kelebihan utama bahasa ini adalah sintaksnya yang mirip C,
namun lebih mudah dan bersih. Beberapa keunggulan dari C# lainnya, yaitu :
Sederhana (Simple)
dan C++.
40
polymorphism.
Efisien
kerumitan.
Modular
dibutuhkan oleh class dan metode yang dimaksud, maka kita dapat
membuat suatu kode yang dapat digunakan oleh satu atau beberapa
sistem perangkat lunak. UML dikembangkan sebagai suatu alat untuk analisis dan
desain berorientasi objek oleh Grady Booch, Jim Rumbaugh, dan Ivar Jacobson.
aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras,
sitem operasi, dan jaringan apapun, serta ditulis dalam bahasa pemrograman
apapun. Tetapi karena UML juga menggunakan class dan operation dalam konsep
dasarnya, maka UML lebih cocok untuk penulisan piranti lunak dalam bahasa
berorientasi objek, seperti C++, C#, Java, atau VB.NET. Walaupun demikian, UML
berada dalam sub sistem yang mana. Class diagram memiliki atribut,
class, package, dan objek beserta hubungan satu sama lain seperti
atau class yang harus mengetahui ekstensi class lain, atau class
atas..”).
Pewarisan, yaitu hubungan hierarkis antar class. Class dapat
diturunkan dari class lain dan mewarisi semua atribut dan metode
grafis siapa yang menggunakan sistem dan dengan cara seperti apa yang
Use case diagram berisi actor dan use case, yang memberikan
gambaran mengenai hubungan yang terjadi antara dua hal tersebut. Use
case diagram adalah titik permulaan dalam tahap analisa pada saat
keseluruhan dari struktur sistem dan fitur yang ada kepada pihak non
teknis, seperti bagian manajemen dan pengguna. Diagram ini juga dapat
3. Sequence Diagram
Sequence diagram menggambarkan secara grafis bagaimana objek
berinteraksi satu sama lain melalui pesan dalam eksekusi use case atau
actor dengan objek dan objek dengan objek lain. Pesan disampaikan
dari actor kepada objek, objek ke objek, dan dari objek ke actor untuk
yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang
sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase
4. Activity Diagram
Activity diagram menggambarkan secara grafis alur yang berurutan dari
aktifitas use case atau proses bisnis, atau logika dari metode objek.
yang ada dalam suatu use case yang kompleks dan memberikan
besar state adalah action dan sebagian besar transisi di-trigger oleh
45
sistem (dan interaksi antar sub sistem) secara eksak, tetapi lebih
secara umum.
Dalam standar UML menggunakan segiempat dengan sudut membulat
tertentu.