Kamis, 27 April 2017

Contoh 2 : Coding Java Binary Tree (Preorder, Inorder, Postorder)

package binarytree;
/**
 *
 *
 */
import java.util.Stack;
public class BinaryTree4 {
 public static class TreeNode
 {
  int data;
  TreeNode left;
  TreeNode right;
  TreeNode(char data)
  {
   this.data=data;
  }
 }
 // Recursive Solution
 public void preorder(TreeNode root) {
    if(root !=  null) {
   //Visit the node-Printing the node data  
      System.out.printf("%c ",root.data);
      preorder(root.left);
      preorder(root.right);
    }
  }
 // Recursive Solution
 public void postOrder(TreeNode root) {
  if(root !=  null) {
   postOrder(root.left);
   postOrder(root.right);
   //Visit the node by Printing the node data  
   System.out.printf("%c ",root.data);
  }
 }
 // Recursive Solution
 public void inOrder(TreeNode root) {
  if(root !=  null) {
   inOrder(root.left);
   //Visit the node by Printing the node data  
   System.out.printf("%c ",root.data);
   inOrder(root.right);
  }
 }
 public static void main(String[] args)
 {
  BinaryTree4 bi=new BinaryTree4();
  // Creating a binary tree
  TreeNode rootNode=createBinaryTree();
  System.out.println("Tampilan PreOrder Tree :");
  bi.preorder(rootNode);
  System.out.println();
  System.out.println("-------------------------");
  System.out.println("Tampilan PostOrder Tree :");
  bi.postOrder(rootNode);
  System.out.println();
  System.out.println("-------------------------");
  System.out.println("Tampilan InOrder Tree:");
  bi.inOrder(rootNode);
 }
 public static TreeNode createBinaryTree()
 {  
  TreeNode rootNode =new TreeNode('A');
  TreeNode nodeB=new TreeNode('B');
  TreeNode nodeC=new TreeNode('C');
  TreeNode nodeD=new TreeNode('D');
  TreeNode nodeE=new TreeNode('E');
  TreeNode nodeF=new TreeNode('F');
  TreeNode nodeG=new TreeNode('G');
  TreeNode nodeH=new TreeNode('H');    
  TreeNode nodeI=new TreeNode('I');
  TreeNode nodeJ=new TreeNode('J');

  rootNode.left=nodeB;
  rootNode.right=nodeC;
  nodeB.left=nodeD;
  nodeB.right=nodeE;
  nodeC.left=nodeF;
  nodeD.left=nodeG;
  nodeD.right=nodeH;
  nodeE.left=nodeI;
  nodeF.right=nodeJ;
  return rootNode;
 }
}

Tampilan Output :


Read more

BBM vs LINE : Manakah yang Lebih Unggul ?


By Frandy

Aplikasi pesan instan yang anda gunakan sehari-hari tentu memberikan banyak kemudahan dalam kegiatan komunikasi sehari-hari. Selain mengirim pesan teks, aplikasi ini juga dapat mengirimkan gambar, video, pesan suara, file, hingga dapat melakukan panggilan hanya dengan koneksi internet.

Di Indonesia, dari pengamatan penulis terdapat dua aplikasi yang sangat populer di kalangan generasi muda, yaitu BBM dan LINE. Masing-masing aplikasi tersebut tentu memiliki kelebihan dan kelemahannya sendiri-sendiri. Dalam artikel ini, penulis ingin berdiskusi tentang kedua aplikasi chatting terpopuler di kalangan generasi muda saat ini.

Blackberry Messenger (BBM)
Aplikasi ini dulu sebenarnya disediakan hanya untuk pengguna perangkat Blackberry saja, tapi sejak tahun 2013 aplikasi tersebut dapat kita gunakan di perangkat Android maupun iOS dengan mengunduh secara gratis di Google Play Store dan App Store.
Bertahun-tahun penulis menggunakan aplikasi BBM, mungkin inilah pengalaman yang penulis dapatkan hingga saat ini tentang kelebihan dan kekurangan dari BBM.

Kelebihan :
1.      Adanya fitur PING!!!, dengan ini memberitahu teman-teman kita untuk respon segera
2.      Fitur Pesan Tarik, kita bisa menarik kembali pesan dan foto bahkan setelah terkirim, ini berguna ketika kita typo atau salah kirim pesan
3.      Fitur Timer, kita bisa menentukan lama membaca pesan yang kita kirim ke lawan bicara
4.      Dapat mengirim file lain selain gambar

