Anda di halaman 1dari 29

TUGAS INDIVIDUAL ASSIGNMENT

Mohammad Yafaz Habib

2019071062

Kelas: Teori Komputasi

Nama Dosen: Prio Handoko, S.Kom, M.T.I

Rangkuman Catatan Materi Kelas Teori Komputasi

Teknik adalah metode atau cara.

Komputasi adalah proses/pengolahan data yang dilakukan oleh komputer pada mesin abstrak
sederhana.

Teori komputasi, yaitu suatu metode/cara dalam melakukan proses/pengolahan data yang dilakukan
oleh komputer.

DEFINISI TEKNIK KOMPILASI

Kompilasi, yaitu suatu proses yang digunakan untuk menerjemahkan program yang ditulis dalam
high-level programming language (bahasa pemrograman tingkat tinggi) ke dalam low-level
programming language (bahasa pemrograman tingkat rendah) atau machine program.

Pada dasarnya, pengolahan proses komputasi mencakup adanya proses kompilasi. Hal tersebut
dikarenakan untuk membuat mesin memahami apa yang perlu dilakukan dalam melakukan
komputasi, perlu adanya penerjemahan dari instruksi-instruksi yang dilakukan menggunakan teknik
kompilasi.

Teori komputasi terbagi menjadi tiga cabang utama, yaitu:

1. Automata theory and formal languages


Teori ini terdiri atas tiga model, yakni:
- Finite automata
- Context-free grammars
- Turing machines

2. Computability theory Teori ini digunakan untuk memahami masalah yang dapat dipecahkan
dan yang tidak dapat dipecahkan.

3. Computational complexity theory Teori ini mengklasifikasikan masalah berdasarkan tingkat


kesulitannya; memberikan bukti yang kuat jika masalah yang sulit memang sebenarnya sulit.

DEFINISI TRANSLATOR

Translator adalah suatu program atau metode untuk mengambil input sebuah program lain yang
ditulis pada suatu source language (bahasa program) ke bahasa lain.
JENIS-JENIS TRANSLATOR

Terdapat tiga jenis translator pada sebuah komputasi, yaitu:

1. Assembler Assembler merupakan sebuah program yang mengambil instruksi dasar


komputer (source code) dan mengubahnya menjadi pola bit yang dapat digunakan computer
processor melakukan operasi dasarnya, yaitu bahasa Assembly.
2. Compiler Compiler merupakan bagian dari translator. Di dalam compiler terdapat: • Source
code: High level language (bahasa tingkat tinggi) • Object code: Bahasa mesin Source code
dan data diproses secara terpisah.
3. Interpreter Interpreter tidak menghasilkan bentuk object code; hasil translasinya dalam
bentuk internal dan source code harus selalu ada.

Mengukur mutu kompilator, kompilasi yang diinginkan dari kompilator tidak hanya sekadar
memberikan output (keluaran), tetapi juga harus memiliki kualitas yang baik. Kualitas kompilator
harus diukur melalui sebuah tahap pengujian.

Proses dan Tahapan Kompilasi

BAHASA DALAM PEMBUATAN KOMPILATOR

Pembuatan kompilator dapat dilakukan dengan menggunakan bahasa berikut:

1. Machine Language:
Pembuatan kompilator dengan menggunakan machine language (bahasa mesin) sulit untuk
dilakukan.
Tingkat kompleksitas pembuatan kompilator dengan machine language tergantung pada
jenis mesin yang digunakan. Semakin baik mesin yang digunakan maka semakin rumit pula
pembuatan kompilator.

2. Assembly Language:
Assembly language (bahasa perakitan) dapat digunakan dalam pembuatan kompilator.
Kelebihan dari penggunaan assembly language adalah hasil program memiliki ukuran yang
sangat kecil.

3. High-Level Language:
High-level language umumnya menggunakan bahasa yang sudah dipahami oleh manusia
sehingga lebih mudah untuk digunakan, termasuk dalam proses debugging.
High-level language juga memberikan fasilitas yang lebih banyak dan tidak bergantung pada
salah satu jenis mesin komputer.

CONTOH PROSES KOMPILASI

- Scanner

Scanner memecah operasi aritmetika menjadi token.


Gambar di samping adalah hasil dari scanner
- Parser

Kebenaran dan urutan kemunculan token diperiksa. Token pada Langkah 1 (scanner) diurutkan
secara postfix, seperti berikut:

- Semantic Analyzer (SA)

Intermediate code dibangkitkan dengan semantic analyzer (SA). Intermediate code dituliskan dalam
bentuk prefix notation. Proses yang terjadi adalah sebagai berikut:

- Code Generator (CG)

Object code dibangkitkan dengan code generator (CG). Berikut adalah proses yang terjadi:

- Code Optimizer (CO)


