Kamis, 17 November 2016

MEMBUAT PROGRAM VERTIKAL, HORIZONTAL DAN DIAGONAL

Pada kali ini saya ingin menjelaskan cara membuat program garis Vertikal, Horizontal dan Diagonal menggunakan tool Aplikasi Netbeans dan LWJGL. Masih banyak yang bingung untuk membedakan antara garis vertikal dan garis horizontal, hal ini yang membuat saya coba sharing apa perbedaan vertikal dan horizontal itu sendiri.. mari kita simak ulasan berikut!!

Apa itu garis Vertikal? Horizontal? Diagonal? dan apa itu aplikasi Netbeans dan LWJGL?
Arah garis menggambarkan hubungan antar garis terhadap halaman. Arah garis ini dibedakan menjadi tiga, yaitu agaris horizontal dan garis vertical garis diagonal. Garis horizontal bergerak melintasi halaman dari kiri ke kanan atau dari kanan ke kiri. Atau dari barat ke timur atau timur ke barat. Garis vertical bergerak dari atas ke bawah atau dari bawah ke atas atau dari utara keselatan atau selatan ke utara. Sedangkan garis diagonal adalah garis yang bergerak sudut menyudut, dari sudut kiri atas menuju sudut kanan bawah atau  dari kanan bawah menuju sudut sudut kiri atas atau  dari sudut kanan atas menuju sudut kiri bawah atau  dari sudut kiri bawah menuju sudut kanan atas.

Sebagai tambahan OpenGL adalah kumpulan standard API (Application Programming Interface) yang menghubungkan software dengan hardware grafis untuk menampilkan gambar 2D dan 3D. Intinya OpenGL itu adalah kumpulan library untuk mengakses hardware (GL= graphical library). Sedangkan , Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystems saat ini merupakan bagian dari Oracle dan dirilis tahun 1995.

Namun, disini saya membuat program garis vertikal, horizontal dan diagonal dengan menggunakan Aplikasi Netbeans dan LWJGL sebagai library dari program tersebut.

Nah, beberapa ulasan tersebut sebagai pengetahuan saja, untuk membuatnya dibutuhkan beberapa tool yang digunakan dan File LWJGL untuk mejalankan program tersebut, yaitu :
TOOL :
   1. Aplikasi Netbeans
Bahan File LWJGL :
   1.  LWJGL - 2.9.3
   2.  LWJGL Source
   3. LWJGL Javadoc

Jika, berkenan ingin mencoba bisa didownload file document lengkap dengan langkah-langkah nya dibawah ini sebagai berikut :





Sabtu, 05 November 2016

Metode Pencarian Heuristic Search

Heuristic Search
     Heuristic Search adalah pencarian bersyarat (terbimbing). Artinya, solusi yang diperoleh adalah solusi yang terbaik, bukan solusi sekali ketemu. Bagian-bagiannya adalah [masalah]-[pencarian]-[syarat]-[solusi]. Misal contoh masalah pada kasus di atas, Ambillah kelereng merah yang tidak pecah dan tidak lonjong. Sehingga ketika ketemu kelereng merah dan ada pecahnya, itu masih bukan solusi karena tidak sesuai dengan syarat (tidak pecah dan tidak lonjong). 
    Fungsi heuristik digunakan untuk mengevaluasi keadaan-keadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan.

Generate & Test
Metode ini merupakan penggabungan antara depth-first search dengan pelacakan mundur (backtracking), yaitu bergerak kebelakang menuju pada suatu keadaan awal. Algoritma: 
Bangkitkan suatu kemungkinan solusi (membangkitkan suatu tititk tertentu atau lintasan tertentu dari keadaan awal). 
Uji untuk melihat apakah node tersebut benar-benar merupakan solusinya dengan cara membandingkan node terebut atau node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang diharapkan. 
Jika solusi ditemukan, keluar. Jika  tidak, ulangi kembali langkah pertama.
Contoh :
“Travelling Salesman Problem (TSP)” Seorang salesman ingin mengunjungi n kota. Jarak antara tiap-tiap kota sudah diketahui. Kita ingin mengetahui ruter terpendek dimana setaip kota hanya boleh dikkunjungi tepat  1 kal i. Misalkan ada 4 kota dengan jarak antara tiap-tiap kota seperti gambar di bawah ini: 


Penyelesaian dengan metode Generate and Test




Hill Climbing.
Metode Hill Climbing hampir sama dengan metode pembangkitan & pengujian (Generate and Test), hanya saja proses pengujian dilakukan dengan menggunakan fungsi heuristik. Pembangkitan keadaan berikutnya sangat tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristik ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnya yang mungkin.

