Semua video
Pemrograman DinamisMenengahFase D–FE1E5

Longest Common Subsequence

LCS mencari deret huruf terpanjang yang muncul di dua teks dengan urutan yang sama (boleh diselang-seling). Sebuah tabel dinamis diisi: bila dua huruf cocok, nilainya = diagonal kiri-atas + 1; bila beda, ambil yang terbesar dari atas atau kiri. Menelusuri balik tabel memberi deret bersama itu. Inilah inti dari membandingkan dua versi teks. Visualisasi mengisi tabel dan menyorot sel-sel yang cocok.

Contoh kasus

Fitur git diff yang menandai perbedaan dua versi kode, dan alat pendeteksi plagiat yang mencari bagian yang sama antara dua dokumen.

Silabus

Isi tabel: huruf cocok = diagonal+1, huruf beda = max(atas, kiri); telusuri balik untuk deret bersamanya.

Tujuan Belajar
  • ·Memahami pemrograman dinamis pada dua dimensi
  • ·Menjelaskan aturan sel cocok vs sel beda
  • ·Menelusuri balik solusi dari tabel yang sudah terisi
Cara Kerja
  • ·Buat tabel (panjang X+1) × (panjang Y+1) berisi 0.
  • ·Untuk tiap pasang huruf: bila SAMA, sel = diagonal kiri-atas + 1.
  • ·Bila BEDA, sel = nilai terbesar dari atas atau kiri.
  • ·Telusuri balik dari pojok kanan-bawah — huruf-huruf cocok menyusun LCS.
Prasyarat
  • ·Konsep subsequence (deret bagian berurutan)
  • ·Tabel atau grid dua dimensi
  • ·Rekursi / DP dasar
Contoh Nyata
  • ·git diff membandingkan dua versi kode.
  • ·Deteksi plagiat dan kemiripan dokumen.
  • ·Menyelaraskan urutan DNA di bioinformatika.

Kompleksitas O(panjang X × panjang Y)