Object code diperkecil dan dipercepat dengan code optimizer (CO). Berikut adalah proses yang
terjadi:

- Pembuatan Object Code

Hasil optimasi dituliskan dalam assembly language sehingga dihasilkan object code sebagai
berikut:

NOTASI ARITMETIKA

Dalam proses kompilasi, leksikal/token akan diurutkan dengan notasi aritmetika tertentu.
Terdapat tiga jenis notasi aritmetika yang digunakan, yaitu:

1. Infix Notation
Infix notation adalah notasi aritmetika yang meletakkan operator di antara dua operand.

2. Postfix Notation
Postfix notation adalah notasi aritmetika yang meletakkan operator di belakang operand.
Berikut adalah contoh konversi infix notation ke postfix notation.

3. Prefix Notation

Dalam prefix notation, operator terletak di depan operand. Berikut ditampilkan konversi
infix notation ke prefix notation.

CONTOH KASUS 1
Terdapat source code dalam bentuk notasi aritmetika sebagai berikut:

Tentukanlah object code dari notasi di atas dengan menggunakan tahapan proses kompilasi.
BAHASA DAN OTOMATA

TEORI BAHASA

Teori bahasa membicarakan bahasa formal, terutama untuk kepentingan perancangan compiler
(kompilator) dan text processor (pemroses naskah).

Bahasa terbagi menjadi dua jenis, yaitu bahasa alami (natural) dan bahasa formal.

1. Bahasa alami adalah bahasa yang digunakan manusia untuk berkomunikasi dan tidak
dirancang secara khusus. Bahasa ini berkembang secara alami.

2. Bahasa formal adalah bahasa yang dirancang untuk kebutuhan tertentu. Bahasa ini adalah
kumpulan kalimat. Semua kalimat dalam sebuah bahasa dibangkitkan oleh sebuah grammar
(tata bahasa) yang sama. Sebuah bahasa formal bisa dibangkitkan oleh dua atau lebih tata
bahasa berbeda.

OTOMATA

Otomata adalah mesin abstrak yang dapat mengenali (recognize), menerima (accept),
dan/atau membangkitkan (generate) sebuah kalimat dalam bahasa tertentu. Gambar di
samping adalah gambar pemodelan otomata.

TERMINOLOGI DALAM OTOMATA

Berikut adalah beberapa terminologi dalam otomata.

• Simbol adalah sebuah entitas abstrak dari sebuah huruf atau sebuah angka.

• String adalah deretan terbatas (finite) simbol-simbol.


Contoh String Jika a, b, dan c adalah tiga buah simbol, maka abc adalah sebuah string yang
dibangun dari ketiga simbol tersebut.

• Panjang string dinyatakan sebagai <string> dan didefinisikan sebagai cacahan


(banyaknya) simbol yang menyusun string tersebut.
Contoh Panjang String Jika string w = abcb, maka w= 4.

• String hampa adalah sebuah string dengan nol buah simbol yang dinyatakan dengan
simbol  (atau ^) sehingga = 0. String hampa dapat dipandang sebagai simbol hampa
karena keduanya tersusun dari nol buah simbol.

• Alfabet adalah finite set (himpunan hingga) dari simbol-simbol.

SIMBOL TERMINAL

Dalam grammar, anggota alfabet dinamakan simbol terminal atau token.


Berikut adalah yang termasuk ke dalam simbol-simbol terminal.

1. Huruf kecil awal alfabet, seperti a, b, dan c.

2. Simbol operator, seperti +, −, dan ×.

3. Simbol tanda baca, seperti (,), dan ;.

4. String yang tercetak tebal, seperti if, then, dan else.

MEREPRESENTASIKAN GRAMMAR

Grammar G didefinisikan sebagai pasangan empat tuple, yaitu 𝒱𝒯 , 𝒱𝑁 , 𝑆, dan 𝑄.

𝐺(𝒱𝒯 , 𝒱𝑁, 𝑆, 𝑄)

Keterangan:

𝑽𝑻 : himpunan simbol-simbol terminal (himpunan token atau alfabet)

𝑽𝑵: himpunan simbol-simbol nonterminal

𝑺 ∈ 𝑽𝑵: simbol awal (simbol start)

DERIVASI KALIMAT

Derivasi adalah proses pembentukan sebuah kalimat atau sentensial.

Derivasi dilambangkan dengan dua garis anak panah 𝛼 ⇒ β

a. Derivasi kalimat terpendek Menentukan kalimat terpendek dari himpunan produksi.

b. Derivasi kalimat umum Melihat pola kombinasi setiap produksi sehingga mendapatkan
kesimpulan yang memunculkan pola kalimat umum.

CONTOH KASUS
KLASIFIKASI GRAMMAR CHOMSKY

