Postingan-Keren

Blog gado-gado yang menyediakan tutorial dan download gratis

Breaking

Showing posts with label KECERDASAN BUATAN. Show all posts
Showing posts with label KECERDASAN BUATAN. Show all posts

Thursday, 6 July 2017

17:30

Contoh Program Sederhana dengan Swi-Prolog

Contoh Program Sederhana dengan Swi-Prolog
Prolog merupakan salah satu bahasa pemrograman logika atau bisa juga disebut bahasa non procedural.Bahasa ini diciptakan oleh Alain Colmerauer dan Robert Kowalski sekitar tahun 1972.Berbeda dengan bahasa pemrograman lain,yang menggunakan algoritma konvensional sebagai tekhnik pencarian seperti Delphi,Pascal,BASIC,COBOL dan lain lain.Software SWI-Prolog merupakan software open source.Bahasa ini digunakan untuk mengajar dan aplikasi web semantik.

SWI-Prolog dapat berjalan dalam platform windows,linux dan macintosh,tapi setiap platform berbeda cara dan tipe instalasinya.Namun di artikel kali ini saya hanya akan membahas tentang contoh program sederhana dengan SWI-Prolog.


sebelum masuk ke pembahasan Download terlebih dahulu software prolog nya sesuai dengan platform yang kalian gunakan.

Contoh Coding Prolog

laki(jonson).
laki(jaka).
laki(sam).
laki(makaroni).
laki(joko).
laki(soni).
perempuan(anya).
perempuan(susi).
perempuan(nina).
perempuan(nana).
perempuan(seli).
perempuan(dita).
menikah(roni,susi).
menikah(rendi,nina).
menikah(sam,nana).
anak(anya,sam).
anak(roni,sam).
anak(soni,roni).
anak(jaka,roni).
anak(seli,roni).
anak(dita,roni).
anak(makaroni,roni).
anak(joko,rendi).
%aturan
keponakan(A,I):-anak(A,B),anak(B,D),anak(I,D),A\==I.
ortu(A,B,C):-anak(A,B),menikah(B,C).
cucu(A,D,E):-anak(A,B),anak(B,D),menikah(D,E).
saudara(A,F):-anak(A,B),anak(F,B),A\==B.
saudaralaki(A,G):-anak(A,B),anak(G,B),anak(A,C),anak(G,C),not(perempuan(G)),A\==G.
saudaraperempuan(A,H):-anak(A,B),anak(H,B),anak(A,C),anak(H,C),not(laki(H)),A\==H.


Penjelasan

  1. Laki(jonson) = artinya adalah "Jonson adalah seorang laki-laki".
  2. perempuan(anya) = artinya adalah"anya adalah seorang perempuan"
  3. menikah(roni,susi) = artinya adalah "roni menikah dengan susi".
  4. anak(anya,sam) = artinya adalah"anya adalah anak dari sam".
  5. keponakan(A,I):-anak(A,B),anak(B,D),anak(I,D),A\==I. = aturan ini digunakan untuk mencari keponakan. A adalah anak dari B,dan B adalah anak dari D,lalu I juga adalah anak dari D,dan A tidak sama dengan I.Jadi artinya A adalah keponakan dari I karena B anak dari D dan I anak dari D.
  6. Ortu = A anak dari B, dan B menikah dengan C otomatis A anak dari C juga.
  7. cucu = A anak dari B dan B anak dari D setelah itu D menikah dengan E artinya D dan E adalah kakek-nenek dari A.
  8. SaudaraLaki = A anak dari B, dan G anak dari B juga, selanjutnya G itu bukan perempuan lalu A tidak sama dengan G
  9. SaudaraPerempuan = A anak dari B dan juga H anak dari B lalu H bukanlah laki-laki dan A tidak sama dengan H.

Monday, 24 April 2017

06:50

UTS Kecerdasan Buatan

UTS Kecerdasan Buatan

1.Konsep dari Kecerdasan Buatan

