Vous êtes sur la page 1sur 11

Automata theory for XML researchers_

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

dokumen, sedangkan leaf node dan atribut menyediakan konten. Kadang-kadang,


Sebagai contoh dalam kasus typechecking, kita hanya terfokus dalam struktur
dokumen, tidak pada nilai yang sebenarnya dari atribut atau leaf node.
Dalam kasus tersebut, kita sudah dapat mewakili dokumen XML sebagai tree yang
sudah lebih dari alfabet berhingga. Sekali lagi, ini adalah batasan alfabet yang hanya
dikenal ketika beberapa informasi skema tersedia (seperti DTD ). Untuk saat ini, kita
memperbaiki alfabet berhingga dan kembali ke batasan alfabet berhingga dalam
Bagian 5.
Kami selanjutnya memberikan definisi untuk abstraksi dokumen XML -trees.
Himpunan -trees dinotasikan dengan T, induktif didefinisikan sebagai berikut:

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.

3.1 Automata on string


Sebelum kita mendefinisikan tree automata, mari kita mengingat kembali nondeterministic finite automata pada string (NFAs). Pada definisi kita memiliki initial states
untuk setiap symbol . pada kasus ini, kita dapat mendefinisikan sebuah jalan
automata yang berawal pada symbol pertama dan berakhir pada symbol terakhir. Pada
kasus tertentu, sebuah NFA adalah sebuah tuple
Pada kasus tertentu, sebuah NFA adalah sebuah tuple M = (Q, , , (I ),F )
dimana Qadalah himpuan dari state-state; untuk setiap , I Q adalah himpunan
dari initial
States. untuk ; F Q adalah himpunan dari final states; dan : Q 2Q adalah
fungsi transisi. A run : {1,... , n} Q pada sebuah string a1 an adalah
sebuah fungsi seperti;
(1) Ia1 ;
Untuk semua i {2,... , n}, (i) ((i 1), ai ).
Sebuah jalan akan diterima jika (n) F . sebuah string diterima jika ada sebiah jalan
yang juga diterima.

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.

3.2 Automata on binary trees


Untuk memudahkan eksposisi kita asumsikan bahwa semuanya adalah binary tree.
Artinya, semua node non-leafe memiliki tepat dua anak(child). Sebuah automata tree
maka tupel A = (Q, , , (I ),F ) dimana Q, F , dan semua I sama seperti
sebelumnya, dan : Q Q Q adalah fungsi pemetaan sepasang state dan
simbol untuk state baru. Sebuah jalan untuk t adalah pemetaan: Dom (t) Q
seperti :
1) untuk setiap simpul leaf u, (u) Ilabt (u);
2) untuk semua node dalam u,
(u) ( (U1), (u2), labt (u)).
Ingat ui yang ke-i anak u.

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.

Example 3.2. Perhatikan alfabet = {, , 0, 1}. Misalkan untuk kemudahan eksposisi


tree sebagai berikut: 0 dan 1 hanya muncul di leafe, dan dapat muncul di mana-mana
kecuali pada leafe. Ini semua adalah sirkuit boolean berbentuk tree.
Kami selanjutnya mendefinisikan automata menerima persis sirkuit mengevaluasi ke 1.
Define A = (Q, , , F ) with
Q = {0, 1}, I0 = {0}, I1 = {1},F = {1}, and
(0, 0, ) = 0 (0, 1, ) = 0;
(1, 0, ) = 0 (1, 1, ) = 1;
(0, 0, ) = 0 (0, 1, ) = 1;
(1, 0, ) = 1 (1, 1, ) = 1.

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.

3.3 Automata on unranked trees


Memperluas automata tree bagian sebelumnya pohon unranked menyiratkan bahwa kita
harus defi ne fungsi transisi untuk sejumlah anak:
Untuk mencapai yang terakhir, Bru
ggemann-Klein, Murata, and Wood [3], based on the work of
Pair and Quere [30] and Takahashi [36], menggunakan bahasa string biasa lebih dari Q untuk
mewakili transisi. Artinya, fungsi transisi adalah pemetaan: Q 2Q sehingga (q, a)
adalah String bahasa lebih dari Q.
Definisi 3.3. Sebuah tree automata nondeterministic (NTA) adalah tuple B = (Q, , , F), di mana Q
adalah himpunan terbatas dari state, F Q adalah himpunan final state, dan adalah fungsi Q
2Q * sehingga (q, a) adalah bahasa string biasa atas Q * untuk setiap a dan q Q. jalan
dari B pada tree t adalah label: Dom (t) Q sehingga untuk setiap v Dom (t) dengan anakanak n, (v1) (vn) ( (v), labt (v)).

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.

(2) Misalkan p adalah ekspresi XPath / a // b [/ b] // a. Kami membangun sebuah


automaton yang menerima tree yang cocok p. Himpunan state Q terdiri dari semua sub
pola dari p dan F = {/ a // b [/ b] // a}. Fungsi transisi didefinisikan dalam Gambar 4.
Kami menggunakan formula logis untuk menunjukkan bahasa biasa. Untuk semua state
q1, ..., qn Q rumus I \ NQI menunjukkan himpunan string yang berisi semua state qi
(dan mungkin beberapa yang lain). Jika 1 dan 2 adalah sebuah rumus,
maka 1 2 menunjukkan kesatuan himpunan string yang didefinisikan oleh 1 dan
2; benar menunjukkan himpunan semua string dari Q. Jelas, formula ini hanya dapat
menentukan bahasa biasa. Transisi yang tidak kosong.
Cara yang paling intuitif untuk menafsirkan automaton adalah untuk membaca aturan
dengan cara top-down. automaton dimulai pada root di state bagian / a // b [/ b] // a.
Sebuah jalan dimulai seperti hanya berlaku jika root diberi label dengan dan salah satu
dari anak-anak yang cocok // b [/ b] // a. Selanjutnya, node yang berlabel b hanya bisa
di state // b [/ b] // jika
(1) memiliki seorang anak yang cocok // b [/ b] // a;
(2) ada dua anak yang cocok /b and //a, atau
(3) hanya ada satu anak yang cocok / b // a.
Sebuah node berlabel-a hanya bisa di state // b [/ b] // jika salah satu dari anak-anaknya sesuai
dengan Pola // b [/ b] // a. Aturan yang tersisa cukup jelas. Kami memberikan contoh pada
Gambar 5.

3.4 Relationship with ranked automata


Pohon Berperingkat dapat dikodekan ke biner dalam beberapa cara. Pada Gambar 6 kita
menggambarkan satu kemungkinan. Secara intuitif, anak pertama dari node tetap anak pertama dari
node di encoding. Tapi secara eksplisit dikodekan sebagai anak kiri. Anak-anak lainnya adalah
keturunan hak anak pertama di encoding. Setiap kali ada anak kanan tetapi tidak ada anak kiri, a #
dimasukkan. Juga, ketika hanya ada seorang anak kiri, a # dimasukkan untuk anak kanan.

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.

Vous aimerez peut-être aussi