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

  1. Format: Pilihan Ganda Majemuk (Jawaban benar bisa lebih dari satu).

  2. Diagram: Beberapa soal menggunakan diagram pohon (Mermaid). Perhatikan struktur Parent-Child dengan teliti.

  3. 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.

  1. 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).

  1. 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.

  1. 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.

  1. 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)

  1. 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.

  1. 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: .

  1. 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.

  1. 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 .

  1. 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 ().

  1. 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.

  1. Tracing Rightmost untuk , , .
  • a..

  • b.Variabel paling kanan adalah .

  • c.Langkah selanjutnya: .

  • d.Langkah selanjutnya: .

  • e.Langkah ini menghasilkan pohon yang berbeda dengan Leftmost.

  1. Jika sebuah pohon memiliki Yield ”()”, manakah aturan yang mungkin menghasilkannya?
  • a..

  • b..

  • c..

  • d..

  • e..

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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 .

  1. “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.

  1. 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.

  1. 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

  1. a, b, c, d, e ( root, salah harusnya terpisah anak, yield , anak )

  2. a, b, d (Struktur E+E, id daun)

  3. a, b, d (B epsilon, yield “a” karena kosong)

  4. a, d (Panjang string 5, valid kalimat)

  5. a, b, c (Rekursif , aturan , )

  6. a, c, d (Anak 3: (, A, ), kurung terminal)

  7. a, b, d (Tinggi langkah, internal node = substitusi)

  8. a, b, c, d (Struktur beda, yield sama, grouping beda)

  9. b (Yield baca daun kiri-kanan: ) Note: Jika dianggap belum selesai

  10. b, c, d (Baca daun, kiri-kanan, internal skip)

Bagian II

  1. a, b, c, d, e (Semua langkah benar untuk )

  2. a, c, d (, lalu , total 3 P vertikal, daun )

  3. a, b, c, e (Langkah valid Leftmost, urutan pohon statis)

  4. a, b (Aturan harusnya 2 anak, di gambar cuma 1 anak 1)

  5. a, d (Leftmost wajib variabel terkiri )

  6. a, b, c, d (Asosiatif kiri = tumbuh ke kiri/bawah kiri)

  7. a, b, d, e (Definisi sub-tree dan derivasi parsial)

  8. a, b, c, d (Langkah valid Rightmost)

  9. a, b (Bisa dari atau asalkan bentuknya atau di body)

  10. a, b, c, d (Logika induksi struktur pohon)

Bagian III

  1. a, b, d (Ekuivalensi bukti, compiler internal)

  2. b, d (Induksi langkah atau tinggi pohon)

  3. a, b, c, e (Definisi ambiguitas)

  4. a, c (Pre-order visit root-left-right expand parent-left child)

  5. a, b, c (Validasi algoritma, fleksibilitas parser)

  6. a, d (Anak tunggal, menambah tinggi tanpa nambah lebar)

  7. a, b, c, d (Langkah konstruksi pohon standar)

  8. a, c, d, e (Pohon adalah perantara konversi yang valid)

  9. a, b, c (Definisi Forest dalam parsing)

  10. a, b, c, e (Perbandingan sudut pandang pembuktian)