TUGAS GRAFIK KOMPUTER & PENGOLAHAN CITRA

Membuat Garis dengan Menggunakan Java + OpenGL
Sedikit pengetahuan sebelum nya, akan dijelas kana terlebih dahulu apa itu OpenGL. OpenGL (Open Graphics Library) adalah spesifikasi yang mendefinisikan sebuah lintasan-lintasan bahasa, lintasan platform API untuk mengembangkan aplikasi yang menghasilkan grafis komputer 2d atau 3d. Antarmuka terdiri dari lebih dari 250 panggilan fungsi yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang adegan-adegan kompleks dari bentuk-bentuk primitf sederhana.
Lanjut ke membuat garis dengan menggunakan Java + OpenGL, kita persiapkan terlebih dahulu tools yang kita butuh kan untuk membuat program nya.
1.     Java Development Kit
Tools tersebut merupakan syarat penting dalam mengembangkan aplikasi java dimana berisi library-library dan compiler untuk mengeksekusi kodingan dalam java.
2.     Java IDE (Netbeans)
Untuk IDE sendiri kita bebas dalam memilih yang penting library yang akan kita download mensupport IDE tersebut.
3.     Library LWJGL
Library ini berfungsi untuk menghubungkan antara Netbeans dengan OpenGL.
Dalam membuat Program ini saya menggunakan Bahasa java dengan IDE Netbeans 8.0.1 dan library penghubung antara IDE dengan Open GL yaitu LWJGL 2.9.3 yang berjalan pada OS windows 7 32bit.

Bila sudah lalu kita membuat Project Baru, buat 1 main class java + 3 class. Untuk main class nya ini kita isikan dengan source code LineMaker, lalu untuk 3class lain nya kita isikan dengan source code Horizontal, Vertikal dan Diagonal.
ini link penjelasan dari programnya :
dibawah merupakan link dari aplikasi garisnya :

HEURISTIC SEARCH

TEKNIK PENCARIAN HEURISTIK
Heuristik adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian, namun dengan kemungkinan mengorbankan kelengkapan ( completeness ).

Fungsi Heuristik digunakan untuk mengevaluasi keaadaan – keadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan.

Jenis – jenis Pencarian Heuristik :
Ø Generate and Test
Pada prinsipnya metode ini merupakan penggabungan antara depth – first search dengan pelacakan mundur ( backtracking ), yaitu bergerak ke belakang menuju pada suatu keadaan awal.

Algoritma Generate dan Test:
·         Bangkitkan suatu kemungkinan solusi ( membangkitkan suatu titik tertentu atau lintasan tertentu dari keadaan awal ).
·         Uji untuk melihat apakah node tersebut benar – benar merupakan solusinya dengan cara membandingkan node tersebut atau node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang diharapkan.
·         Jika solusi ditemukan, keluar. Jika tidak, ulangi kembali langkah pertaama.

Kelemahan
·         Perlu membangkitkan semua kemungkinan sebelum dilakukan pengujian
·         Membutuhkan waktu yang cukup lama dalam pencariannya

Contoh :
o  Seorang salesman ingin mengunjungi kota
o  Jarak antara tiap – tiap kota sudah diketahui
o  Kita ingin mengetahui rute terpendek dimana setiap kota hanya boleh dikunjungi tepat 1 kali
o  Misal ada 4 kota dengan jarak antara tiap – tiap kota seperti berikut ini :


 

Ø Hill Climbing
Hampir sama Generate and Test, perbedaan terjadi pada feedback dari prosedur test untuk pembangkitan keadaan berikutnya.

Tes yang berupa fungsi heuristik akan menunjukkan seberapa baik nilai terkaan yang diambil terhadap keadaan lain yang mungkin.

Menyelesaikan masalah yang mempunyai beberapa solusi. Ada solusi yang lebih baik daripada solusi lain.
·         Simple Hill Climbing
Algoritma Simple Hill Climbing:
o   Evaluasi state awal, jika state awal sama dengan tujuan, maka proses berhenti. Jika tidak sama dengan tujuan maka lanjutkan proses dengan membuat state awal sebagai state sekarang.
o   Kerjakan langkah berikut sampai solusi ditemukan atau sampai tidak ada lagi operator baru yang dapat digunakan dalam state sekarang :
-          Cari sebuah operator yang belum pernah digunakan dalam state sekarang dan gunakan operator tersebut untuk membentuk state baru
-          Evaluasi state baru
§  Jika state baru adalah tujuan, maka proses berhenti
§  Jika state baru tersebut bukan tujuan tetapi state baru lebih baik daripada state sekarang, maka buat state baru menjadi state sekarang
§  Jika state baru tidak lebih baik daripada state sekarang, maka lanjutkan kelangkah sebelumnya
·         Steepest Ascent Hill Climbing
Mirip dengan simple hill climbing. Perbedaannya dengan simple hill climbing :
-       Semua suksesor dibandingkan, dan yang paling dekat dengan solusi yang dipilih
-       Pada simple hill climbing, node pertama yang jaraknya terdekat dengan solusi yang dipilih