Kecerdasan buatan merupakan salah satu cabang ilmu komputer yang mempelajari tentang bagaimana cara membuat mesin yang dapat berfikir secara cerdas.Yaitu memungkinkan komputer untuk berfikir seperti manusia,Dalam hal ini mesin cerdas memiliki kemampuan untuk belajar dan beradaptasi layaknya manusia.Mesin Cerdas berguna untuk mengatasi masalah yang tidak dapat diprediksi dan prosedural.Seperti contohnya menemukan jarak terdekat antara kota A ke Kota G dengan beberapa kota yang berdampingan B,C,D,E,F atau sebuah AI yang dapat mengalahkan manusia dalam permainan catur.

2.Perbedaan Kecerdasan Buatan dan Kecerdasan Alami(Manusia)

Kemampuan dalam membuat kecerdasan buatan telah dimulai dalam kurun waktu 50 tahun belakangan,Para peneliti telah memasuki era baru dalam pemrograman yaitu pemrograman kecerdasan buatan.Dalam Kecerdasan buatan,Mesin cerdas memiliki beberapa kelebihan diantaranya cepat dalam membuat keputusan dan dapat berfikir layaknya manusia.Namun juga memiliki beberapa kelemahan diantaranya hanya dapat menyelesaikan masalah di bidang tetentu saja,Contoh seperti robot pembuat mobil hanya dapat membuat mobil saja,jika kita tidak mengajarinya membuat sesuatu yang lain.Namun manusia berbeda mereka dapat menggunakan nalar dan pengetahuan walaupun belum diajari sekalipun karena manusia dapat belajar secara otodidak berdasarkan pengalaman.Nah di bawah ini adalah perbedaan antara manusia dan mesin cerdas.

Manusia


  • Manusia bersifat kreatif,Karena mereka memiliki kemampuan untuk menambah kemampuan secara alami.
  • Pengalaman manusia dapat digunakan secara luas,artinya tidak dalam satu bidang saja
  • Manusia memiliki nalar sehingga dapat membedakan mana yang benar dan yang salah secara langsung.
  • Kecerdasan pada manusia sulit untuk di duplikasi,Perlu pemahaman Contohnya kita sekolah untuk mendapatkan ilmu pengetahuan.Namun tidak seperti Kecerdasan buatan,pada kecerdasan alamiah kita tidak bisa instant seperti copy paste di Komputer.
  • Secanggih-canggihnya kecerdasan buatan tidak akan melebihi kecerdasan otak manusia.Karena Kecerdasan manusialah yang membuat kecerdasan Buatan.Tapi tidak dipungkiri apabila di masa depan ada mesin cerdas yang mampu melebihi kemampuan manusia dalam berfikir serta memiliki nalar.
Kecerdasan Buatan

  • Kecerdasan buatan bersifat permanen,Dikarenakan ditanamkan di sebuah penyimpanan data.Namun kecerdasan Alami bersifat labil karena sifat manusia yang bisa lupa.
  • Lebih mudah di duplikasi dikarenakan Kecerdasan buatan yang bersifat permanen serta kemampuan sebuah komputer yang saat ini sangat cepat dalam mentransfer data dari komputer satu ke komputer lain.
  • Harga lebih terjangkau dikarenakan Sistem Cerdas hanya butuh sumber daya maka mereka akan berjalan,sedangkan manusia memiliki rasa lelah sehingga walaupun sumber daya mereka(dalam hal ini makanan) tercukupi tetap tidak akan berjalan dikarenakan lelah.
  • Dapat bekerja secara cepat dan tepat.Dikarenakan di mesin cerdas tidak ada yang namanya lupa,bingung dan tidak teliti jika algoritma yang dimasukan dalam mesin tersebut sesuai,Maka mesin tersebut akan menjalankan perintah tanpa adanya error sedikitpun.
3.Konsep dasar Aritificial Intelligence

  • Acting Humanity = dalam konteks ini kecerdasan memiliki sistem yang mampu menirukan tingkah laku manusia.Sehingga informasi yang dipelajari dapat diserap dan digunakan di masa yang akan datang
  • Thinking Rationaly = Kecerdasan yang memiliki kemampuan berfikir secara rasional.Contohnya kita pergi ke pesta undangan tidak mungkin kita memakai baju renang
  • Thingking Humanity = Sistem yang memungkinkan berfikir dan memiliki nalar seperti manusia yaitu pemikiran secara psikologis.
  • Acting Rationality = Sistem yang memiliki kemampuan untuk menyelesaikan tugas manusia dengan benar.
