Anda di halaman 1dari 11

01.

01
01.01

Model Komputasi

string
string input
input komputer
komputer string
string output
output
2 ^ 10 1024
• Apakah yang dilakukan komputer antara waktu ia menerima input
dan waktu ia menghasilkan jawaban?
Komputer melakukan komputasi.
• Komputasi (Computation) adalah sebarisan langkah-langkah yang
dapat dilaksanakan oleh suatu komputer.
• Prosedur sistematik (algoritme) adalah sebarisan berhingga
langkah-langkah yang dijamin menghasilkan jawaban.
• Agar terlepas dari kerumitan-kerumitan yang tidak perlu, kita tidak
mempelajari objek komputer secara langsung, tetapi kita
melakukan abstraksi.
Kita membuat model-model komputasi, yaitu mesin-mesin abstrak
yang dapat diperlakukan secara sistematik.

L . Y . S . Juni 2010
01.02
01.02

Definisi automaton (jamak: automata)

1. a mechanism that is relatively self-operating;


esp: ROBOT
2. a machine or control mechanism designed to
follow automatically a predetermined sequence
of operations or respond to encoded
instructions
3. an individual who acts in a mechanical fashion

dari kamus Merriam-Webster’s

L.Y.S.
01.03
01.03
Model komputasi (Mesin Abstrak) Bahasa yang dapat dikenal

Finite automaton Bahasa regular m a


(finite-state machine) a m
Pushdown automaton Bahasa context-free k p
i u
Linear-bounded automaton Bahasa context-sensitive n h
Mesin Turing Bahasa rekursif

• Decision problem:
Problem komputasional yang setiap kasusnya dapat dijawab
dengan “yes” atau “no.”
Contoh : Given a positive integer n, is it prime?.
Suatu decision-problem dapat dipikirkan sebagai suatu
language-recognition problem.
Input dikodekan sebagai suatu string of symbols.

L.Y.S.
01.04
01.04

Bahasa (Language)
• adalah suatu himpunan string yang terdiri dari simbol-simbol
dari suatu alfabet.
Alfabet adalah suatu himpunan berhingga dari simbol-simbol.
Contoh bahasa: bahasa natural, bahasa pemrograman.
String dalam bahasa natural: kalimat.
String dalam bahasa pemrograman: program.
• Apabila kita membahas suatu bahasa, kita mulai dengan
menentukan suatu alfabet yang mengandung semua simbol
yang dapat dipakai untuk membentuk string-string dalam
bahasa tersebut.
Untuk bahasa pemrograman, alfabet mencakup: 10 angka, 26
huruf kecil, 26 huruf besar, spasi, simbol-simbol punctuation.

L.Y.S.
01.05
01.05
• String
Andaikan ∑ adalah suatu alfabet.
Suatu string atas ∑ adalah nol atau lebih unsur dari ∑ yang
ditulis secara berurutan.
Contoh: untuk ∑ = {a,b} string-string atas ∑ adalah a, aa, ab,
aba, bbaa, …
String kosong (null-string/empty-string), yaitu string tanpa
simbol, dinyatakan dengan notasi ε.
Sebagai kesepakatan, ε ∉ ∑.
• Panjang string.
Jika x adalah suatu string atas ∑, panjang dari x (kita nyatakan
dengan |x|) adalah banyaknya simbol dalam x.
Contoh: ∑ = {a,b}. |aaa| = |aab| = |bab| = 3.
|ε| = 0. |b| = |a| = 1

L.Y.S.
01.06
01.06

• Himpunan dari semua string atas suatu alfabet ∑ dinyatakan


dengan ∑*.
Jadi suatu bahasa atas ∑ adalah suatu subset dari ∑*.
Contoh:
∑*={a,b}*={ε, a, b, aa, ab, ba, bb, aaa, aab, aba, …}.
Contoh-contoh bahasa atas ∑:
{}. {ε}. {a, aa, aaa}. {ε, a, ab, abb}.
{x ∈ {a,b}* ⏐ |x| ganjil}. {x ∈ {a,b}* ⏐ x mulai dengan b}.