Hill Climbing adalah proses pengujian yang dilakukan dengan menggunakan fungsi heuristik. Pembangkitan keadaan berikutnya sangat  tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristik ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnya yang mungkin.

Contoh: TSP dengan Simple Hill Climbing.
Disini ruang keadaan berisi semua kemungkinan lintasan yang mungkin. Operator digunakan untuk menukar posisi kota-kota yang bersebelahan. Apabila ada n kota, dan kita ingin mencari kombinasi l intasan dengan menukar posisi urutan 2 kota, maka kita akan mendapatkan sebanyak: 

atau sebanyak 6 kombinasi (lihat gambar dibawah). Fungsi heuristic yang digunakan adalah panjang lintasan yang terjadi.










Metode Pencarian Blind Search

Blind Search.
Blind Search merupakan pencarian asal ketemu. Jika solusi sudah ketemu, maka pencarian akan dihentikan. Jika dibuat skemanya, pencarian buta hanya mengenal tiga bagian, [masalah]-[pencarian]-[solusi]. Misalkan dalam kotak ada 3 kelereng warna merah, 3 biru, dan 3 kuning. Masalahnya adalah, ambillah satu kelereng yang berwarna merah. Solusi, setelah melakukan pencarian, kemudian didapat satu kelereng warna merah, nah, itulah solusinya.

model pencarian blind search yang tidak memiliki informasi awal, model pencarian ini memiliki tiga ciri – ciri utama yaitu:
1. Membangkitkan simpul berdasarkan urutan.
2. Kalau ada solusi maka solusi akan ditemukan.
3. Hanya memiliki informasi tentang node yang telah dibuka (node selanjutnya tidak diketahui).
4. Variabel data pada Blind Search tidak mempunyai atribut / informasi tambahan.

Breadth First Search.
Breadth First Search yaitu model pencarian yang memakai metode melebar. Untuk mencari hasilnya, model Breadth First Search ini menggunakan teknik pencarian persoalannya dengan cara membuka node (titik) pada tiap levelnya. Algoritma yang melakukan pencarian secara melebar yang mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian mengunjungi semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu. Selanjutnya, simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya. algoritma BFS menggunakan graf sebagai media representasi persoalan, tidak sulit untuk mengaplikasikan algoritma ini dalam persoalan-persoalan teori graf.

Contoh algoritma Breadth First Search :

Dalam algoritma Breadth First Search, simpul anak yang telah dikunjungi disimpan dalam suatu antrian. Antrian ini digunakan untuk mengacu simpul-simpul yan bertetangga dengannya yang akan dikunjungi kemudian sesuai urutan pengantrian. Untuk memperjelas cara kerja algoritma Breadth First Search beserta antrian yang digunakannya, berikut langkah-langkah algoritma Breadth First Search:
Masukkan simpul ujung (akar) ke dalam antrian.
Ambil simpul dari awal antrian, lalu cek apakah simpul merupakan solusi.
Jika simpul merupakan solusi, pencarian selesai dan hasil dikembalikan.
Jika simpul bukan solusi, masukkan seluruh simpul yang bertetangga dengan simpul tersebut (simpul anak) ke dalam antrian.
Jika antrian kosong dan setiap simpul sudah dicek, pencarian selesai dan mengembalikan hasil solusi tidak ditemukan.
Ulangi pencarian dari langkah kedua.
Keuntungan :
1. Tidak akan menemui jalan buntu
2. Jika ada satu solusi, maka breadth-first search akan menemukannya. Dan, jika ada lebih dari satu solusi, maka solusi minimum akan ditemukan.

Kelemahan :
1. Membutuhkan memori yang cukup banyak, karena menyimpan semua node dalam satu pohon
2. Membutuhkan waktu yang cukup lama.

Depth First Search.
Pencarian dilakukan pada satu node dalam setiap level dari yang paling kiri. Jika pada level yang paling dalam, solusi belum ditemukan, maka pencarian dilanjutkan pada node sebelah kanan. Node yang kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai ditemukan solusi. Jika solusi  ditemukan maka tidak diperlukan proses backtracking (penelusuran balik untuk mendapatkan jalur yang dinginkan).

Kelebihan Depth First Search adalah:
1. Pemakain memori hanya sedikit, berbeda jauh dengan BFS yang harus menyimpan semua node yang pernah dibangkitkan.
2. Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya secara cepat.

Kelemahan Depth First Search adalah:
1.Jika pohon yang dibangkitkan mempunyai level yang dalam (tak terhingga), maka tidak ada jaminan untuk menemukan solusi (Tidak Complete).
2. Jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka pada DFS tidak ada jaminan untuk menemukan solusi yang paling baik (Tidak Optimal).


Sumber :