Menurut Noam Chomsky, secara umum tata bahasa dikelompokkan menjadi empat jenis, yaitu:

1. Grammar tipe ke-0: Unrestricted Grammar (UG)

2. Grammar tipe ke-1: Context Sensitive Grammar (CSG)

3. Grammar tipe ke-2: Context Free Grammar (CFG)

4. Grammar tipe ke-3: Regular Grammar (RG)


FINITE AUTOMATA

Finite automata (FA) adalah mesin abstrak paling sederhana untuk mengenali pola.

Finite automata pada umumnya disajikan dalam sebuah model abstrak dari komputer digital.
Penyajiannya digambarkan dengan simbol state (stata/kondisi) dan simbol anak panah.

Simbol state digambarkan dengan bangun lingkaran satu tepi (state awal) dan dua tepi (state akhir).

Simbol anak panah, satu arah atau dua arah untuk menunjukkan arah luaran penelusuran automata.

JENIS FINITE AUTOMATA

Finite automata dibagi ke dalam dua jenis, yaitu:

1. Deterministic Finite Automata (DFA) DFA, transisi finite state (FS) merupakan akibat dari
pembacaan sebuah simbol yang bersifat tertentu. DFA merupakan jenis FA yang tidak
diperkenankan untuk memiliki transisi null ke state lainnya dan hanya menuju tepat ke
sebuah state lainnya.

Berikut adalah contoh penggambaran mesin abstrak automata untuk DFA.

2. Nondeterministic Finite Automata (NFA) NFA, transisi finite state (FS) merupakan akibat dari
pembacaan sebuah simbol bersifat tak tentu. NFA, merupakan jenis FA yang diperkenankan
memiliki transisi null dan dapat menuju ke sejumlah state untuk input tertentu.
DETERMINISTIC FINITE AUTOMATA (DFA)

Deterministic finite automata (DFA) merupakan jenis finite automata (FA) yang tidak
diperkenankan untuk memiliki transisi null ke state lainnya dan hanya menuju tepat ke
sebuah state lainnya.

Berikut adalah ilustrasi penggambaran mesin DFA.

CONTOH KASUS 1
Problem: Telusurilah, apakah string abababaa diterima DFA F? Jawab:

• Apabila state awal (Q0) diberi masukan a maka akan bergerak ke state yang sama, yaitu Q0.

• State Q0 diberi masukan b maka akan bergerak ke state Q1.

• State Q1 diberi masukan a maka akan bergerak ke state Q0.

• State Q0 diberi masukan b maka akan bergerak ke state Q1.

• State Q1 diberi masukan a maka akan bergerak ke state Q0.

• State Q0 diberi masukan b maka akan bergerak ke state Q1.

• State Q1 diberi masukan a maka akan bergerak ke state Q0.

• State Q0 diberi masukan a maka akan bergerak ke ke state yang sama, yaitu Q0 yang
merupakan state penerima/akhir.

Berdasarkan penelusuran dari string abababaa terhadap grafik DFA F maka didapatkan hasil
bahwa string abababaa diterima oleh DFA F.

FINITE STATE MACHINE (FSM)

Finite state machine (FSM) adalah varian otomata berhingga yang memiliki output.

Finite state machine didefinisikan sebagai pasangan enam tuples, yaitu:

Contoh Kasus

Diketahui sebuah FSM memiliki simbol dan fungsi sebagai berikut:


Sajikan grafik dan tabel transisi finite state machine sesuai dengan keterangan di atas:

MEMBUAT TABEL

Berikut adalah langkah-langkah menyusun tabel transisi dari Contoh Kasus 1.


Buatlah tabel dengan jumlah baris sesuai dengan jumlah anggota 𝐾 (tiga buah) dan jumlah
kolom sesuai dengan jumlah anggota 𝑉𝑇 (dua buah), seperti berikut:

Masukkan data fungsi f ke dalam tabel. Berikut adalah ilustrasi cara memasukkan data fungsi F
ke dalam tabel.

Masukkan seluruh data Fungsi F ke dalam tabel. Berikut adalah hasilnya

Masukkan data fungsi G ke dalam tabel yang sudah diisi fungsi F. Berikut adalah ilustrasi cara
memasukkan data fungsi G ke dalam tabel.
Masukkan seluruh data fungsi G ke dalam tabel. Berikut adalah hasil akhir dari tabel finite state
machine pada Contoh Kasus 1.

FSM BINARY ADDER

Finite state machine (FSM) merupakan varian finite automata yang memiliki input dan juga
output.

Finite state machine (FSM) binary adder merupakan salah satu implementasi atau penerapan
dari FSM. Sifat penjumlahan biner bergantung pada statusnya, yaitu carry atau not carry.

NONDETERMINISTIC FINITE AUTOMATA