Algoritma Steepest Ascent Hill Climbing:
o  Evaluasi keadaan awal ( Intial State ), jika keadaan awal sama dengan tujuan ( Goal State )maka kembali pada initial state dan berhenti berproses. Jika tidak maka initial state tersebut jadikan sebagai current state.
o  Mulai dengan current state = intial state
o  Dapatkan semua pewaris ( successor ) yang dapat dijadikan next state pada current statenya dan evaluasi successor tersebut dengan fungsi evaluasi dan beri nilai pada setiap successor tersebut
o  Jika salah satu dari successor tersebut mempunyai nilai yang lebih baik dari current state maka jadikan successor dengan nilai yang paling baik tersebut sebagai new current state
o  Lakukan operasi ini terus menerus hingga tercapai current state = goal state atau tidak ada perubahan pada current statenya

Ø Best First Search
Teknik Best – First – Search adalah teknik search yang menggabungkan kebaikan yang ada dari teknik Depth – First – Search dan Breadth – First – Search.
Tujuan menggabungkan dua teknik search ini adalah untuk menelusuri satu jalur saja pada satu saat, tapi dapat berpindah ketika jalur lain terlihat lebih menjanjikan dari jalur yang sedang ditelusuri. Untuk mendapatkan jalur yang menjajikan adalah dengan memberikan skala prioritas pada setiap state saat dihasilkan dengan fungsi heuristik.
o  Pada best first search, pencarian diperbolehkan mengunjungi node di lebih rendah, jika ternyata node di level lebih tinggi memiliki nilai heuristik lebih buruk.
o  Fungsi Heuristik yang digunakan merupakan prakiraan ( estimasi ) cost  dari initial state ke goal state, yang dinyatakan dengan :
-       f’(n) = g(n) + h’(n)
-       f’ = Fungsi evaluasi
-       g = cost dari initial state ke current state
-       h’ = prakiraan cost dari current state ke goal state

Untuk menggunakan Best – First – Search, kita memerlukan dua daftar simpul, yaitu :
OPEN
Berisi simpul yang dihasilkan dari fungsi heuristik tapi belum di evaluasi, memiliki antrian prioritas dimana elemen dengan prioritas tertinggi adalah yang memiliki nilai paling baik yang dihasilkan fungsi heuristik.

CLOSED
Berisi simpul yang sudah di evaluasi. Kita perlu tatap menyimpan simpul – simpul ini dalam memori jika kita ingin melakukan search pada Graph, sehingga jika kita menemui suatu simpul kita bisa memeriksa apakah simpul ini sudah pernah di evaluasi atau belum.

Algoritma Best First Search:
§  Mulai dengan OPEN hanya berisi initial state
§  Sampai goal ditemukan atau tidak ada lagi simpul yang tersisa dalam OPEN, lakukan:
-       Pilih simpul terbaik dalam OPEN
-       Telusuri successor-nya
-       Untuk tiap successor, lakukan :
v  Jika belum pernah ditelusuri sebelumnya, evaluasi simpul ini, tambahkan kedalam OPEN dan catat parentnya.
v  Jika sudah pernah ditelusuri, ganti parent nya jika jalur baru lebih baik dari sebelumnya.

Ø  Alpha Beta Prunning, Means – End – Anlysis, Constraint Satisfaction, Simulated Annealing, etc.

Sumber:

BLIND SEARCH

ALGORITMA GRAPH

·                Algoritma traversal di dalam graf adalah mengunjungi simpul – simpul dengan cara yang sistematik.
·                Pencarian Melebar ( Breadth First Search atau BFS )
·                Pencarian Mendalam ( Depth First Search atau DFS )

1.             Breadth First Search atau BFS
Breadth First Search adalah algoritma pencarian simpul dalam graf (pohon) secara traversal yang dimulai dari simpul akar dan mengecek semua simpul – simpul tetangganya. Setelah itu, dari tiap simpul tetangganya, algoritma akan terus mengecek semua simpul tetangganya yang belum dicek. Sedemikian seterusnya hingga menemukan simpul tujuan Breadth First Search. Interpreter kaidah mulai dari fakta yang ada yaitu hipotesa kemudian kaidah bagian THEN mulai di uji untuk mendukung hipotesa awal. Jika ditemukan maka kaidah IF yang cocok digunakan untuk menghasilkan hipotesa antara yang baru. kemudian proses berantai terus di ulang, mengumpulkan bukti yang mendukung, sehingga hipotesa kebenarannya.
 


