BAB II TINJAUAN PUSTAKA

dokumen-dokumen yang mirip
DASAR PEMOGRAMAN JAVA

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Elemen Dasar Dalam Bahasa Java

2 TIPE DATA DAN VARIABEL

BAB II VARIABEL DAN TIPE DATA

PEMAHAMAN DASAR DASAR JAVA

SUMBER BELAJAR PENUNJANG PLPG

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Badiyanto, S.Kom., M.Kom. PBO java

Percabangan & Perulangan

BAHASA PEMROGRAMAN JAVA

BAB 1 KONSEP DASAR JAVA

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Pemrograman Berorientasi Objek. Beni Suranto, S.T.

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Obyektif : KONTROL ALUR PROGRAM

Tipe Data, Variabel, Input/Output

Tipe Data dan Operator

Pengenalan JavaScript

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Bahasa Pemrograman Java. Yudi Adha. ST. MMSI

PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM

OPERATOR-OPERATOR DALAM JAVA

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

Bahasa Pemrograman 2.

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Percabangan & Perulangan

Modul 2 Dasar Pemrograman Java. Oleh: Mike Yuliana PENS-ITS

Modul 3: Kendali program dan teknik. penyimpanan data

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

Dasar-Dasar Pemrograman Java

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Dasar Pemrograman Java

BAB V. STATEMEN KONTROL

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

Modul Praktikum 3 Pemograman Berorientasi Objek