Nondeterministic finite automata (NFA) merupakan jenis finite automata yang dapat memiliki
sifat: Memiliki transisi null, Dapat menuju ke lebih dari satu state.

PEMBUATAN GRAFIK OTOMATA

Sebelum menguji string ab dan aba, buatlah terlebih dahulu grafik otomata NFA dari keterangan
pada slide 5. Berdasarkan keterangan yang tersedia, dapat digambarkan grafik berikut:
Berikut adalah proses pengujian string ab.

NFA TO DFA CONVERSION TECHNIQUE

Nondeterministic finite automata (NFA) merupakan sebuah finite automata (FA) yang ambigu
dan agar terhindar dari ambigu maka sebuah NFA perlu dinormalisasikan.

Proses normalisasi dilakukan dengan melakukan konversi NFA ke DFA. Konversi adalah
perubahan dari satu bentuk (rupa dan sebagainya) ke bentuk (rupa dan sebagainya) yang lain.
Proses konversi NFA ke DFA mengikuti algoritme konversi.

TAHAPAN ALGORITME KONVERSI NFA KE DFA

Misalnya sebuah NFA memiliki pasangan elemen berikut:


Tetapkan 𝑺’ = 𝑺 dan VT ’ = VT , kemudian salinkan tabel DFA 𝑭 sebagai tabel DFA 𝑭’ sehingga 𝑲’
= 𝑲 dan 𝑴’ = 𝑴.

Setiap state 𝒒 yang merupakan nilai dari fungsi dan 𝒒 ∉ 𝑲, ditetapkan sebagai elemen baru dari
𝑲’. Tempatkan 𝒒 tersebut pada kolom state 𝑴’, lakukan pemetaan berdasarkan fungsi 𝑴

Ulangi langkah sampai tidak ada lagi state baru.


Karena semua state telah diperiksa dan tidak ada lagi transisi state baru maka proses konversi
telah selesai.

Selanjutnya, buatlah penggambaran mesin automata berdasarkan tabel transisi M’. Hasil
penggambarannya adalah sebagai berikut:
Elemen 𝒁’ adalah semua state yang mengandung state elemen 𝒁.

Untuk menentukan state penerima pada mesin DFA yang baru, apabila terdapat salah satu state
penerima dari elemen Z (yaitu C) maka state tersebut dapat dikatakan sebagai state penerima.
Pada mesin DFA yang baru state penerima adalah {B, C}.

HASIL KONVERSI NFA KE DFA


DFA TO GRAMMAR CONVERSION

Konversi DFA ke grammar merupakan sebuah proses pengubahan mesin DFA ke dalam bentuk
grammar atau tata bahasa. Sebuah grammar pada umumnya disajikan dalam bentuk himpunan
produksi-produksi. Proses konversi didasarkan pada algoritme konversi yang akan mengubah
sebuah proses penelusuran simbol terminal terhadap sebuah state menjadi bentuk produksi
grammar.

ALGORITME KONVERSI DFA KE GRAMMAR

Algoritme konversi DFA ke grammar mengikuti langkah-langkah berikut:

1. Tetapkan: 𝑽𝑻’ =𝑽𝑻, 𝑺’ = 𝑺, 𝑽𝑵 = 𝑲

2. Jika 𝑨𝒑, 𝑨𝒒 ∈ 𝑲 dan 𝒙 ∈ 𝑽𝑻 maka 𝑴(𝑨𝒑, 𝒙) = 𝑨𝒒 ekuivalen dengan produksi: 𝑨𝒑 → 𝒙𝑨𝒒 ,


jika 𝑨𝒒𝒁 𝑨𝒑 → 𝒙 , jika 𝑨𝒒𝒁 𝑨𝒑 adalah state transisi dan 𝒙 adalah simbol terminal input.

Diketahui sebuah DFA sebagai berikut 𝑭 𝑲, 𝑽𝑻, 𝑴, 𝑺, 𝒁 , akan dibentuk grammar 𝑮 = 𝑽𝑻 ’ , 𝑽𝑵,
𝑺’, 𝑸 dengan:

Tentukanlah grammar dari mesin DFA tersebut.

PENYELESAIAN
GRAMMAR TO NFA CONVERSION

Konversi grammar ke NFA merupakan sebuah proses pengubahan bentuk grammar atau tata
bahasa ke dalam mesin NFA.

Konversi dilakukan untuk mengubah himpunan produksi suatu grammar ke dalam bentuk fungsi
transisi 𝑴. Proses konversi didasarkan pada algoritme konversi dengan membalikkan algoritme
konversi bentuk DFA untuk menentukan semua produksi grammar.

ALGORITME KONVERSI GRAMMAR KE NFA

CONTOH KASUS

Anda mungkin juga menyukai