• Karena bahasa adalah suatu himpunan, kita dapat membentuk


bahasa baru dengan operasi-operasi himpunan:
Union L1 ∪ L2 Irisan L1 ∩ L2
Beda L1 - L 2 Komplemen L’ = ∑* - L

L.Y.S.
01.07
01.07

Operasi Konkatenasi (concatenation)


• Jika x dan y adalah unsur-unsur dari ∑*, konkatenasi dari x dan
y adalah string xy yang terbentuk dari simbol-simbol dari x
diikuti simbol-simbol dari y secara berurutan.
Contoh : x=abb, y=ba, xy=abbba, yx=baabb.
• Operasi konkatenasi tidak komutatif.
• Untuk setiap string x,
xε = εx = x.
• Konkatenasi bersifat asosiatif, yaitu: untuk setiap string x, y,
dan z,
(xy)z = x(yz).

Jadi cukup ditulis xyz.

L.Y.S.
01.08
01.08

• String x adalah suatu substring dari string y jika terdapat string


w dan z, yang masing-masing mungkin ε, sedemikian sehingga
y = wxz.
Contoh: string ku adalah suatu substring dari string-string: ku,
kuku, aku, angkuh.
• Prefix dari suatu string x adalah suatu substring awal dari x.
Contoh: prefix dari string komputer adalah ε, k, ko, kom, komp,
…, komputer.
Suffix adalah suatu substring akhir.
• Konkatenasi dari bahasa.
Jika L1, L2 ⊆ ∑*, maka L1L2={xy ⏐ x ∈ L1 dan y ∈ L2}.
Contoh:
{aku,ingin} {kah,pun} = {akukah, akupun, inginkah, inginpun}.

L.Y.S.
01.09
01.09

• Jika a ∈ ∑, x ∈ ∑*, dan L ⊆ ∑*, maka


ak = aa … a ( k simbol )
xk = xx … x ( k string )
∑k = ∑∑…∑ = { x ∈ ∑* ⏐|x| = k}.
Lk = LL … L ( k bahasa )
Untuk k = 0 : a0 = ε, x0 = ε, ∑0 = {ε}, L0 = {ε}.
• Kleene's star: ∞
L* = U Lk
k =0

• Himpunan semua string yang dapat diperoleh dengan


konkatenasi sejumlah sembarang (nol atau lebih) unsur dari L.
• Perhatikan bahwa ε ∈ L* karena L0 = {ε}; tak peduli bahasa
apa L itu.

L.Y.S.
01.10
01.10

• Himpunan semua string yang dapat diperoleh dengan konkatenasi satu


atau lebih unsur dari L (suatu positive closure dari L):

L+ = U Lk
k =1

Contoh : Untuk L = {0,1},
L0 = {ε}
L1 = {0,1}
L2 = {0,1}{0,1} = {00, 01, 10, 11}
L3 = {00, 01, 10, 11}{0,1}
= {000, 001, 010, 011, 100, 101, 110, 111}

L*= L0 ∪ L1 ∪ L2 ∪ L3 …
= {ε, 0, 1, 00, 01, 10, 11, 000, 001, … }
L+ = L1 ∪ L2 ∪ L3 …
= {0, 1, 00, 01, 10, 11, 000, 001, … }

L.Y.S.
01.11
01.11

• L* disebut juga sebagai closure dari L, karena L* mengandung


semua string yang mungkin terbentuk dari unsur-unsur dalam L.
• Perhatikan bahwa:
L+ = L*L = LL*.
L ⊆ L*.
• Mungkinkah L+ = L* ? Ya. Kapan?
• Jika ∑ = { } = ∅, maka ∑* = {ε}.
• Jika L = {ε}, maka L* = {ε}.
• Kleene-closure dari dua himpunan dapat menghasilkan dua
bahasa yang sama walaupun kedua himpunan itu berbeda.
S = {a,b,ab}, T = {a,b,bb},
S* = T* ? Ya.
• L** = L*.

L.Y.S.

Anda mungkin juga menyukai