Académique Documents
Professionnel Documents
Culture Documents
Frank Neven
University of Limburg
frank.neven@luc.ac.be
1 Introduction
Munculnya XML memprakarsai sebuah simbiosis antara penelitian dokumen, database
dan bahasa resmi (see, e.g., the survey by Vianu [38]). Simbiosis ini mengakibatkan,
sebagai contoh, dalam pengembangan tree automata yang tidak berperingkat. Tree tak
berperingkat memiliki label terbatas dimana node dapat memiliki sembarang anak. Jadi,
tidak ada peringkat yang berhubungan dengan masing-masing label. Sebagaimana
struktur Dokumen XML dapat secara memadai ditunjukkan oleh tree tidak Berperingkat.
Tree tak berperingkat dapat menyelesaikan penelitian XML dalam empat cara berbeda;
1. sebagai dasar bahasa skema dan memvalidasi dari skema
2. sebagai mekanisme evaluasi untuk bahasa pola
3. sebagai algoritma toolbox (mis, XPath penahanan dan typechecking ); dan
4. sebagai paradigma baru
Tree automata yang tidak berperingkat menggunakan bahasa string biasa untuk
menangani ketidak berperingkatan. Yang terakhir yang sederhana tapi efektif sebagai
paradigma yang menemukan aplikasi di beberapa formalisme.
Tulisan ini adalah upaya untuk memberikan pengantar ringan mengenai tree automata
yang tidak berperingkat dan memberikan referensi untuk beberapa aplikasi. Kami
menyebutkan
bahwa Vardi, pada tahun 1989, telah menulis sebuah paper yang mendemonstrasikan
kegunaan peringkat tree automata untuk analisis statis program datalog .
2 Trees
Setiap dokumen XML dapat diwakili oleh sebuah tree. Sebagai contoh, Gambar 1 Pada
tampilan ini, node bagian dalam sesuai dengan unsur-unsur yang menentukan struktur
Perhatikan bahwa tidak ada apriori terikat pada jumlah anak dari sebuah node dalam tree; karena tree tersebut tidak berperingkat. Dilambangkan dengan N * , himpunan
string atas alfabet yang terdiri dari bilangan asli. Untuk setiap tree t , himpunan
dari node pada t, dinotasikan dengan Dom (t), adalah subset dari N* didefinisikan
sebagai berikut;
Jika t = ( t1...tn ) dengan , n 0, dan t1,...,tn ,
maka dom(t) = {} U {ui | i {1,...,n}, u Dom(ti) } .
jadi, merupakan akar saat ui mewakili child ke i dari u . untuk Misalnya, domain tree
pada Gambar 1 dibawah ini secara grafis direpresentasikan sebagai berikut:
Oleh labt (u) kami menunjukkan label u di t. dalam berikut, ketika kita mengatakan tree
selalu berarti - tree.
Example 3.1. pertimbangkan bahwa automata M menerima semua string {a,b} yang
diawali dan diakhiri dengan simbol yang sama. Himpunan Q := {qa, qb}, Ia := {qa}, Ib :=
{qb}, F := Q, (qa, a) := (qa, b) = {qa}, and (qb, a) := (qb, b) = {qb}. Otomat ini hanya
memiliki satu jalan di semua string: misalnya, pada string abaa, kita memiliki jalan
a b
qa qa
a
qa
a
qa
Biasanya, kita melihat NFAs sebagai pengolahan masukan string dari kiri ke kanan:
initial state ditugaskan untuk posisi pertama dan dari sana kita menetapkan state-state
yang baru
yang konsisten dengan fungsi transisi. String diterima jika kita dapat menetapkan final
state ke posisi terakhir. Catatan, bagaimanapun, bahwa kita juga dapat melihat M
sebagai automata kanan-ke-kiri dengan hanya membalikkan peran F dan I. Memang,
kami menetapkan "final" state untuk posisi terakhir dan menetapkan state-state baru
mulai dari posisi ke kiri yang konsisten dengan fungsi transisi. String diterima jika kita
dapat menetapkan initial state dari himpunan yang benar untuk posisi pertama.
Meskipun pengolahan string dari kanan ke kiri mungkin tampak sedikit aneh, untuk
pengolahan tree dengan cara bottom-up sama masuk akal karena pengolahan dengan
cara top-down.
Sebuah jalan akan menerima jika () F. Sebuah tree akan diterima jika ada jalan
yang menerima.
tree automata dapat dipandang sebagai pengolahan dalam bottom-up atau dengan
cara top-down tergantung pada peran F dan I. Memang, dalam pandangan bottom-up,
state awal dari I yang ditugasi untuk leaf label dan state-state baru yang ditugasi
untuk node dalam tergantung pada label mereka dan state-state di anak-anak mereka.
tree diterima jika final state ditugaskan ke root. Pada tampilan top-down, final state dari
F ditugaskan ke root; state-state baru yang ditugaskan kepada anak-anak dari sebuah
node u tergantung pada label u dan state u. Sebuah tree diterima jika setiap leaf
berlabel diberikan state dari I.
Secara intuitif, A bekerja sebagai berikut: A wakilnya 0 (1) ke-0 berlabel (1-label) leaf; lanjut, A
memberikan 1 ke berlabel simpul IFF baik anak-anak adalah 1; dan, A memberikan 0 ke
berlabel simpul IFF kedua anak-anaknya adalah 0 Akhirnya, A menerima ketika root dilabeli
dengan 1 Jadi, dalam contoh ini, tampilan bottom-up adalah yang paling intuitif. Dalam
Gambar 2, kita memberikan contoh jalan yang diterima pada tree.
Pada Contoh 3.4, kami memberikan automata yang mengevaluasi ekspresi XPath yang
pandangan top-down yang lebih alami.
Perhatikan bahwa ketika v tidak memiliki anak, maka kriteria mengurangi untuk (
(v), labt (v)). Jadi, kita tidak perlu definisi yang jelas dari I lagi. Sebuah jalan akan
menerima IFF root diberi label dengan final state, yaitu, () F. Sebuah tree akan
diterima jika dinotasikan dengan L (B).
Kami menggambarkan definisi di atas dengan dua contoh. Dalam contoh pertama kami
mewakili fungsi transisi dengan ekspresi reguler. Dalam contoh kedua kita
menggunakan formula logis.
Contoh 3.4.
(1) Kami meneruskan Contoh 3.2. Node dalam sekarang dapat memiliki jumlah
sewenang-wenang anak. Sekali lagi, kita mendefinisikan robot menerima persis sirkuit
mengevaluasi ke 1 Tentukan B = (Q, , , F) dengan
Q = {0, 1}, F = {1}, dan
(0, 0)
(0, 1)
(0, )
(1, )
(0, )
(1, )
:=
:=
:=
:=
:=
:=
(1, 1) := {};
(1, 0) := ;
(0 + 1) 0(0 + 1) ;
1 ;
0 ;
(0 + 1) 1(0 + 1) .
Secara intuitif, B bekerja sebagai berikut: B memberikan 0 (1) ke label 0 (1-label) leaf;
B menugaskan 1 ke node label IFF semua anak adalah 1; B memberikan 0 ke
simpul berlabel IFF semua anak adalah 0. Akhirnya, B diterima ketika root dilabeli
dengan 1 Pada Gambar 3, kita memberikan contoh pohon dan jalan yang diterima.
Dengan menggunakan pengkodean encoding dan Decoding dari Gambar 6 kita memperoleh satu
proposisi berikut.
Proposition 3.5. [34]
For every unranked NTA B there is a tree au-tomaton A over binary trees such that
L(A) = {enc(t) | t L(B)}.
For every tree automaton A over binary trees there is an unranked NTA B such that
L(B) = {dec(t) | t L(A)}.
Meskipun Proposisi 3.5 memberikan alat untuk transponder hasil ferring dari tree
berperingkat ke tree tidak berperingkat, tidak menangani masalah yang spesifik untuk
tree tidak berperingkat. Kompleksitas masalah keputusan untuk NTAs, misalnya,
tergantung pada formalisme / b dan //, masing-masing; atau, (3) ada satu anak yang
digunakan untuk mewakili reguler bahasa node (q, a) dalam fungsi transisi. Karena
ada banyak cara untuk mewakili bahasa string biasa (formula logis, automata dengan
berbagai bentuk kontrol, tata bahasa, kalimat biasa,...), Proposisi 3.5 tidak menawarkan
penyelesaian yang baik. Biarkan NTA (M) sebagai himpunan dari NTAs dimana bahasa
biasa (q, a) diwakili oleh unsur-unsur di kelas M (misalnya, kelas NFAs). Sebuah
pemeriksaan lebih dekat dari encoding dan Decoding mengungkapkan bahwa
terjemahan antara biner dan tree tak berperingkat automata adalah polinomial untuk
NTA (NFA) 's. Untuk alasan ini, kelas terakhir dapat dilihat sebagai default untuk tree
tak berperingkat automata. Juga kompleksitas masalah keanggotaan untuk kelas ini
adalah mudah dikelola
Proposisi 3.6. Biarkan t T dan B NTA (NFA). Menguji apakah t L (B) dapat dilakukan
dalam waktu O (| t || B |).
Namun, bila menggunakan pohon automata untuk mendapatkan up per batas pada
kompleksitas masalah yang berkaitan dengan XML, satu kadang-kadang perlu untuk beralih ke
yang lebih formalisme sive expression. Dalam [15], atas terikat pada kompleksitas dari
masalah typechecking untuk cursion ulang struktural diperoleh dengan pengurangan
terhadap masalah kekosongan NTA (2AFA) 's. Di sini, 2AFA dua arah bolak-balik tali automata.
3.5 Skema
Seperti diperpanjang tata bahasa bebas konteks membentuk abstraksi dari DTD, tree tak
berperingkat merupakan abstraksi dari berbagai usulan skema XML.
Definisi 3.7. Sebuah DTD adalah tuple (d, sd) dimana d adalah fungsi yang memetakan simbol
untuk kalimat biasa atas dan sd adalah simbol awal.
Contoh 3.8. Sebagai contoh perhatikan tindak ing DTD (diambil dari [35]) menggambarkan
katalog produk
d (Katalog): = produk *
d (produk): = nama? (mfr-harga + jual-harga)
warna *
Di sini, w? menunjukkan w +.
Setara pohon otomata tak berperingkat didefinisikan berikutnya: B = (Q, , , F) dengan Q: =
{katalog, produk, nama, mfr-harga, penjualan harga, warna}, F: = {} katalog, untuk semua
{nama, mfr-harga, penjualan harga, warna}, (a, a) = {}, dan
(katalog, katalog): = produk *
(produk, produk): = nama? (mfr-harga + jual-harga) warna *
(q, a) yang tidak disebutkan kosong.
Hal ini tidak begitu sulit untuk melihat bahwa untuk setiap DTD ada pohon otomata tak
berperingkat setara. Selain itu, pohon automata tak berperingkat setara dengan DTD khusus
Papakonstantinou dan Vianu [31] dan jenis XDuce dari Hosoya dan Pierce [10]. Lee, Mani, dan
Murata memberikan memberikan perbandingan bahasa XML skema teori bahasa onformal
[13] berbasis.