Anda di halaman 1dari 17

TUGAS BAHASA DAN OTOMATA

Disusun oleh: Ade Kurniawan Achmad Febrian Dian Sipayung Ridwan Fabas (09111002020) (09111002022) (09111002042) (09111002034)

TEKNIK INFORMATIKA FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA 2013

Kata Pengantar
Puji syukur kehadirat Tuhan YME yang telah melimpahkan rahmat-Nya sehingga kami dapat menyelesaikan penulisan dokumentasi program Parse Tree ini dengan lancar. Dokumentasi ini bertujuan untuk melengkapi Tugas Teori Bahasa dan Otomata. Dalam dokumentasi ini menjelaskan Parse Tree secara detail dari mulai pengertian sampai tahap pembuatan program dan implementasinya untuk dapat bekerja seperti yang

diharapkan Dengan adanya dokumentasi ini kami berharap dapat menambah wawasan atau pun menambah Referensi dalam kaitannya dengan Teori Bahasa dan Otomata. Kami mohon maaf, jika terdapat suatu kekurangan karena pengetahuan yang masih kurang. mohon bimbingan Ibu Dosen selaku dosen kami agar kami lebih mengerti banyak tentang Hal tersebut.

Palembang, 28 Mei 2013

Tim Penyusun

Daftar Isi Kata Pengantar...2 1.Pohon..................4 1.1Simpul.........4 1.2 Daun...................4 1.3Simpul Internal....5 2. Penyusunan Pohon.5 3. Sifat Utama Pohon.5 4. Notasi dan Traversal Pohon..7 5. Metode untuk mengecek String dan menghasilkan Parse Tree ..9 6. Program ..11 7. Analisa Program..12 7.1 Analisis Masalah..14 7.2 Analisis Urutan Proses Perangkat Lunak14 7.3 Analisis Metode Left Derivation...15 7.4 Deskripsi Umum Sistem..16 7.5 Spesifikasi Kebutuhan Perangkat Lunak....16 8. Kesimpulan..16 Daftar Pustaka..17

1. Pohon (Tree)
Pohon dalam ilmu komputer merupakan sebuah struktur data yang memiliki struktur mirip pohon dimana terdapat sejumlah simpul yang saling terhubung. Pada pohon terdapat elemen tertinggi yang disebut sebagai akar. Dimana akar akan menghasilkan simpul-simpul yang terdiri dari simpul dalam dan simpul luar. Kumpulan dari pohon yang saling tidak berhubungan disebut sebagai Hutan (Forest).

1.1 Simpul
Sebuah Simpul dapat mengandung sebuah nilai atau suatu kondisi atau menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon itu sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih simpul anak (child nodes), yang berada dibawahnya dalam pohon (menurut perjanjian, pohon berkembang ke bawah, tidak seperti yang dilakukannya di alam). Sebuah simpul yang memiliki anak dinamakan simpul ayah (parent node) atau simpul leluhur (ancestor node) atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut

1.2 Daun
Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun (leaf node). Sejak mereka terletak pada tingkat paling bawah, mereka tidak memiliki anak satupun. Seringkali, daun 4

merupakan simpul terjauh dari akar. Dalam teori grafik, sebuah daun adalah sebuah sudut dengan tingkat 1 selain akar (kecuali jika pohonnya hanya memiliki satu sudut; maka akarnya adalah daunnya juga). Setiap pohon memiliki setidaknya satu daun. Dalam pohon berdasarkan genetic programming sebuah daun (juga dibilang terminal) adalah bagian terluar dari sebuah program pohon. Jika dibandingkan dengan fungsinya atau simpul dalam, daun tidak memiliki argumen. Di banyak kasus dalam daun-GP input ke programnya.

1.3 Simpul dalam


Simpul dalam adalah semua simpul dari pohon yang memiliki anak dan bukan merupakan daun. Beberapa pohon hanya menyimpan data di dalam simpul dalam, meskipun ini memengaruhi dinamika penyimpanan data dalam pohon. Sebagai contoh, dengan daun yang kosong, seseorang dapat menyimpan sebuah pohon kosong dengan satu daun. Bagaimanapun juga dengan daun yang dapat menyimpan data, tidak dimungkinkan untuk menyimpan pohon kosong kecuali jika seseorang memberikan beberapa jenis penanda data di daun yang menandakan bahwa daun tersebut seharusnya kosong (dengan demikian pohon itu seharusnya kosong juga). Sebaliknya, beberapa pohon hanya menyimpan data dalam daun, dan menggunakan simpul dalam untuk menampung metadata yang lain, seperti jarak nilai dalam sub pohon yang berakar pada simpul tersebut. Jenis pohon ini berguna untuk jarak yang meragukan.

2. Penyusunan Pohon
Pada teknik penyusunan pohon terdapat dua jenis teknik yaitu pohon terurut (ordered tree) dan pohon tidak terurut (unordered tree). Sebuah pohon tidak terurut adalah sebuah pohon dalam arti struktural semata-mata, yang dapat dikatakan memberikan sebuah simpul yang tidak memiliki susunan untuk anak dari simpul tersebut. Sebuah pohon dengan suatu susunan ditentukan, sebagai contoh dengan mengisi bilangan asli berbeda ke setiap anak dari simpul tersebut, dinamakan sebuah pohon terurut , dan struktur data yang dibangun di dalamnya dinamakan pohon terurut struktur data (ordered tree data structures).