Kekurangan :
1.      Aplikasi relatif berat, bila menggunakan perangkat Android yang low end terkadang terasa berat saat loading aplikasi
2.      Terkadang gambar lawan bicara tidak muncul
3.      Terkadang bisa lost contact
4.      Tidak dapat menambahkan daftar teman di kontak hp secara otomatis, harus menggunakan PIN

LINE
LINE menjadi populer di kalangan generasi muda berkat fitur stiker, dan para maskot lucu LINE yang telah melekat di hati para generasi muda. Langsung saja berikut adalah kelebihan dan kekurangannya.

Kelebihan :
1.      Banyak pilihan tema, stiker dan emoticon yang tersedia
2.      Untuk bermain game, Line menyediakan Line Get Rich, Line Ranger, dll
3.      Banyak aplikasi penunjang seperti LINE Camera, Line@, LineCard, Line Dictionary, dll
4.      Dapat menambahkan daftar teman secara otomatis melalui kontak hp
5.      Bisa digunakan di PC

Kekurangan :
1.      Notifikasi game yang terkadang mengganggu
2.      Menggunakan data internet yang relatif lebih banyak dari aplikasi messenger lain (seperti WhatsApp)
3.      Tidak dapat mengetahui id teman di contact line, tetapi ini tidak masalah bagi sebagian orang yang ingin privasi lebih

Lalu, mana yang terbaik diantara kedua aplikasi chatting populer ini? Keduanya sama-sama memiliki kekurangan dan kelebihan seperti dijabarkan diatas. BBM unggul soal privasi dan hal lain seperti fitur ping, tarik pesan, dan pesan berwaktu.


Sementara LINE mengandalkan kemudahan seperti menambah daftar teman secara otomatis serta banyak pilihan tema dan stiker yang dapat diunduh secara gratis maupun berbayar. Dari uraian diatas, pembaca dapat membandingkan kedua aplikasi diatas. Sehingga bisa memilih salah satu aplikasi messenger berdasarkan kebutuhan pengguna (pembaca).

Read more

Contoh 1 : Coding Java Binary Tree (Preorder, Inorder, Postorder)



package binarytree;
/**
 *
 *
 */
import java.util.Stack;
public class BinaryTree3 {
 public static class TreeNode
 {
  int data;
  TreeNode left;
  TreeNode right;
  TreeNode(char data)
  {
   this.data=data;
  }
 }
 // Recursive Solution
 public void preorder(TreeNode root) {
    if(root !=  null) {
   //Visit the node-Printing the node data  
      System.out.printf("%c ",root.data);
      preorder(root.left);
      preorder(root.right);
    }
  }
 // Recursive Solution
 public void postOrder(TreeNode root) {
  if(root !=  null) {
   postOrder(root.left);
   postOrder(root.right);
   //Visit the node by Printing the node data  
   System.out.printf("%c ",root.data);
  }
 }
 // Recursive Solution
 public void inOrder(TreeNode root) {
  if(root !=  null) {
   inOrder(root.left);
   //Visit the node by Printing the node data  
   System.out.printf("%c ",root.data);
   inOrder(root.right);
  }
 }
 public static void main(String[] args)
 {
  BinaryTree3 bi=new BinaryTree3();
  // Creating a binary tree
  TreeNode rootNode=createBinaryTree();
  System.out.println("Tampilan PreOrder Tree :");
  bi.preorder(rootNode);
  System.out.println();
  System.out.println("-------------------------");
  System.out.println("Tampilan PostOrder Tree :");
  bi.postOrder(rootNode);
  System.out.println();
  System.out.println("-------------------------");
  System.out.println("Tampilan InOrder Tree:");
  bi.inOrder(rootNode);
 }
 public static TreeNode createBinaryTree()
 {  
  TreeNode rootNode =new TreeNode('A');
  TreeNode nodeB=new TreeNode('B');
  TreeNode nodeC=new TreeNode('C');
  TreeNode nodeD=new TreeNode('D');
  TreeNode nodeE=new TreeNode('E');
  TreeNode nodeF=new TreeNode('F');
  TreeNode nodeI=new TreeNode('I');
  TreeNode nodeJ=new TreeNode('J');
  TreeNode nodeK=new TreeNode('K');

  rootNode.left=nodeB;
  rootNode.right=nodeC;
  nodeB.left=nodeD;
  nodeB.right=nodeE;
  nodeC.left=nodeF;
  nodeF.left=nodeI;
  nodeF.right=nodeJ;
  nodeI.left=nodeK;
  return rootNode;
 }
}

Tampilan Output :

Read more

Sabtu, 22 April 2017

Definisi, Manfaat, Kelemahan dan Konsep Sistem Pakar

Sistem Pakar

