Parsing grammar tanpa konteks kalebu nganalisis urutan simbol miturut sakumpulan aturan produksi sing ditemtokake dening grammar. Proses iki penting ing macem-macem bidang ilmu komputer, kalebu keamanan siber, amarga ngidini kita ngerti lan ngapusi data terstruktur. Ing jawaban iki, kita bakal njlèntrèhaké algoritma kanggo parsing grammar tanpa konteks lan ngrembug kerumitan wektu.
Algoritma sing paling umum digunakake kanggo parsing grammar tanpa konteks yaiku algoritma CYK, dijenengi miturut panemune Cocke, Younger, lan Kasami. Algoritma iki adhedhasar pemrograman dinamis lan ngoperasikake prinsip parsing ngisor. Iku mbangun tabel parse sing makili kabeh parses bisa kanggo substrings saka input.
Algoritma CYK dianggo kaya ing ngisor iki:
1. Initialize tabel parse karo dimensi nxn, ngendi n punika dawa senar input.
2. Kanggo saben simbol terminal ing senar input, isi ing sel sing cocog ing tabel parse karo simbol nonterminal sing gawé.
3. Kanggo saben substring dawa l saka 2 kanggo n, lan saben posisi wiwitan i saka 1 kanggo n-l+1, tindakake ing ngisor iki:
a. Kanggo saben titik partisi p saka i nganti i+l-2, lan saben aturan produksi A -> BC, priksa manawa sel (i, p) lan (p+1, i+l-1) ngemot simbol nonterminal B lan C , mungguh. Yen mangkono, tambahake A menyang sel (i, i + l-1).
4. Yen simbol wiwitan grammar ana ing sel (1, n), string input bisa dijupuk saka grammar. Yen ora, ora bisa.
Kompleksitas wektu algoritma CYK yaiku O(n^3 * |G|), ing ngendi n yaiku dawa string input lan |G| punika ukuran grammar. Kompleksitas iki muncul saka puteran nested sing digunakake kanggo ngisi tabel parse. Algoritma kasebut mriksa kabeh titik partisi lan aturan produksi kanggo saben dawa substring, nyebabake kerumitan wektu kubik.
Kanggo nggambarake algoritma kasebut, nimbang grammar tanpa konteks ing ngisor iki:
S -> AB | BC
A -> AA | a
B -> AB | b
C -> BC | c
Lan senar input "abc". Tabel parse kanggo conto iki bakal katon kaya ing ngisor iki:
| 1 | 2 | 3 |
——-|—–|—–|—–|
1 | A, S | B, C | S |
——-|—–|—–|—–|
2 | | B, C | A |
——-|—–|—–|—–|
3 | | | C |
——-|—–|—–|—–|
Ing tabel iki, sel (1, 3) ngemot simbol wiwitan S, nuduhake yen string input "abc" bisa diturunake saka grammar sing diwenehake.
Algoritma kanggo parsing grammar tanpa konteks, kayata algoritma CYK, ngidini kita nganalisa lan ngerti data terstruktur. Makaryakke kanthi mbangun tabel parse lan mriksa derivasi sing bener miturut aturan produksi grammar. Kompleksitas wektu algoritma CYK yaiku O(n^3 * |G|), ing ngendi n yaiku dawa string input lan |G| punika ukuran grammar.
Pitakonan lan jawaban anyar liyane babagan Kompleksitas:
- Apa kelas PSPACE ora padha karo kelas EXPSPACE?
- Apa kelas kompleksitas P subset saka kelas PSPACE?
- Apa kita bisa mbuktekake yen kelas Np lan P padha kanthi nemokake solusi polinomial sing efisien kanggo masalah lengkap NP ing TM deterministik?
- Apa kelas NP bisa padha karo kelas EXPTIME?
- Apa ana masalah ing PSPACE sing ora ana algoritma NP sing dikenal?
- Apa masalah SAT bisa dadi masalah lengkap NP?
- Bisa masalah ing kelas kerumitan NP yen ana mesin turing non deterministik sing bakal ngrampungake ing wektu polinomial
- NP minangka kelas basa sing nduweni verifier wektu polinomial
- Apa P lan NP bener kelas kerumitan padha?
- Apa saben basa bebas konteks ing kelas kompleksitas P?
Ndeleng pitakonan lan jawaban liyane ing Kompleksitas