3. Sifat utama pohon berakar


Pohon sendiri memiliki sifat-sifat umum yang ada pada diriny, yaitu: 1. Jika pohon mempunyai simpul sebanyak n, maka banyaknya ruas adalah (n-1). Pada contoh : banyak simpul adalah 8 maka banyaknya ruas adalah 7.

2. Mempunyai simpul khusus yang disebut Root (Akar), jika simpul tersebut memiliki derajat keluar 0 dan derajat masuk = 0. Simpul P merupakan root. 3. Mempunyai simpul yang disebut Leaf (Daun), jika simpul tersebut memiliki derajat keluar = 0 dan derajat masuk = 1. Simpul R, S, V, W merupakan daun pada pohon T. 4. Setiap simpul mempunyai tingkatan (level), dimulai dari root dengan level 0 sampai dengan level n pada daun yang paling bawah. Pada contoh :

P Q, T R, S, U V, W

mempunyai level 0 mempunyai level 1 mempunyai level 2 mempunyai level 3

Simpul yang mempunyai level yang sama disebut Bersaudara (Brother /Stribling) 5. Pohon mempunyai ketinggian (kedalaman / height) yaitu level tertinggi +1. Ketinggian pohon T adalah 3+1 = 3 6. Pohon mempunyai berat (bobot / weight) yaitu banyaknya daun pada pohon. Berat pohon T adalah 4

4. Notasi dan Traversal Pohon


Traversal adalah proses kunjungan dalam pohon, dengan setiap Simpul hanya dikunjungi tepat satu kali.

Tiga kegiatan yang terdapat dalam traversal pohon binar adalah : 1. Mengunjungi simpul akar (root) 2. Melakukan traversal subpohon kiri, dan 3. Melakukan traversal subpohon kanan

Terdapat tiga macam traversal pohon, yaitu : 1. Traversal Pre-order, dilakukan berturut-turut : a. Kunjungi simpul akar b. Lakukan traversal subpohon kiri c. Lakukukan traversal subpohon kanan

2. Traversal In-order, dilakukan berturut-turut : a. Lakukan traversal subpohon kiri b. Kunjungi simpul akar c. Lakukan traversal subpohon kanan

3. Traversal Post-order, dilakukan berturut-turut : a. Lakukan traversal subpohon kiri b. Lakukan traversal subpohon kanan c. Kunjungi simpul akar

Contoh :
F Untai yang dihasilkan secara Pre-order FDBACEG

C
8

Untai yang dihasilkan secara In-order ABCDEFG

C F
Untai yang dihasilkan secara Post-order ACBEDGF

5. Metode Mengecek String dan Menghasilkan Parse Tree


Context Free Grammar ( CFG ) menjadi dasar dalam pembentukan suatu parser/proses analisis sintaksis. Bagian sintaks dalam suatu kompilator kebanyakan di definisikan dalam tata bahasa bebas konteks. Pohon penurunan ( derivation tree/parse tree) berguna untuk menggambarkan simbol-simbol variabel menjadi simbol-simbol terminal setiap simbol variabel akan di turunkan menjadi terminal sampai tidak ada yang belum tergantikan. Untuk menentukan parsing tree dari sebuah grammar, kita dapat mengawalinya dengan menentukan string yang diterima dengan cara penurunan paling kiri dan penurunan paling kanan.
9