1.       Sistem Pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahuan manusia ke komputer, agar komputer dapat menyelesaikan masalah seperti yang biasa dilakukan oleh para ahli
·         Sistem pakar  yang baik dirancang agar dapat menyelesaikan suatu permasalahan tertentu dengan meniru kerja dari para ahli
·         MYCIN
·         Paling terkenal, dibuat oleh Edward Shortlife of Standford University tahun 70-an
·         Sistem pakar medical yang bisa mendiagnosa penyakit infeksi dan merekomendasi pengobatan
·         MYCIN membantu dokter mengidentifikasi pasien yang menderita penyakit. Dokter duduk di depan komputer dan memasukkan data pasien : umur, riwayat kesehatan, hasil laboratorium dan informasi terkait lainnya. Dengan informasi ini ditambah pengetahuan  yang sudah ada dalam komputer, MYCIN mendiagnosa selanjutnya merekomendasi obat dan dosis yang harus dimakan.
·         MYCIN sebagai penasehat medis, tidak dimaksudkan untuk menggantikan kedudukan seorang dokter
·         Juga untuk memantu dokter dalam mengkonfirmasi diagnosa dan terapi yang diberikan kepada pasien
·         Kesimpulan : sistem pakar seperti MYCIN bisa digunakan sebagai bahan pembanding dalam pengambilan solusi dan pemecahan masalah
·         Keputusan terakhir atas pengobatan tersebut tetap menjadi tanggung jawab dokter
·         DENDRAL (mengidentifikasi struktur molekular campuran kimia yang tak dikenal)
·         XCON & XSEL
·         XCON
·         Merupakan sistem pakar untuk membantu konfigurasi sistem komputer besar, membantu melayani order langganan sistem komputer DEC VAX 11/780 ke dalam sistem spesifikasi final yang lengkap
·         Komputer besar seperti VAX terbuat dari ratusan komponen yang berbeda digabung dan disesuaikan dengan konfigurasi tertentu yang diinginkan oleh para pelanggan
·         Ada ribuan cara dimana asesoris Pcboard, kabel, disk drive, periperal, perangkat lunak, dan lainnya bisa dirakit ke dalam konfigurasi yang sangat rapi. Untuk mengidentifikasi hal-hal tersebut diperlukan waktu berhari-hari/berminggu-minggu agar bisa memenuhi spesifikasi yang diinginkan pemesan, tapi dengan XCON bisa dalam beberapa menit.

2.       Manfaat Sistem Pakar :
·         Memungkinkan orang awam bisa mengerjakan pekerjaan para ahli
·         Bisa melakukan proses secara berulang secara otomatis
·         Menyimpan pengetahuan dan keahlian para pakar
·         Mampu mengambil dan melestarikan keahlian para pakar (terutama yang termasuk keahlian langka)
·         Mampu beroperasi dalam lingkungan yang berbahaya
·         Memiliki kemampuan untuk bekerja dengan informasi yang tidak lengkap dan mengandung ketidakpastian. Pengguna bisa merespon dengan jawaban ‘tidak tahu’ atau ‘tidak yakin’ pada satu atau lebih pertanyaan selama konsultasi dan sistem pakar tetap akan memberikan jawaban.
·         Tidak memerlukan biaya saat tidak digunakan
·         Dapat digandakan(diperbanyak) sesuai kebutuhan dengan waktu yang minimal dan sedikit biaya
·         Dapat memecahkan maslah lebih cepat daripada kemampuan manusia dengan catatan menggunakan data yang sama
·         Menghemat waktu dalam pengambilan keputusan
·         Meningkatkan kualitas dan produktivitas karena dapat memberi nasihat yang konsisten dan mengurangi kesalahan
·         Meningkatkan kapabilitas sistem terkomputerisasi yang lain
·         Mampu menyediakan pelatihan. Pengguna pemula yang bekerja dengan sistem pakar akan menjadi lebih berpengalaman. Fasilitas penjelas dapat berfungsi sebagai guru.

3.       Kelemahan Sistem pakar :
·         Biaya yang diperlukan untuk membuat, memelihara, dan mengembangkannya sangat mahal
·         Sulit dikembangkan
·         Sistem pakar tidak 100% benar
·         Pendekatan oleh setiap pakar untuk suatu situasi atau problem bisa berbeda-beda, meskipun sama-sama  benar.
·         Transfer pengetahuan dapat bersifat subjektif dan bias
·         Kurangnya rasa percaya pengguna dapat menghalangi pemakaian sistem pakar

4.       Konsep dasar sistem pakar mengandung
·         Keahlian
·         Ahli/pakar
·         Pengalihan keahlian
·         Mengambil keputusan
·         Aturan

