Minggu, 13 November 2016

Pembuatan Garis Vertikal, Horizontal dan Diagonal Menggunakan OpenGL


OpenGL (Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah lintas-bahasa, lintas platform API untuk mengembangkan aplikasi yang menghasilkan grafis komputer 2D maupun3D. Antarmuka terdiri dari lebih dari 250 panggilan fungsi yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang adegan-adegan kompleks dari bentuk-bentuk primitif sederhana. OpenGL dikembangkan oleh Silicon Graphics Inc (SGI) pada tahun 1992 [2] dan secara luas digunakan dalam CAD, realitas maya, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. Hal ini juga digunakan dalam video game, di mana bersaing dengan Direct3D on Microsoft Windows platform (lihat vs OpenGL Direct3D). OpenGL dikelola oleh sebuah teknologi konsorsium nirlaba yaitu Khronos Group. 
➧Untuk melihat panduan bagaimana cara pembuatan program tersebut klik, Disini

➧Untuk melihat hasil output program tersebut, klik Disini

Kamis, 03 November 2016

Pencarian Terbimbing (Heuristic Search)


Berbeda dengan blind search, heuristic search mempunyai informasi tentang cost/biaya untuk mencapai goal state dari current state. Dengan informasi tersebut, heuristic search dapat melakukan pertimbangan untuk mengembangkan atau memeriksa node-node yang mengarah ke goal state. Misalnya pada pencarian rute pada suatu peta, bila kita berangkat dari kota A ke kota tujuan B yang letaknya di Utara kota A, dengan heuristic search, pencarian akan lebih difokuskan ke arah Utara (dengan informasi cost ke goal), sehingga secara umum, heuristic search lebih efisien daripada blind search.

Heuristic search untuk menghitung (perkiraan) cost ke goal state, digunakan fungsi heuristic. Fungsi heuristic berbeda daripada algoritma, dimana heuristic lebih merupakan perkiraan untuk membantu algoritma, dan tidak harus valid setiap waktu. Meskipun begitu, semakin bagus fungsi heuristic yang dipakai, semakin cepat dan akurat pula solusi yang didapat. Menentukan heuristic yang tepat untuk kasus dan implementasi yang ada juga sangat berpengaruh terhadap kinerja algoritma pencarian. Aplikasi yang menggunakan fungsi heuristic : Google, Deep Blue Chess Machine

Beberapa contoh algoritma pencarian yang menggunakan metode heuristic search adalah Generate and Test Best First Search, Greedy Search, A* (A Star) Search, dan Hill Climbing Search.

PEMBANGKITAN dan PENGUJIAN (Generate and Test)

-Metode ini merupakan penggabungan antara depth-first search dengan pelacakan mundur (backtracking), yaitu bergerak ke belakang menuju pada suatu keadaan awal.
Algoritma :

1. Bangkitkan suatu kemungkinan solusi (membangkitkan suatu tititk tertentu atau lintasan tertentu dari keadaan awal).
2. 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.
3. 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 kali. Misalkan ada 4 kota  dengan jarak antara tiap-tiap kota seperti berikut ini :

Alur pencarian dengan Generate and Test

Pencarian ke-
Lintasan
Panjang Lintasan
Lintasan terpilih
Panjang Lintasan terpilih
1
ABCD
19
ABCD
19
2
ABDC
18
ABDC
18
3
ACBD
12
ACBD
12
4
ACDB
13
ACBD
12
5
ADBC
16
ACBD
12
Dst…..


PENDAKIAN BUKIT (Hill Climbing)
Metode ini hampir sama dengan metode pembangkitan dan pengujian, hanya saja proses pengujian dilakukan dengan menggunakan fungsi heuristic. Pembangkitan keadaan berikutnya tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristic ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnyayang mungkin.
Algoritma:

1. Cari operator yang belum pernah digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.
a) Kerjakan langkah-langkah berikut sampai solusinya ditemukan atau sampai tidak ada operator baru yang akan diaplikasikan pada keadaan sekarang : Cari operator yang belum digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.
b) Evaluasi keadaan baru tersebut :
– Jika keadaan baru merupakan tujuan, keluar
– Jika bukan tujuan, namun nilainya lebih baik daripada keadaan sekarang, maka jadikan keadaan baru tersebut menjadi keadaan sekarang.
– Jika keadaan baru tidak lebih baik daripada keadaan sekarang, maka lanjutkan iterasi.

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 lintasan dengan menukar posisi urutan 2 kota, maka kita akan mendapatkan sebanyak 6 kombinasi. Fungsi heuristic yang digunakan adalah panjang lintasan yang terjadi.