Contoh I : Diberikan sebuah grammar berikut : B (RB | R ) | (RR Buatlah parsing tree dari context free grammar diatas dengan syarat string harus diterima ! Dalam tahap penyelesaiannya, kita dapat mencari mencari string yang diterima dengan cara Leftmost derivation atau Rightmost derivation. Lefmost : R (RR ()R ()(RR ()((RRR ()(()RR ()(())R ()(())(RR ()(())()) Rightmost :R (RR (R(RR (R(R(RR (R(R(R) (R(R()) (R((RR()) (R(())()) ()(())()) Salah satu string yang diterima oleh grammar diatas adalah : ()(())()) Dengan itu, kita dapat membuat parsing tree nya sebagai berikut

10

6. Program
Pada program tree yang kami buat, kami menggunakan program C++ Builder XE3 dengan memakai bahasa C++. Pada tampilan program kami menggunakan teknik Visual untuk mempermudah penggunaan program oleh user.

11

7. Analisa Program
Pada Program ini kami menggunakan program C++ Builder XE3 dengan memakai bahasa C++.Program ini menggunakan left derivation. Kode mengecek String : void checkString() { proses="B"; pan=hasil.Length(); tidakbisa=0; input=Edit1->Text; int i,j,x,z,panInput; panInput=input.Length(); String awal,akhir; for(i=1;i<=panInput;i++) { awal=""; akhir=""; if(proses[i]=='B') { if(input[i]=='(') {tampung="(RB";} else if(input[i]==' ') {tampung="";} else{ tidakbisa=1; } } else if(proses[i]=='R') { if(input[i]=='(') { tampung="(RR"; } else if(input[i]==')') { tampung=")";} else{ tidakbisa=1; } } else{ tidakbisa=1; } if(tidakbisa==1){ break; } else { 12

if(i>1) { for(x=1;x<=proses.Length();x++) { if(x<i) { awal=awal+proses[x]; } else if(x>i) { akhir=akhir+proses[x]; } } } proses=awal+tampung+akhir; RichEdit1->Lines->Add(proses); } } RichEdit1->Lines->Add(proses); for(i=1;i<=panInput;i++) { hasil=hasil+proses[i]; } RichEdit1->Lines->Add(hasil); if(hasil==input && proses[panInput+1]=='B' || hasil==input && proses[panInput+1]==Null()) { Label1->Caption="Diterima"; } else { Label1->Caption="Tidak Diterima";

13

} }

7.1 Analisis Masalah Pengecekan string dalam mata kuliah Teori Bahasa dan Otomata menjadi masalah utama dalam program ini. Bagaimana cara program untuk mengetahui apakah sebuah string temasuk ke dalam grammar yang ditentukan yaitu : B (RB | R ) | (RR

Proses yang digunakan adalah mencocokkan input string dengan syarat yang telah ditentukan. Pada bagian berikut akan dibahas analisis mengenai tahapan yang ada pada program tersebut. 7.2 Analisis Urutan Proses Perangkat Lunak Data yang dibutuhkan pada perangkat lunak yang akan dibuat adalah inputan string yang akan ditentukan diterima atau ditolak dan syarat atau grammar yang telah ditentukan sebelumnya untuk mengecek string inputan tersebut Analisis Proses Pencocokan Input String dan Syarat Proses Pengecekan Sting : 1. Input String =(())() 2. Hasil Awal =B. 3. Jika hasil awal [i] == B. 4. String Input ke [I] == ( Maka hasil awal[i] akan di replace menjadi (RB. 5. Jika hasil awal [i] == R 6. Jika String Input ke [I] ==) maka hasil awal[i] di replace menjadi )

14

7. Tetapi jika String Input[i] ==(maka hasil awal [i] di replace menjadi (RR 8. Jika hasil awal == input maka dapat diterima jika tidak maka ditolak 7.3 Analisis Metode Left Derivation Metode Left Derivation adalah salah satu metode yang digunakan untuk penguraian string berdasarkan grammar. Metode ini dilakukan dengan mengganti setiap variabel R atau B dengan terminal ( atau ) sesuai dengan syarat yang diatas. Proses penggantian di lakukan dari yang paling kiri. Analisis Left Derivation : lakukan dari yang paling kiri. Contoh : input =(()). Hasil awal=B. maka dapat pada proses pergantian pertama menjadi : hasil awal[0] =B Input [0] ,maka hasil awal diubah menjadi (RB Hasil awal[1]=R Input[1]=(,maka hasil awal diubah menjadi ((RRB hasil awal[2] =R Input [2] ,maka hasil awal diubah menjadi (()RB Hasil awal[3]=R Input[3]=(,maka hasil awal diubah menjadi (())B Hasil awal[5]=B Input[4]=null maka hasil awal diubah menjadi (()) Proses penggantian dilakukan sampai string mendapatkan hasil apakah string itu diterima atau ditolak yaitu sampai panjang string hasil awal = panjang string inputan.

15

Perancangan Perangkat Lunak 7.4 Deskripsi Umum Sistem Perangkat lunak yang dibangun merupakan sebuah program yang mengecek inputan string untuk mengetahui apakah string tersebut diterima atau ditolak berdasarkan syarat yang sudah ada. Output tersebut didapat dari proses penguraian leftmost derivation. Perangkat lunak ini diimplementasikan pada platform Desktop dengan menggunakan bahasa C#.

7.5 Spesifikasi Kebutuhan Perangkat Lunak Perangkat lunak yang di kembangkan diharapkan dapat melakukan pemeriksaan string terhadap grammar..

8 Kesimpulan
Program ini di dahului dengan mengecek string yang diinputkan. Lalu dilanjutkan dengan memproses parse tree yang ingin dihasilkan dan selanjutnya dilakukan pengecekan apakah stirng tersebut diterima oleh grammar pada soal.

16

Daftar Pustaka

http://abdullahbasuki.files.wordpress.com/2010/05/struktur-data-pohon.ppt http://erlina.staff.gunadarma.ac.id/Downloads/files/31095/BAB+7-pohon+biner.doc http://id.wikipedia.org/wiki/Pohon_biner_terurut http://id.wikipedia.org/wiki/Pohon_(struktur_data) http://pakhartono.files.wordpress.com/2011/07/struktur_data_pohon.pdf http://vincentkecoet.wordpress.com/category/struktur-data/ http://www.slideshare.net/SigitAriyanto1/bab-3-pohon-tree#btnNext

17