Back to Soal Latihan UAS TBFO
Problem Set Paket B: Visualisasi & Studi Kasus CFG
Mata Kuliah: Teori Bahasa Formal dan Otomata
Topik: Visualisasi Parse Tree, Tracing, dan Pembuktian
Fokus: Modeling, Reading Trees, & Ambiguity Analysis
Total Soal: 30 Soal
Petunjuk Pengerjaan
-
Format: Pilihan Ganda Majemuk (Jawaban benar bisa lebih dari satu).
-
Diagram: Beberapa soal menggunakan diagram pohon (Mermaid). Perhatikan struktur Parent-Child dengan teliti.
-
Tujuan: Menguji kemampuan membaca struktur pohon, memvalidasi langkah derivasi, dan menganalisis ambiguitas.
BAGIAN I: Visualisasi Pohon & Yield (10 Soal)
Fokus: Membaca struktur pohon, menentukan Yield, dan validitas node.
1. Perhatikan Parse Tree berikut untuk Grammar :
graph TD; S-->A; S-->B; A-->Leaf1[0]; A-->Leaf2[1]; B-->Leaf3[1]; B-->Leaf4[1];
Manakah pernyataan yang BENAR mengenai pohon di atas?
-
a.Akar (Root) dari pohon adalah .
-
b.Yield dari pohon ini adalah string “0111”.
-
c.Terdapat aturan produksi dalam grammar .
-
d.Pohon ini memiliki kedalaman (height) 2 (jika akar = level 0).
-
e.Simpul dan adalah sibling (saudara).
2. Diberikan Parse Tree dengan struktur sebagai berikut:
graph TD; E-->E1[E]; E-->Plus['+']; E-->E2[E]; E1-->Id1[id]; E2-->Id2[id];
Interpretasi yang tepat untuk pohon ini adalah:
-
a.Pohon ini merepresentasikan ekspresi id + id.
-
b.Aturan produksi yang digunakan di akar adalah .
-
c.Simbol + adalah sebuah Variabel.
-
d.Simbol id adalah Terminal (daun).
-
e.Ini adalah contoh derivasi Rightmost saja.
3. Tinjau pohon penurunan yang mengandung (epsilon):
graph TD; S-->A; S-->B; A-->a; B-->Epsilon[ε];
Analisis manakah yang BENAR?
-
a.Grammar pasti memiliki aturan .
-
b.Yield dari pohon ini adalah “a”.
-
c.Yield dari pohon ini adalah “aε”.
-
d.Simpul adalah nullable variable.
-
e.Pohon ini tidak valid karena memiliki daun kosong.
- Jika sebuah Parse Tree memiliki 5 simpul daun (leaves) yang semuanya terminal, maka:
-
a.Panjang string hasil (Yield) adalah 5 karakter.
-
b.Tinggi pohon pasti 5.
-
c.Jumlah langkah derivasi minimal adalah 1.
-
d.Pohon tersebut merepresentasikan sebuah kalimat valid dalam bahasa.
-
e.Tidak mungkin ada simpul daun yang berlabel .
5. Perhatikan potongan sub-pohon berikut:
graph TD; X-->Y; X-->Z; Y-->a; Z-->X2[X]; Z-->b;
Apa yang bisa disimpulkan mengenai Grammar yang menghasilkannya?
-
a.Grammar bersifat rekursif ( memanggil , memanggil ).
-
b.Aturan produksi yang terlibat adalah dan .
-
c. pasti variabel yang menurunkan terminal a.
-
d.Grammar ini pasti ambigu.
-
e.Sub-pohon ini merepresentasikan string “axb” (jika belum diturunkan).
- Manakah dari diagram berikut yang merepresentasikan aturan ?
-
a.Akar memiliki 3 anak: (, A, ).
-
b.Akar memiliki 1 anak: (A).
-
c.Simbol kurung ( dan ) adalah daun (terminal).
-
d.Simpul di tengah adalah internal node.
-
e.Yield-nya adalah string kosong.
- Mengenai hubungan antara Tinggi Pohon dan Panjang Derivasi:
-
a.Semakin tinggi pohon, umumnya semakin banyak langkah derivasinya.
-
b.Pohon dengan tinggi 1 (Root langsung ke Terminal) merepresentasikan aturan .
-
c.Tinggi pohon selalu sama dengan panjang string input.
-
d.Jumlah internal node sama dengan jumlah langkah substitusi variabel.
-
e.Pohon yang sangat lebar tapi pendek (misal ) memiliki 1 langkah derivasi.
- Dalam memvisualisasikan Ambiguous Grammar untuk string id + id * id, kita akan menemukan:
-
a.Dua pohon dengan bentuk struktur yang berbeda.
-
b.Dua pohon dengan Yield yang sama persis.
-
c.Salah satu pohon mengelompokkan id + id lebih dulu (di bawah).
-
d.Salah satu pohon mengelompokkan id * id lebih dulu (di bawah).
-
e.Simpul akar (Root) yang berbeda untuk setiap pohon.
9. Diberikan pohon:
graph TD; S-->A; A-->a1[0]; A-->A1[A]; S-->B; B-->b1[1];
Validasi Yield dan Aturan:
-
a.Yield adalah “001”.
-
b.Yield adalah “0A1”.
-
c.Aturan yang dipakai: , , , .
-
d.Ada kesalahan struktur, tidak bisa punya anak lagi.
-
e.Pohon ini belum selesai (partial tree)
- Visualisasi “Yield” dilakukan dengan cara:
-
a.Traversal Pre-order pada pohon.
-
b.Membaca hanya simpul daun (leaves).
-
c.Membaca dari kiri ke kanan.
-
d.Mengabaikan simpul internal.
-
e.Menyambungkan semua label simpul menjadi satu string.
BAGIAN II: Studi Kasus Derivasi & Tracing (10 Soal)
Fokus: Menelusuri langkah derivasi dan mencocokkannya dengan pohon.
- Diberikan Grammar: . Kita ingin memodelkan string “aabb”. Manakah langkah yang benar?
-
a.Kita butuh Parse Tree dengan tinggi minimal 3.
-
b.Root akan punya anak .
-
c.Anak yang di tengah akan menurunkan lagi.
-
d. terakhir akan menurunkan .
-
e.Derivasi: .
- Studi Kasus “Palindrom”: .
Jika kita menggambar Parse Tree untuk string “0110”, maka:
-
a.Simpul akar memiliki anak .
-
b.Simpul di level 2 memiliki anak .
-
c.Simpul di level 3 adalah daun dengan label .
-
d.Total ada 3 simpul internal berlabel .
-
e.String ini tidak bisa dibentuk oleh grammar tersebut.
13. Tracing Leftmost Derivation untuk pohon berikut:
graph TD; S-->A; S-->B; A-->x; B-->y;
- a.Langkah 1: .
- b.Langkah 2: Ganti dengan ().
- c.Langkah 3: Ganti dengan ().
- d.Langkah 2 harusnya mengganti dulu () jika ini Leftmost.
- e.Urutan penggantian variabel di pohon tidak mempengaruhi struktur pohon akhir.
14. Analisis Kesalahan (Error Analysis). Jika Grammar , , tapi mahasiswa menggambar pohon:
graph TD; S-->A; S-->0; A-->1;
Apa kesalahan pada pohon tersebut?
-
a.Variabel menurunkan 1 padahal aturannya .
-
b.Seharusnya punya dua anak: 1 dan A.
-
c.Pohon tersebut menghasilkan string “10”.
-
d.Pohon tersebut valid untuk derivasi parsial.
-
e. tidak boleh punya anak 0.
- Diberikan Sentential Form: a A b b.Langkah derivasi selanjutnya yang valid dalam Leftmost Derivation adalah:
-
a.Mengganti dengan body produksinya.
-
b.Mengganti dengan body produksinya.
-
c.Mengganti dengan variabel lain.
-
d.Memilih variabel paling kiri (yaitu ).
-
e.Bebas memilih atau .
- Studi Kasus Ekspresi Matematika: .
String input: x + y + z. Bagaimana bentuk pohonnya agar asosiatif kiri (left-associative)?
-
a.Pohon tumbuh ke kiri (deep on the left).
-
b.Akar punya anak .
-
c.Anak sebelah kiri akan memecah lagi menjadi (untuk x+y).
-
d.Anak sebelah kanan langsung membungkus z.
-
e.Pohon tumbuh ke kanan ().
- Konsep “Sub-tree” dalam Derivasi:
-
a.Setiap variabel dalam sentential form adalah akar dari sebuah sub-tree potensial.
-
b.Jika , maka akan menjadi akar sub-tree di tengah.
-
c.Mengganti sub-tree dengan sub-tree lain akan mengubah yield string.
-
d.Sub-tree yang akarnya Terminal tidak memiliki anak.
-
e.Sub-tree merepresentasikan langkah derivasi parsial.
- Tracing Rightmost untuk , , .
-
a..
-
b.Variabel paling kanan adalah .
-
c.Langkah selanjutnya: .
-
d.Langkah selanjutnya: .
-
e.Langkah ini menghasilkan pohon yang berbeda dengan Leftmost.
- Jika sebuah pohon memiliki Yield ”()”, manakah aturan yang mungkin menghasilkannya?
-
a..
-
b..
-
c..
-
d..
-
e..
- Validasi Langkah Induksi:
Hipotesis: Sub-pohon dengan tinggi bisa diderivasi.
Kasus: Pohon dengan tinggi memiliki akar dan anak .
-
a.Kita pecah menjadi derivasi .
-
b.Kita terapkan hipotesis pada sub-pohon dan .
-
c.Kita gabungkan hasil derivasi lalu .
-
d.Ini membuktikan bahwa pohon tinggi juga memiliki derivasi valid.
-
e.Induksi gagal jika adalah terminal.
BAGIAN III: Ekuivalensi & Bukti (10 Soal)
Fokus: Logika pembuktian antara Pohon, Derivasi, dan Grammar.
- Pernyataan Ekuivalensi:
“Ada Parse Tree untuk ” “Ada Derivasi “.*
Implikasi dari pernyataan ini adalah:
-
a.Kita bisa menggunakan Parse Tree untuk membuktikan keanggotaan string.
-
b.Kita bisa menggunakan Derivasi untuk membuktikan keanggotaan string.
-
c.Jika kita tidak bisa membuat pohon, maka string pasti tidak valid (asumsi kita jago gambar).
-
d.Compiler boleh memilih salah satu representasi internal.
-
e.Jumlah simpul pohon sama dengan jumlah langkah derivasi.
- Dalam pembuktian “Derivasi Parse Tree”, kita menggunakan induksi pada:
-
a.Panjang string input ().
-
b.Jumlah langkah derivasi ().
-
c.Jumlah variabel dalam grammar.
-
d.Tinggi pohon.
-
e.Jumlah terminal.
- Studi Kasus Ambiguitas & Ekuivalensi:
Jika memiliki dua jalur berbeda, maka:
-
a.Pasti ada dua Parse Tree berbeda untuk .
-
b.Pasti ada dua Rightmost Derivation berbeda untuk .
-
c.Grammar tersebut ambigu.
-
d.Bahasa tersebut pasti ambigu inheren (inherently ambiguous).
-
e. memiliki makna ganda.
- Hubungan antara “Derivasi Terkiri” dan “Pre-order Traversal” pohon:
-
a.Urutan variabel yang diekspansi dalam Leftmost Derivation sesuai dengan urutan variabel yang ditemui dalam Pre-order traversal pohon (depth-first, left-to-right).
-
b.Pre-order traversal hanya mengunjungi daun.
-
c.Keduanya mengunjungi simbol paling kiri terlebih dahulu.
-
d.Tidak ada hubungan sama sekali.
-
e.Derivasi Terkiri lebih mirip Post-order.
- Mengapa pembuktian Ekuivalensi penting untuk algoritma Parsing?
-
a.Menjamin bahwa jika algoritma (misal CYK) menemukan , maka pasti ada pohon struktur yang valid.
-
b.Memastikan bahwa output parser (Pohon) benar-benar merepresentasikan aturan Grammar.
-
c.Agar kita bisa mengubah parser Top-Down menjadi Bottom-Up tanpa masalah teoritis.
-
d.Karena komputer hanya mengerti angka biner.
-
e.Untuk memvalidasi optimasi kode.
- Jika (Unit Production) ada dalam grammar, bagaimana visualisasinya di pohon?
-
a.Simpul punya anak tunggal .
-
b.Simpul punya anak tunggal .
-
c.Simpul dan bergabung jadi satu node.
-
d.Jalur pohon menjadi lebih panjang (bertambah tingginya).
-
e.Ini menyebabkan siklus (cycle) di pohon.
- Diberikan derivasi: .
Konstruksi pohonnya adalah:
-
a.Buat Root .
-
b.Buat anak dan dari .
-
c.Dari , buat anak .
-
d.Dari , buat anak .
-
e.Hubungkan langsung ke .
- “Reversibility” (Keterbalikan):
Bisakah kita mengubah Rightmost Derivation menjadi Parse Tree, lalu mengubahnya menjadi Leftmost Derivation?
-
a.Bisa, karena Parse Tree adalah representasi netral (tidak peduli urutan waktu).
-
b.Tidak, karena informasi urutan hilang.
-
c.Bisa, dan hasilnya pasti unik (untuk grammar unambiguous).
-
d.Bisa, tapi hasilnya mungkin berbeda jika grammar ambigu.
-
e.Ini adalah cara standar untuk mengkonversi antar jenis derivasi.
- Sebuah “Forest” (Hutan) dalam konteks parsing:
-
a.Kumpulan Parse Tree parsial yang belum tersambung ke Root tunggal.
-
b.Kondisi saat parsing belum selesai.
-
c.Representasi untuk grammar ambigu (parse forest).
-
d.Himpunan semua variabel.
-
e.Istilah lain untuk Chomsky Normal Form.
- Inferensi Rekursif vs Parse Tree:
-
a.Inferensi Rekursif membangun validitas dari Daun ke Akar (Bottom-up logic).
-
b.Parse Tree memvisualisasikan struktur dari Akar ke Daun (Top-down visual).
-
c.Keduanya membuktikan hal yang sama.
-
d.Inferensi rekursif tidak bisa menangani rekursi.
-
e.Parse Tree lebih intuitif bagi manusia.
Kunci Jawaban (Paket B)
Bagian I
-
a, b, c, d, e ( root, salah harusnya terpisah anak, yield , anak )
-
a, b, d (Struktur
E+E,iddaun) -
a, b, d (B epsilon, yield “a” karena kosong)
-
a, d (Panjang string 5, valid kalimat)
-
a, b, c (Rekursif , aturan , )
-
a, c, d (Anak 3:
(,A,), kurung terminal) -
a, b, d (Tinggi langkah, internal node = substitusi)
-
a, b, c, d (Struktur beda, yield sama, grouping beda)
-
b (Yield baca daun kiri-kanan: → ) → Note: Jika dianggap belum selesai
-
b, c, d (Baca daun, kiri-kanan, internal skip)
Bagian II
-
a, b, c, d, e (Semua langkah benar untuk )
-
a, c, d (, lalu , total 3 P vertikal, daun )
-
a, b, c, e (Langkah valid Leftmost, urutan pohon statis)
-
a, b (Aturan harusnya 2 anak, di gambar cuma 1 anak 1)
-
a, d (Leftmost wajib variabel terkiri )
-
a, b, c, d (Asosiatif kiri = tumbuh ke kiri/bawah kiri)
-
a, b, d, e (Definisi sub-tree dan derivasi parsial)
-
a, b, c, d (Langkah valid Rightmost)
-
a, b (Bisa dari atau asalkan bentuknya atau di body)
-
a, b, c, d (Logika induksi struktur pohon)
Bagian III
-
a, b, d (Ekuivalensi bukti, compiler internal)
-
b, d (Induksi langkah atau tinggi pohon)
-
a, b, c, e (Definisi ambiguitas)
-
a, c (Pre-order visit root-left-right expand parent-left child)
-
a, b, c (Validasi algoritma, fleksibilitas parser)
-
a, d (Anak tunggal, menambah tinggi tanpa nambah lebar)
-
a, b, c, d (Langkah konstruksi pohon standar)
-
a, c, d, e (Pohon adalah perantara konversi yang valid)
-
a, b, c (Definisi Forest dalam parsing)
-
a, b, c, e (Perbandingan sudut pandang pembuktian)