Source
viska.web.id/wp-content/uploads/2012/03/Modul-Pertemuan-2-7.pdf
cs.unsyiah.ac.id/~irvanizam/teaching/ai/INF303-04.pdf
dir.unikom.ac.id/s1-final-project/fakultas...dan...pdf/pdf/4-unikom-d-i.pdf
hendrik.staff.gunadarma.ac.id/Downloads/files/23065/teknik-pencarian-heuristik.pdf


Pencarian Buta (Blind Search)


Blind Search adalah pencarian solusi tanpa adanya informasi yang dapat mengarahkan pencarian untuk mencapai goal state dari current state (keadaan sekarang). Informasi yang ada hanyalah definisi goal state itu sendiri, sehingga algoritma dapat mengenali goal state bila menjumpainya.

Dengan ketiadaan informasi, maka blind search dalam kerjanya memeriksa/mengembangkan node-node secara tidak terarah dan kurang efisien untuk kebanyakan kasus karena banyaknya node yang dikembangkan.

Beberapa contoh algoritma yang termasuk blind seacrh  antara lain adalah

Breadth First Search, Uniform Cost Search, Depth First Search, Depth Limited Search, Iterative Deepening Search, dan Bidirectional Search.



BreadthFirst Search

Semua node pada level n akan dikunjungi terlebih dahulu sebelum mengunjungi node-node pada level n+1. Pencarian dimulai dari node akar terus ke level 1 dari kiri ke kanan, kemudian berpindah ke level berikutnya dari kiri ke kanan hingga solusi ditemukan.


Keuntungan :

-     tidak akan menemui jalan buntu, menjamin ditemukannya solusi (jika solusinya memang ada) dan solusi yang ditemukan pasti yang paling baik
-     jika ada 1 solusi, maka breadth – first search akan menemukannya,jika ada lebih dari 1 solusi, maka solusi minimum akan ditemukan.
-      Kesimpulan : complete dan optimal
Kelemahan :
-    membutuhkan memori yang banyak, karena harus menyimpan semua simpul yang pernah dibangkitkan. Hal ini harus dilakukan agar BFS dapat melakukan penelusuran simpul-simpul sampai di level bawah
-        membutuhkan waktu yang cukup lama


CONTOH KASUS:




1.    Padametode ini diperiksa setiap node pada level yang sama sebelum mengolah ke level berikutnya yang lebih dalam.

2.     Pencariandilakukan pada semua simpul dalam setiap level secara berurutan dari kiri ke kanan.

3.     jikapada satu level belum ditemukan solusinya, maka pencarian dilanjutkan pada level berikutnya.

Depth – First Search

Pencarian dilakukan pada suatu simpul dalam setiap level dari yang paling kiri.
Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada simpul sebelah kanan dan simpul 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.

Keuntungan :

-       membutuhkan memori relatif kecil, karena hanya node-node pada lintasan yang aktif saja yang disimpan
-       Secara kebetulan, akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan, jadi jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya dengan cepat Æ waktu cepat
Kelemahan :
-    Memungkinkan tidak ditemukannya tujuan yang diharapkan, karena jika pohon yang dibangkitkan mempunyai level yang sangat dalam (tak terhingga) Æ tidak complete karena tidak ada jaminan menemukan solusi
-     Hanya mendapat 1 solusi pada setiap pencarian, karena jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka DFS tidak menjamin untuk menemukan solusi yang paling baik Æ tidak optimal.

CONTOH KASUS:



1.     Pencariandilakukan pada suatu simpul dalam setiap level dari yang paling kiri.

2.    Jikapada level yang terdalam, solusi belum ditemukan, maka pencarian dilanjutkan pada simpul sebelah kanan dan simpul yang kiri dapat dihapus dari memori

3.  Jikapada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya.

4.     Demikian seterusnya sampai ditemukan solusi

Source
viska.web.id/wp-content/uploads/2012/03/Modul-Pertemuan-2-7.pdf
cs.unsyiah.ac.id/~irvanizam/teaching/ai/INF303-04.pdf
dir.unikom.ac.id/s1-final-project/fakultas...dan...pdf/pdf/4-unikom-d-i.pdf