Graf Breadth First Search

Breadth First Search merupakan proses penalaran dengan pendekatan proses goal – driven. Memulai titik pendekatannya dari goal yang akan dicari nilainya kemudian bergerak mencari informasi yang mendukung goal tersebut.

Keuntungan BFS:
·           Tidak menemui jalan buntu.
·           Jika ada suatu solusi, maka Braedth First Search akan menemukannya. Dan jika didapat lebih dari satu solusi, maka solusi minimum akan ditemukan.
Kelemahan BFS:
·           Membutuhkan memori yang cukup banyak, karena menyimpan semua node dalam suatu pohon.
·           Membutuhkan waktu yang cukup lama, karena akan menguji n level untuk mendapatkan solusi pada level ke – ( n + 1 )
·           Idenya mirip dengan algo prim dan dijkstra.
·           Traversal dimulai dari simpul v.
·           Algoritma :
-       Kunjungi simpul v,
-       Kunjungi semua simpul yang bertetangga dengan simpul v terlebih dahulu,
-       Kunjungi simpul yang belum dikunjungi dan bertetangga dengan simpul – simpul yang tadi di kunjungi, demikian seterusnya.
·           Jika graf berbentuk pohon berakar, maka semua simpul pada aras d dikunjungi lebih dahulu sebelum simpul – simpul pada aras d + 1.

Representasi BFS
·           Pada umumnya graf di representasikan baik secara array ataupun list.
·           Dalam kuliah ini menggunakan Link LIST dan queue
Strucut node {
     int data;
     struct node *link;
};

BFS Properti dan Running Time
·           O ( V + E )
·           G = ( V, E ), bfs mencari seluruh vertex yang dapat diraih dari source s.
·           Untuk setiap vertex pada level l, path bfs tree antara s dan v mempunyai 1 edge dan selain path dalam G antara s dan v setidaaknya mempunyai 1 edge.
·           Jika ( u, v ) adalah edge maka jumlah level u dan v dibedakan setidaknya satu tingkat.
·           BFS menghitung seluruh jarak terpendek ke seluruh vertex yang dapat di raihnya.

Kegunaan BFS
·           Memeriksa apakah graph terhubung.
·           Menghitung spanning forest graph.
·           Menghitung, tiap vertex dalam graph, jalur dengan jumlah edge menimum antara vertex awal dan current vertex atau ketiadaan path.
·           Menghitung cycle dalam graph atau ketiadaan cycle.
·           O ( V + E )

Contoh BFS
·           Awal simpul adalah v1 dari graf G dibawah
·           Kunjungan BFS menghasilkan :
·           v1, v2, v5, v3, v4, v7, v6, v8, v9



2.             Depth First Search atau DFS
Metode Depth First Search dilakukan dengan node awal secara mendalam hingga yang paling akhir ( dead – end ) sampai ditemukan goal state. Dengan kata lain, simpul cabang anak yang terlebih dahulu dikunjungi. Andaikan tujuan yang diinginkan belum tercapai maka pencarian dilanjutkan ke cabang berikutnya hingga semua node di kunjungi.

Depth First Search ( DFS ) adalah algoritma pencarian simpul dalam graf secara traversal yang dimulai dari simpul akar dan mengecek simpul anaknya yang pertama, setelah itu, algoritma mengecek simpul anak dari simpul anak yang pertama tersebut, hingga mencapai simpul daun atau simpul tujuan.
·           Traversal dimulai dari simpul v.
·           Algoritma:
-                Kunjungi simpul v,
-                Kunjungi simpul w yang bertetangga dengan simpul v
-                Ulangi DFS mulai dari simpul w
-                Ketika mencapai simpul u sedemikian sehingga semua simpul yang bertetangga dengannya telah dikunjungi, pencarian dirunut – balik ke simpul terakhir yang dikunjungi sebelumnya dan mempunyai simpul w yang belum dikunjungi.
-                Pencarian berakhir bila tidak ada lagi simpul yang belum dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi.

Keuntungan DFS:
·           Membutuhkan memori yang relaatif kecil, karena hanya node – node pada lintasan yang aktif yang disimpan.
·           Secara kebetulan, metode Depth First Search akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan.

Kelemahan DFS:
·           Memungkinkan tidak ditemukannya tujuan yang diharapkan
·           Hanya akan mendapatkan satu solusi pada setiap pencarian

Untuk memeriksa algoritma diatas, bahwa keadaan – keadaan turunan (descendent) ditambahkan atau dihapuskan dari ujung kiri open. Hasil dari penerapan algoritma.


 



Sumber :


Elearning.uin-suka.ac.id/attachment/pencarian_heuristik_bjyr6.pdf

Disney The Little Mermaid Ariel Glitter
 
SOFTSKILL Blog Design by Ipietoon