·         Kemampuan menjelaskan
Read more

Pengantar Artificial Intelligence


                     DEFINISI KECERDASAN BUATAN
Definisi Kecerdasar Buatan
·         H. A. Simon [1987] :
“Kecerdasan Buatan (Artificial Intelliggence) merupakan kawasan penelitian, aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal yang dalam pandangan manusia adalah cerdas”
·         Rich and Knight [1991]:
“Kecerdasan Buatan (Artificial Intelliggence) merupakan sebuah studi tentang bagaimana membuat komptuer melakukan hal-hal yang pada saat ini dapat dilakukan lebih baik oleh manusia.”
·         Encyclopedia Britannica:
“Kecerdasan Buatan (Artificial Intelliggence) merupakan cabang ilmu komputer yang dalam merepresentasi pengetahuan lebih banyak menggunakan bentuk simbol-simbol daripada bilangan, dan memproses informasi berdasarkan metode heuristic atau dengan berdasarkan sejumlah aturan”

                Tujuan dari kecerdasan buatan menurut Winston dan Prendergast [1984]:
                1.  Membuat mesin menjadi lebih pintar (tujuan utama)
                2.  Memahami apa itu kecerdasan (tujuan ilmiah)
                3. Membuat mesin lebih bermanfaat (tujuan entrepreneurial)

                AI dapat dipandang dalam berbagai perspektif.
·         Dari perspektif Kecerdasan (Intelligence)
AI adalah bagaimana membuat mesin yang “cerdas” dan dapat melakukan hal-hal yang sebelumnya dapat dilakukan oleh manusia

·         Dari perspektif bisnis
AI adalah sekelompok alat bantu (tools) yang berdaya guna, dan metodologi yang menggunakan tool-tool tersebut guna menyelesaikan masalah-masalah bisnis.