Pemrograman Berorientasi Objek 1 (IDENTIFIER KEYWORD LITERAL DAN (IDENTIFIER, KEYWORD, LITERAL DAN TIPE DATA, OPERATOR, SEPARATOR)

MODUL 2 STRUKTUR KONTROL

PENGENALAN PHP DASAR

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Percabangan dan Perulangan

Modul Praktikum Bahasa Pemrograman 1

Pengenalan Java, Tipe Data, Variabel dan Operator. Putu Putra Astawa

PEMROGRAMAN BERORIENTASI OBJEK

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

BAB 6. Struktur Kontrol

Pengenalan Bahasa Pemrograman Java

24/09/2017 PERCABANGAN

Pemrograman Berorientasi Objek

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

A. Dasar Teori. Urutan (Sequence) Pemilihan (Selection) Pengulangan (Iteration) Pernyataan Kondisional (If Statement)

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Chapter 1 KONSEP DASAR C

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

JAVA BASIC PROGRAMMING Joobshet

IF PEMROGRAMAN LANJUT PERULANGAN. Oleh : Andri Heryandi, M.T.

if (ekspresi_boolean) {

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Pertemuan 2 Struktur Kontrol Percabangan

Struktur Kontrol Pemrograman Java : PERCABANGAN

Bahasa C-M6 By Jamilah, Skom 1

Merupakan tipe data bilangan pecahan seperti 1.5, 2.1, dsb Tipe data ini memiliki ukuran 32 bit dengan panjang range 3.4 x 1038.

IKG2I4 / Software Project I

Pertemuan 4 Array pada Java

PEMROGRAMAN BERORIENTASI OBJEK

Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman.

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

MODUL PRAKTIKUM DASAR-DASAR PEMROGRAMAN

Achmad Solichin.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK (JAVA) PERTEMUAN 4 CONTROL FLOW STATEMENT

Modul 3 Flow Control dan Input

JAVA FUNDAMENTAL ATURAN PERKULIAHAN SILABUS

Modul PVB-POLINEMA V1.0

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

3.1 Contoh Program Java Sederhana

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

Tutorial Pemrograman dengan Bahasa Java

MODUL PRAKTIKUM PEMROGRAMAN WEB (DASAR)

Pada akhir pembahasan, peserta diharapkan mampu untuk:

MODUL DUA VARIABEL DAN TIPE VARIABEL

BAHASA PEMROGRAMAN C

STRUKTUR PEMROGRAMAN PYTHON

PHP mendukung komentar yang digunakan pada C, C++ dan Shell Unix. Sebagai contoh:

ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n.

24/09/2017 PERULANGAN

Pemrograman Dasar [PTI-5001] 2012

Tujuan Instruksional. Mahasiswa mampu :

PENYELEKSIAN /PERCABANGAN & PERULANGAN Part II. 5 th week Estu Sinduningrum ST,MT

IT210 Pemrograman Visual. Ramos Somya

Definisi Eksepsi (exception)

Transkripsi:

BAB II TINJAUAN PUSTAKA 2.1 Sintaks Program Komputer Kruse (1987) Mendefinisikan sintaks pada program komputer merupakan representasi dari struktur logika penulis program untuk mencapai tujuan atau output yang dikehendaki. Sintaks dapat ditulis dalam berbagai bahasa pemrograman seperti bahasa C, Java, C++, dsb. Penulisan sintaks untuk suatu program dengan suatu tujuan bisa dituliskan dengan sintaks yang berbeda. Misalnya terdapat 2 orang programmer A dan B yang bertujuan untuk mencetak tulisan hello world! sebanyak 3 kali dengan bahasa Java, maka programmer A dapat menulis kode program dengan sintaks berikut import javax.io; Tabel 2.1. Program hello world! programmer A class mainprogram{ public static void main(string[] args){ System.out.println( hello world! ); System.out.println( hello world! ); System.out.println( hello world! ); Sedangkan programmer B menulisnya dengan sintaks berikut Tabel 2.2. Program hello world! pada programmer B import javax.io; class mainprogram{ public static void main(string[] args){ for(int i = 1; i <= 3; i++){ System.Out.print( hello world! ); Jika dilihat dari struktur program, umumnya setiap bahasa pemrograman harus mendeklarasikan sebuah function atau method sebelum menuliskan berbagai macam operasi tertentu didalamnya. Perbedaanya hanya dari sisi penulisan. Dalam penelitian ini, pemeriksaan kesamaan sintaks lebih mengkhusus pada 5

pemeriksaan kode program. Sehingga tetap memperhitungkan kesamaan kode program untuk bahasa pemrograman yang sama. Pemeriksaan dilakukan dengan memperhatikan struktur dan konten pada kode program tersebut. 2.1.1 Elemen Dasar Bahasa Java Untuk memeriksa kesamaan kode program dalam bahasa Java, sistem harus mengetahui beberapa elemen dasar dari Java yaitu tata cara atau format penulisan kode program, kata kunci (keyword) pada Java, dan separator. Untuk tata cara atau format penulisan kode program, Rahardjo, dkk (2007) menjelaskan elemen yang dimaksud diantaranya seperti komentar, variabel, kontrol program, input/output, kelas dan objek, dsb. Berikut merupakan tabel yang menjelaskan format penulisan elemen-elemen pada program Java beserta penjelasannya Tabel 2.3. Format penulisan elemen kode program pada java NO FORMAT PENULISAN PENJELASAN 1 //ini komentar Komentar untuk satu baris. 2 /*ini komentar beberapa baris*/ 3 /** *Program HelloWorld *@author Wisesa */ Komentar untuk beberapa baris. Komentar untuk keperluan dokumentasi suatu program. 4 tipe namavariabel; Deklarasi satu variabel dengan tipe data tertentu. 5 tipe variabel1,variabel2; Deklarasi beberapa variabel dengan tipe data yang sama. 6 tipe variabel = nilai; Inisialisasi nilai pada sebuah 7 tipe variabel1 = nilai1, variabel2 = nilai2; 8 tipe variabel1 =(tipetarget) nilai; variabel. Inisialisasi beberapa nilai pada beberapa variabel. Proses typecasting (konversi nilai ke tipe data yang berbeda). 9 tipe[] namaarray; Deklarasi array satu dimensi. 6

10 variabelarray = new tipe[jumlahelemen]; Inisialisasi array satu dimensi. 11 tipe[][] namaarray; Deklarasi array dua dimensi. 12 variabelarray = new tipe[jumelemen][jumelemen] 13 if(kondisi){ 14 if(kondisi){ else{ 15 if(kondisi1){ else if(kondisi2){ else{ 16 switch(ekspresi){ case nilai1: break; case nilai2: break; default: 17 for(inisialisasi; kondisi; iterasi){ 18 for(inisialisasi1, inisialisasi2; kondisi1; iterasi1, iterasi2){ 19 inisialisasi; while(kondisi){ iterasi; Inisialisisasi array dua dimensi. Prosedur kontrol if untuk pemilihan 1 kondisi. Prosedur kontrol if-else untuk pemilihan 2 kondisi. Prosedur kontrol if-elseif-else untuk pemilihan 3 atau lebih kondisi. Prosedur kontrol switch-case untuk pemilihan kondisi. Prosedur kontrol for untuk sebuah perulangan. Prosedur kontrol for untuk sebuah perulangan dengan beberapa inisialisasi dan iterasi. Prosedur kontrol while untuk sebuah perulangan. 7

20 inisialisasi; do{ iterasi; while(kondisi); 21 class NamaKelas{ 22 NamaKelas variabel = new NamaKelas(); 23 tipe namamethod(daftarparameter){ 24 tipe namamethod(daftarparameter){ return nilai; 25 namakonstruktor(daftarparameter){ 26 tingkat-akses tipe namavariabel; 27 tingkat-akses tipe namamethod(daftarparameter){ 28 class nama-subclass extends nama-superclass{ 29 try{ catch(tipeeksepsi namavariabel){ Prosedur kontrol do-while untuk sebuah perulangan. Deklarasi sebuah kelas. Instansiasi kelas dan memasukkan referensi ke sebuah variabel. Deklarasi sebuah method pada sebuah kelas. Deklarasi sebuah method pada sebuah kelas dengan suatu nilai balik. Deklarasi konstruktor pada sebuah kelas. Deklarasi variabel dengan tingkat akses. Deklarasi method dengan tingkat akses dan parameter. Melakukan proses penurunan terhadap suatu kelas. Deklarasi try-catch untuk pencegahan eksepsi dengan 1 tipe eksepsi. 8

30 try{ catch(tipeeksepsi1 namavariabel1){ catch(tipeeksepsi2 namavariabel2){ Deklarasi try-catch untuk pencegahan eksepsi dengan beberapa tipe eksepsi. Format penulisan kode program pada tabel 2.3 nantinya akan menjadi acuan pada sistem untuk memeriksa konten dari kode program ataupun mengenali struktur dari kode program. Selain format penulisan, sistem juga harus mengenali kata kunci (keyword) pada Java. Menurut Rahardjo, dkk (2007), kata kunci adalah kata-kata yang telah didefinisikan oleh compiler dan memiliki arti dan tujuan spesifik. Java melarang pembuatan sebuah pengenal (nama variabel, konstanta, kelas, maupun method) dengan menggunakan kata kunci. Tabel 2.4 berikut ini menunjukkan kata kunci yang terdapat di dalam Java. Tabel 2.4. Kata kunci pada Java abstract double int strictfp boolean else interface super break extends long switch byte final native synchronized case finally new this catch float package throw char for private throws class goto protected transient const if public try continue implements return void default import short volatile do instanceof static while Kata kunci dapat diklasifikasikan menjadi beberapa fungsi yaitu tipe data, percabangan, perulangan, tingkat akses, dsb. Beberapa kata kunci memiliki fungsi khusus seperti return, new, final, static, dsb. Karena untuk memeriksa kesamaan kode program, tidak membutuhkan makna 9

dari kode, melainkan hanya membutuhkan tata cara penulisan kode program, maka makna penulisan kata kunci dapat diabaikan. Elemen dasar yang juga penting dari sebuah bahasa pemrograman, khususnya java adalah adanya separator. Separator digunakan untuk memisahkan salah satu bagian program dengan bagian lainnya. Salah satu contoh dari separator yang paling sering digunakan pada setiap kode program adalah semicolon (tanda titik koma (;)), yang digunakan untuk memisahkan statement yang satu dengan yang lainnya. Tabel 2.5 menunjukkan daftar separator di dalam Java. Tabel 2.5. Daftar separator di dalam Java SIMBOL NAMA SEPARATOR KEGUNAAN ( ) Parentheses (tanda Digunakan untuk mengisikan kurung) daftar parameter di dalam method; untuk mengapit sebuah ekspresi dalam operasi tertentu (misalnya: operasi aritmetika), mengapit ekspresi di dalam statement kontrol, dan untuk melakukan typecast. { Braces (kurung kurawal) Digunakan untuk membuat blok program (kelas, method, kontrol pemilihan, dan kontrol pengulangan) dan untuk mengisikan nilai inisial pada deklarasi array. [ ] Bracket (kurung Digunakan untuk siku) mendeklarasikan array dan untuk mengambil/mengisi nilai dari elemen array. ; Semicolon (titik koma) Digunakan untuk memisahkan statemen. 10

, Comma (koma) Digunakan untuk memisahkan variabel pada saat proses deklarasi. Juga dapat digunakan pada saat menggunakan statemen for.. Period (titik) Digunakan untuk memisahkan nama paket, subpaket, dan kelas. Juga digunakan untuk memisahkan data/method dari sebuah referensi objek. 2.2 Ekspresi Reguler Menurut Aho, dkk (1994), ekspresi reguler atau yang biasa dikenal dengan regex merupakan sebuah ekspresi yang menjadi notasi penjelasan mengenai suatu bahasa. Regex dapat mendefinisikan secara tepat bahasa yang sama dan berperan sebagai bahasa input untuk banyak sistem yang memproses untaian string, seperti perintah search pada UNIX yaitu grep atau perintah-perintah sejenis untuk menemukan untai yang dilihat seseorang pada web browser atau sistem pemformatan teks. Seperti yang dijelaskan oleh Aho, dkk (1994), terdapat tiga operator pada regex. Ketiga operasi tersebut adalah 1. Gabungan (union) dua bahasa L dan M (disimbolkan dengan L M), yaitu himpunan untaian string yang berada baik pada L atau M atau pada keduanya. Sebagai contoh, jika L = {001, 10, 111 dan M = {, 001, maka L M = {, 10,001, 111 2. Rentengan (concantenation) bahasa L dan M (disimbolkan dengan L.M) adalah himpunan untaian string yang dapat dibentuk dengan mengambil sembarang untai pada L dan merentengnya dengan sembarang untai pada M. Sebagai contoh, jika L = {001, 10, 111 dan M = {, 001, maka L.M atau disingkat LM saja, adalah {001, 10, 111, 001001, 10001, 111001. Tiga untai pertama pada LM adalah untai-untai pada L direnteng dengan. Karena merupakan 11

identitas rentengan, untai yang dihasilkan sama dengan untai pada L. Akan tetapi, tiga untai yang terakhir pada LM dibentuk dengan mengambil setiap untai pada L dan merentengnya dengan untai dengan untai kedua pada M yaitu 001. Sebagai contoh, 10 dari L direnteng dengan 001 dari M akan menghasilkan 10001 pada LM. 3. Tutupan (closure) bahasa L dilambangkan dengan L* dan mewakili himpunan yang untaianya dapat dibentuk dengan mengambil sembarang nomor untai dari L, mungkin dengan pengulangan (untai yang sama mungkin dipilih lebih dari satu kali) dan merenteng semuanya. Contohnya, jika L = {0, 1, maka L* adalah seluruh untai angka-angka yang terdiri dari 0 dan 1 sedemikian hingga angkaangka selalu berpasangan (misalnya 011, 11110) dan, tetapi tidak pernah 01011 atau 101. Lebih formal lagi, L* adalah gabungan tak berhingga i 0, dimana L 0 = {, L 1 = L dan L i dengan i > 1 L i adalah LL L (rentengan salinan L sebanyak i). Pada sistem operasi UNIX, terdapat aturan baku yang disebut standar IEEE POSIX Basic Regular Expression atau BRE, seperti yang dijelaskan oleh Ken (1968). Pada sintaks BRE, hampir semua karakter diberlakukan secara harfiah. Tabel 2.7 dibawah merupakan daftar Metacharacter dan deskripsinya. Metacharacter Tabel 2.6. Daftar Metacharacter Deskripsi. Sesuai dengan satu karakter apa saja. Dalam kurung siku, karakter titik sesuai dengan titik secara harfiah. Misal, a.c cocok pada abc,dll. Tapi [a.c] hanya cocok pada a,., atau c. [] Ekspresi kurung siku. Sesuai dengan satu karakter yang ada dalam kurung. Misal, [abc] sesuai a, b, c. [a-z] menspesifikasikan sebuah range yang sesuai dengan huruf kecil dari a sampai z. Format ini dapat dicampur, 12

misalkan [abcx-z] sesuai dengan a, b, c, x, y, z. Karakter diberlakukan secara harfiah jika berada diawal atau diakhir tanda kurung siku, atau jika diawali dengan karakter escape seperti: [abc-], [-abc], atau [a\-bc]. [^] ^ Sesuai dengan satu karakter apa saja yang tidak ada dalam kurung. Sesuai dengan awal string. Pada toolline-based, notasi ini sesuai dengan awal baris di mana saja. $ Sesuai dengan akhir string. Pada toolline-based, notasi ini sesuai dengan akhir baris di mana saja. BRE: \ (\) ERE: () Mendefinisikan subexpression yang dapat dipanggil kemudian. \n Sesuai dengan subexpression ke-n dimana n bernilai 1 sampai 9. * Sesuai dengan elemen sebelumnya sebanyak 0 atau beberapa kali. BRE: \{m,n\ ERE: {m,n Sesuai dengan elemen sebelumnya minimal sebanyak m kali namun tidak lebih dari n kali. ERE :? Sesuai dengan elemen sebelumnya sebanyak 0 atau 1 kali. ERE: + ERE: Sesuai dengan elemen sebelumnya minimal sebanyak 1 kali. Operator alternasi yang sesuai dengan expression sebelumnya atau sesudahnya. 13

2.3 Abstract Syntax Tree (AST) Fei (2006) menyatakan, dalam ilmu komputer, Abstract Syntax Tree (AST) merupakan pohon yang merepresentasikan struktur abstrak sintaks dari source code yang ditulis dalam suatu bahasa pemrograman komputer. Setiap node dikonstruksi berdasarkan parameter penting yang ada pada source code. Pada AST, sebuah informasi bisa ditambahkan dalam konteks menjelaskan data dari node yang dibuat. Misalnya untuk keperluan penjelasan informasi dalam pemrosesan variabel. Misalnya diberikan sebuah source code dari program Java seperti pada tabel 2.6 berikut Tabel 2.7. Contoh source code pada Java int i=0; int j=4; for (; i<10; i++){ if (i<j) j=i*j; return j; Maka AST yang dihasilkan dari source code diatas ditunjukkan oleh gambar 2.1 berikut Gambar 2.1. Model AST untuk source code pada tabel 2.6 14

Namun isi dari setiap node pada AST dapat disesuaikan dengan konteks permasalahan atau dalam konteks ini sesuai hasi ekstraksi dari data input kode program. Jika data yang diekstraksi berupa konten dari program, maka node dari AST akan diisi oleh konten tersebut. 2.4 Struktur Data B-Tree Menurut Cormen, dkk (2001), B-Tree adalah sebuah m-ary balanced search tree khusus yang digunakan dalam basis data karena strukturnya memungkinkan data yang disimpan untuk disisipi, dihapus, dan diambil dengan jaminan proses dengan waktu terburuk adalah O(log n), dimana setiap simpulnya terdiri dari (m/2) sampai m buah simpul anak, di mana m > 1 merupakan bilangan bulat. m adalah orde. Akar pohon B-tree paling sedikit memiliki 2 simpul anak. B-tree adalah struktur yang baik jika pohon digunakan pada memori yang lambat, karena ketinggian dan jumlah akses dapat diperkecil dengan mengambil bilangan m yang besar. Berikut merupakan contoh dari B-Tree dengan nilai orde sama dengan 5. Gambar 2.2. Contoh struktur b-tree dengan nilai orde 5. Didalam B-Tree, terdapat sejumlah operasi dasar yang sering digunakan, beberapa diantaranya akan diterapkan untuk membuat dan mengakses struktur b-tree dari kode program. Operasi dasar tersebut adalah Searching. Sama halnya dengan Binary Search Tree (BST), jalan yang dipakai dalam proses pencarian adalah dengan cara Breath First Search (BFS) atau Depth First Search (DFS). BFS melakukan pencarian dengan 15

mengembangkan pohon pencarian secara horizontal sedangkan DFS secara vertikal. Inserting. Proses penyisipan dilakukan untuk menambahkan sebuah data pada B-Tree tanpa harus menghapus node yang berada diataranya. 2.5 Probabilitas Naïve Bayes Probabilitas Bayesian adalah suatu interpretasi dari kalkulus yang memuat konsep probabilitas sebagai derajat dimana suatu pernyataan dipercaya benar. Teori Bayesian juga dapat digunakan sebagai alat pengambilan keputusan untuk memperbaharui tingkat kepercayaan dari suatu informasi. Umumnya, Naïve Bayes memiliki kelebihan mudah untuk dipahami, hanya memerlukan pengkodean yang sederhana, serta lebih cepat dalam perhitungan. Sedangkan kekurangan dari teori probabilitas bayesian yang banyak dikritisi oleh para ilmuwan adalah karena pada teori ini, satu probabilitas saja tidak bisa mengukur seberapa dalam tingkat keakuratannya. Dengan kata lain, kurang bukti untuk membuktikan kebenaran jawaban yang dihasilkan dari teori ini. Teorema Bayes menerangkan hubungan antara probabilitas terjadinya peristiwa A dengan syarat peristiwa B telah terjadi dan probabilitas terjadinya peristiwa B dengan syarat peristiwa A telah terjadi. P(A B) = P(A B) P(B) (1) Keterangan: P(A B) = peluang A dengan syarat B P(A B) = peluang A irisan B P(B) = peluang B. Untuk kejadian saling bebas, P(A B) = P(A). P(B). Probabilitas total untuk peluang bersyarat, dapat diturunkan dari pers(1). Misalkan A1, A2,, AN adalah peristiwa saling bebas yang gabungannya sama dengan ruang sampel S. Himpunan ini akan dinamakan partisi dari S. Maka semua peristiwa dalam S dapat dinyatakan sebagai berikut 16

B = B S = B (A 1 A 2 A N ) = (B A 1 ) (B A 2 ) (B A 3 ) (B A N ) (2) Karena A1, A2,, AN saling bebas maka P(B) = P(B A 1 ) + P(B A 2 ) + + P(B A N ) (3) Dari pers(1), jika posisi A dan B ditukar, maka dapat dirubah menjadi P(B A) = P(B A)P(A) (4) Sehingga pers(4) dapat disubstitusi ke pers(3) menjadi P(B) = P(B A 1 )P(A 1 ) + P(B A 2 )P(A 2 ) + + P(B A N )P(A N ) (5) Jadi didapatkan probabilitas kejadian marginal dari B adalah N P(B) = P(B A k )P(A k ) (6) k=1 Untuk peluang bersyarat, diperoleh peluang total yaitu Keterangan: P(B A i ) = P(B A i) P(A) P(B A i ) = N k=1 P(A B k )P(B k ) (7) P(B A i ) = peluang kejadian bebas B dengan syarat kejadian Ai P(A) = peluang kejadian marginal dari A 2.6 Tree Pattern Matching (TPM) Tree Pattern Matching (TPM) merupakan sebuah metode yang digunakan untuk melakukan pencocokan sebuah pattern P terhadap suatu pohon T atau hutan F. Fei (2006) menjelaskan, pencocokan dilakukan dengan melihat 17

kesamaan terhadap node yang ada didalamnya. Proses pencocokan juga disebut sebagai mapping, karena proses ini akan melihat kesesuaian data antar pattern dan pohon atau hutan. P akan dikatakan match dengan T atau F jika T atau F juga mengandung data pada P dengan kesesuaian yang sama. Berikut merupakan contoh dari proses mapping menggunakan TPM dengan pola P dan pohon T. Gambar 2.3. Sebuah proses mapping dengan TPM 18