4.Sub Disiplin dalam ilmu Kecerdasan Buatan

  • Sistem Pakar(Expert System) = Sebuah sistem yang bekerja layaknya seorang pakar tertentu.Disini komputer digunakan untuk menyimpan pengetahuan para pakar dan dengan demikian sebuah sistem cerdas mampu untuk meniru keahlian pakar tersebut.
  • Natural Language Processing = Pengolahan bahasa yang bertujuan menerjemahkan bahasa mesin ke bahasa manusia agar mudah di baca.
  • Speech Recogniton = Pengenalan suara yang memungkinkan komputer dapat berinteraksi dengan manusia menggunakan suara.
  • Pattern Recognition = Pengenalan pola yang memungkinkan komputer dapat mengenali suatu pola tertentu
  • Robotika = Suatu program yg diaplikasikan pada sebuah mesin robot untuk membantu serta menggantikan kinerja manusia agar lebih cepat. Karena mesin tidak kenal lelah dan bosan. 
  • Computer Vision = Suatu Program yang dapat menginterpretasikan gambar atau objek tampak pada komputer,contohnya aplikasi openGL untuk ruang 3 dimensi.
  • Intelligent Computer Aided Instruction = Komputer dapat sebagai media pembelajaran(simulasi)contohnya seperti simulasi pesawat terbang untuk seorang calon pilot.
5.Kelebihan dan kekurangan Algoritma Pencarian BFS dan DFS

DFS (Depth First Search)= Merupakan Algoritma pencarian yang dilakukan pada satu node dalam setiap level dari yang paling kiri.Jika pada level yang paling dalam tidak ditemukan solusinya,maka pencarian dilanjutkan pada level selanjutnya.

Kelebihan DFS = 

  • Pemakaian memori bisa saja lebih sedikit atau bisa saja lebih banyak tergantung keberuntungan dalam DFS mencari jalur pertama kali dari source ke tujuan.Jadi semakin cepat DFS mencari tujuan semakin sedikit pula memori yang dipakai
  • Baik digunakan pada Node yang relatif sedikit.
  • Secara kebetulan dapat menemukan tujuan dengan relatif singkat.
Kekurangan DFS = 

  • Jika pohon yang dibangkitkan mempunyai level yang dalam (tak terhingga), maka tidak ada jaminan untuk menemukan solusi (Tidak Complete).
  • 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).
  • Membutuhkan memori yang banyak jika tujuan yang dicari di pencarian terdalam selalu salah.

BFS (Breath First Search) = Merupakan 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.

Kelebihan BFS = 

  • Menjamin ditemukanya solusi jika memang solusi tersebut ada,Serta solusi tersebut merupakan solusi yang terbaik.Karena BFS mengunjungi setiap simpul tetangga nya satu persatu.
Kekurangan BFS = 
  • Membutuhkan memori yang banyak karena harus menyimpan semua simpul terdahulu.
  • Membutuhkan waktu yang lama karena menelusuri seluruh simpul tetangga terlebih dahulu


Saturday, 15 April 2017

03:04

Algoritma Dijkstra dan Contoh Program

Alogritma Dijkstra dan Contoh Program
Alogritma Dijkstra dan Contoh Program
Algoritma Dijkstra , merupakan salah satu jenis Algoritma Greedy yang dimana dalam permasalahan memecahkan jarak terpendek(Shortener Path Problem) menggunakan pendekatan penyelesaian masalah dengan mencari nilai maksimum sementara pada setiap path-nya(Langkah).Dan Algoritma Dijkstra ditemukan oleh Edger dijkstra