·         Dari persepektif pemrograman (Programming)
AI termasuk didalamnya adalah studi tentang pemrograman simbolik, pemecahan masalah, proses pencarian (search)
o   Umumnya program AI lebih fokus pada simbol-simbol daripada pemrosesan numeric (huruf, kata, angka untuk merepresentasikan objek, proses dan hubungannya).
o   Pemecahan masalah -> pencapaian tujuan
o   Search -> jarang mengarah langsung ke solusi. Proses search menggunakan beberapa teknik
o   Bahasa pemrograman AI :
§  LISP, dikembangkan awal tahun 1950-an, bahasa pemrograman pertama yang diasosiasikn dengan AI.
§  PROLOG, dikembangkan pada tahun 1970-an.
§  Bahasa pemrograman berorientasi obyek (Object Oriented Programming (Objective C, C++, Smalltalk, Java)

·         Dari perspektif penelitian (research)
o   Riset tentang AI dimulai pada awal tahun 1960-an, percobaan pertama adalah membuat program permainan (game) catur, membuktikan teori, dan general problem solving (untuk tugas-tugas sederhana)
o   “Artificial Intelligence” adalah nama pada akar dari studi area.



1.2.         DOMAIN PENELITIAN DALAM KECERDASAN BUATAN

§  Formal tasks (matematika, games)
§  Mundane task (perception, robotics, natural language, common sense, reasoning)
§  Expert tasks (financial analysis, medical diagnostics, engineering, scientific analysis, dll)

                PERMAINAN (Game)
·         Kebanyakan permainan dilakukan dengan menggunakan sekumpulan aturan
·         Dalam permainan digunakan apa yang disebut dengan pencarian ruang
·         Teknik untuk menentukan alternative dalam menyimak problema ruang merupakan sesuatu yang rumit
·         Teknik tersebut disebut dengan HEURISTIC
·         Permainan merupakan bidang yang menarik dalam studi heuristic

                NATURAL LANGUAGE
                Suatu teknologi yang memberikan kemampuan kepada komputer untuk memahami bahasa manusia sehingga pengguna komputer dapat berkomunikasi dengan komputer dengan menggunakan bahasa sehari-hari

                ROBOTIK DAN SISTEM SENSOR
                Sistem sensor, seperti sistem vision, system tactile, dan system pemrosesan sinyal jika dikombinasikan dengan AI, dapat dikategorikan ke dalam suatu system yang luas yang disebut sistem robotik.

                EXPERT SYSTEM
                Sistem pakar (Expert Sytem) adalah program penasehat berbasis komputer yang mencoba meniru proses berpikir dan pengetahuan dari seorang pakar dalam menyelesaikan masalah-masalah spesifik

1.3.         KONSEP DAN DEFINISI DALAM KECERDASAR BUATAN

                TURING TEST – Metode Pengujian Kecerdasan
·         Turing Test merupakan sebuah metode pengujian kecerdasan yang dibuat oleh Alan Turing
·         Proses uji ini melibatkan seorang penanya (manusia) dan dua objek yang ditanyai. Yang satu adalah seorang manusia dan satunya adalah sebuah mesin yang akan diuji.
·         Penanya tidak bisa melihat langsung kepada obyek yang ditanyai
·         Penanya diminta untuk membedakan mana jawaban komputer dan mana jawaban manusia berdasasrkan jawaban kedua obyek tersebut.
·         Jika penanya tidak dapat membedakan mana jawaban mesin dan mana jawaban manusia maka Turing berpendapat bahwa mesin yang diuji tersebut dapat diasumsikan CERDAS.

                PERMROSESAN SIMBOLIK
·         Komputer semula didesain untuk memproses bilangan/angka-angka (pemrosesan numeric)
·         Sementara manusia dalam berpikir dan menyelesaikan masalah lebih bersifat simbolik, tidak didasarkan kepada sejumlah rumus atau melakukan komputasi matematis
·         Sifat penting dari AI adalah bahwa AI merupakan bagian dari ilmu komputer yang melakukan proses secara simbolik dan non-algoritmik dalam penyelesaian masalah

                HEURISTIC
·         Istilah Heuristic diambil dari bahasa Yunani yang berarti menemukan
·         Heuristic merupakan suatu strategi untuk melakukan proses pencarian (search) ruang problema secara selektif, yang memandu proses pencarian yang kita lakukan disepanjang jalur yang memiliki kemungkinan sukses paling besar

                PENARIKAN KESIMPULAN (INFERENCING)
·         AI mencoba membuat mesin memiliki kemampuan berpikir atau mempertimbangkan (reasoning)
·         Kemampuan berpikir (reasoning) termasuk didalamnya proses penarikan kesimpulan (inferencing) berdasarkan fakta-fakta dan aturan dengan menggunakan metode heuristic atau metode pencarian lainnya.

                PENCOCOKAN POLA (PATTERN MATCHING)
·         AI bekerja dengan metode pencocokan pola (pattern matching) yang berusaha untuk menjelaskan obyek, kejadian (events) atau proses, dalam hubungan logic atau komputasional.

1.4.         Perbandingan Kecerdasan Buatan dengan Kecerdasan Alamiah

                Keuntungan kecerdasan buatan dibanding kecerdasan alamiah :
·         Lebih permanen
·         Memberikan kemudahan dalam duplikasi dan penyebaran
·         Relative lebih murah dari kecerdasan alamiah
·         Konsisten dan teliti
·         Dapat didokumentasi
·         Dapat mengerjakan beberapa task dengan lebih cepat dan lebih baik disbanding manusia

Keuntungan kecerdasan alamiah disbanding kecerdasan buatan :
·         Bersifat lebih kreatif
·         Dapat melakukan proses pembelajaran secara langsung, sementara AI harus mendapatkan masukan berupa simbol dan representasi-representasi
·         Fokus yang luas sebagai referensi untuk pengambilan keputusan sebaliknya AI menggunakan fokus yang sempit

Komputer dapat digunakan untuk mengumpulkan informasi tentang obyek, kegiatan (events), proses dan dapat memproses sejumlah besar informasi dengan lebih efisien dari yang dapat dikerjakan manusia, tetapi disisi lain manusia dengan menggunakan insting dapat melakukan hal yang sulit untuk deprogram pada komputer, yaitu : manusia dapat mengenali (recognize) hubungan antara hal-hal tersebut, menilai kualitas dan menemukan pola yang menjelaskan hubungan tersebut.


1.5.        Perbedaan Komputasi AI dengan Proses Komputasi Konvensional

                Bagaimana komputer konvensional memproses data
               
Proses
Yang dikerjakan
Kalkulasi
Mengerjakan operasi-operasi matematis: tambah, kurang, bagi, kali, atau mencari akar. Menyelesaikan rumus/persamaan
Logika penyimpanan
Mengerjakan operasi logika : “and”, “or”, atau “invert” menyimpan data dan gambar pada file
Retrieve
Mengakses data yang disimpan pada file
Translate
Mengkonversi data dari satu bentuk ke bentuk yang lain
Sort
Memeriksa data dan menampilkan dalam urutan yang diinginkan
Edit
Melakukan perubahan, penambahan, penghapusan pada data
Monitor
Mengamati event external dan internal dan melakukan tindakan jika kondisi tertentu tercapai
Control
Memberikan perintah atau mengendalikan peralatan diluar


Perbandingan AI dengan Pemrograman Konvensional


Read more