Contoh :
Contoh Soal Algoritma Dijkstra
Kita Akan mencari Jalur Terpendek dari A ke G dengan Algoritma Dijkstra.
Contoh Soal Algoritma Dijkstra
  • Pertama kita Buat Tabel atau Tulisan bebas untuk menandakan bahwa Node Source dan tujuan sudah tercapai atau belum tercapai dengan menuliskan Unvisited(Q) dan Visited(S),Ini hanya untuk memudahkan saja.Selanjutnya buat Kolom A sampai G seperti gambar diatas yang menunjukan keseluruhan Node,Lalu kita buat di baris pertama seperti gambar di atas.Karena Node belum ada yang dikunjungi maka kita tulis di kolom Unvisited {A,B,C,D,E,F,G} dan di kolom A sampai G dengan (takterhingga,-).
    Contoh Soal Algoritma Dijkstra
  • Yang kedua kita masukan node pertama atau source nya yaitu A yang disebut Current Node ke kolom Current.Dan Masukan Kolom Unvisited seperti gambar diatas {B,C,D,E,F,G},Serta di kolom Node yang lain dari A sampa G masukan sesuai gambar di atas.Contoh di kolom B tertulis (16,A1) yang artinya node A ke node B berjarak 16 dan A1 artinya adalah A itu dari node pertama yang tervisited.
    Contoh Soal Algoritma Dijkstra
  • Pada langkah ketiga ini kita cari jarak paling kecil dari baris nomor 1 terlebih dahulu yaitu di kolom C (9,A1).Lalu masukan C di kolom Current Node.Dan masukan kolom (Q) dan (S) seperti gambar diatas.Visited (A,C) dan Unvisited(B,C,D,E,F,G).A ke B tetap yaitu (16,A1) karena C tidak bisa ke B yang merupakan Current Node dan jaraknya pun tidak diketahui.Lalu di kolom A dan C tidak ditulis lagi karena merupakan Current Node.Selanjutnya D mendapatkan (24,C2) Karena jarak A - C - D adalah 9+15 = 24 dan C2 karena C merupakan Node ke 2 dan lalu mengapa di kolom D tidak (35,A1) karena 24<35 sehingga jalur terpendek yang dibutuhkan yaitu 24.Lalu di kolom E dan G ditulis (Tak terhingga,C2) karena E dan G tidak memiliki jalur langsung ke C.
    Contoh Soal Algoritma Dijkstra
  • Lalu Di langkah ketiga kita cari Current Node pada Langkah kedua yaitu yang paling kecil adalah (16,A1) yang masuknya di Kolom B,sehingga B masuk ke Current Node selanjutnya.Unvisited(D,E,F,G) dan visited (A,B,C) dan sekarang Karena Node B hanya bisa ke D dan E maka kita inputkan dulu F dan G yang tidak terhubung.F menjadi (31,C2)Karena 31<Tak Hingga dan G (takTerhingga,B3) Karena takTerhinggaB3<takTerhinggaC2 (Diambil Current Node yang baru yaitu B).Dan kita masuk ke kolom D(24,C2) mengapa 24? karena (24,C2<(28,B3) sehingga tetap (24,C2),Lalu yang E(41,B3) karena 16+25 = 41 dan B ke E hanya ada satu pilihan jalur.
Dan seterusnya sampai kalian visit semua Node dan bertemu angka G seperti gambar di bawah ini
Contoh Soal Algoritma Dijkstra

Beberapa Kelebihan dari Algoritma Dijkstra antara lain
1.Algoritma Dijkstra dapat menentukan jalur tercepat dengan waktu yang lebih cepat dibandingkan algoritma lainnya.
2.Menggunakan Algoritma Dijkstra mempermudah kita dalam mengetahui jarak atau lintasan terpendek dari suatu titik tertentu ke semua titik yang lain.
3.Menggunakan Algoritma Dijkstra dalam penerapan di dalam sistem geografis akan menampilakan   visualisasi data dalam bentuk peta
4.Pada penampilan rute atau peta Algoritma Dijkstra lebih mudah di baca dan di pahami.
5.Pada rute atau peta dan lintasannya dapat diberikan warna, sehingga penampilan Algoritma Dijkstra lebih menarik dan lebih mudah untuk membedakan dari suatu titik tertentu ke titik yang lain.

Berikut ini merupakan contoh program dalam Java.
import java.util.PriorityQueue;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Vertex implements Comparable
{
    public final String name;
    public Edge[] VertexTetangga;
    public double CekJarak = Double.POSITIVE_INFINITY;
    public Vertex previous;
    public Vertex(String argName) { name = argName; }
    public String toString() { return name; }
    public int compareTo(Vertex other)
    {
        return Double.compare(CekJarak,other.CekJarak);
    }
}

class Edge
{
    public final Vertex target;
    public final double weight;
    public Edge(Vertex argTarget, double argWeight)
    { target = argTarget; weight = argWeight; }
}

public class AlgoritmaDijkstra
{
    public static void computePaths(Vertex source)
    {
        source.CekJarak = 0;
        PriorityQueue vertexQueue = new PriorityQueue();
      vertexQueue.add(source);
       while (!vertexQueue.isEmpty()) {
           Vertex u = vertexQueue.poll();
            for (Edge e : u.VertexTetangga)
            {
                Vertex v = e.target;
                double weight = e.weight;
                double JarakTerpendek = u.CekJarak + weight;
              if (JarakTerpendek < v.CekJarak) {
                  vertexQueue.remove(v);
                  v.CekJarak = JarakTerpendek ;
                  v.previous = u;
                  vertexQueue.add(v);
              }
            }
        }
    }

    public static List getShortestPathTo(Vertex target)
    {
        List path = new ArrayList<>();
        for (Vertex vertex = target; vertex != null; vertex = vertex.previous)
            path.add(vertex);
        Collections.reverse(path);
        return path;
    }

    public static void main(String[] args)
    {
       Vertex A = new Vertex("A");
       Vertex B = new Vertex("B");
       Vertex C = new Vertex("C");
       Vertex D = new Vertex("D");
       Vertex E = new Vertex("E");
       Vertex F = new Vertex("F");
       Vertex G = new Vertex("G");

       A.VertexTetangga = new Edge[]{ new Edge(B, 16),
                                    new Edge(C, 9),
                               new Edge(D, 35) };
       B.VertexTetangga = new Edge[]{ new Edge(D, 12),
                                    new Edge(E, 25),
                                    };
       C.VertexTetangga = new Edge[]{ new Edge(D, 15),
                               new Edge(F, 22) };
       D.VertexTetangga = new Edge[]{ new Edge(A, 35),
                                    new Edge(B, 12),
                                    new Edge(C, 15),
                                    new Edge(E, 14),
                                    new Edge(F, 17),
                                    new Edge(G, 19)};
       E.VertexTetangga = new Edge[]{ new Edge(G, 8),
                                   new Edge(B, 25),
                                   new Edge(D, 14),
                                                 };
       F.VertexTetangga = new Edge[]{ new Edge(G, 14),
                                   new Edge(C, 22),
                                   new Edge(D, 17),
                                                  };
       G.VertexTetangga = new Edge[]{ new Edge(F, 14),
                                   new Edge(D, 19),
                                   new Edge(E, 8),
       };
       Vertex[] vertices = { A,B,C,D,E,F,G };
       computePaths(A);
        for (Vertex v : vertices)
       {
           System.out.println("Distance to " + v + ": " + v.CekJarak);
           List path = getShortestPathTo(v);
           System.out.println("Path: " + path);
       }
    }
}
Di bawah ini Output nya :
Algoritma Dijkstra Program

Impor Java.util.Priorityqueue = Merupakan bentuk Struktur data yang memiliki attribut Heaps,Comparator dan Last.Priorityqueue berfungsi untuk memproses objek dalam antrian berdasarkan prioritas dalam hal ini di Algoritma Dijkstra kita memproses jarak terdekat yang akan menjadi prioritasnya.
import java.util.List = List merupakan jenis Struktur Data Array yang membolehkan adanya value duplikat atau nilai yang sama pada index berbeda.Di dalam list kita dapat menampung bermacam tipe data seperti Integer,String dan lain-lain.Setiap tipe data yang dideklarasi dalam List harus terdapat kata List seperti contoh koding diatas.

Pada List ini berbentuk tipe data ArrayList yang digunakan untuk menampung nilai ke dalam memori.

import.java.util.ArrayList = Tidak jauh dengan array primitif ArrayList lebih dinamis sehingga seberapapun jumlah array yang di masukan kita tidak perlu menambah elemen baru di dalamnya(Array Dinamis).

import.java.util.Collection = Collection merupakan istilah umum yang dipakai untuk setiap objek yang berfungsi untuk mengelompokkan beberapa objek tertentu menggunakan suatu teknik tertentu pula. Semua class yang berhubungan dengan pengelompokan objek ini dalam java tergabung dalam Java Collection Framework, dimana Framework ini diletakan dalam package java.util dan mempunyai dua interface utama, yaitu collection dan map. 



postingan keren