理論計算機科学と形式言語理論において、正規木文法は、有向木または項の集合を記述する形式文法である。[1]正規単語文法は、単一パス木の集合を記述する、特別な種類の正規木文法と見なすことができます。
意味
正規木文法Gはタプルによって定義される
G = ( N , Σ, Z , P )、
どこ
- Nは非終端記号の有限集合であり、
- Σ はNと素な順位付きアルファベット(つまり、その記号が関連するアリティを持つアルファベット)であり、
- Z は開始非終端記号であり、Z ∈ Nであり、
- P はA → tの形式の生成規則の有限集合であり、 A ∈ N かつ t ∈ T Σ ( N ) です。ここで、 T Σ ( N )は関連する項代数、つまりΣ ∪ N内の記号からその引数の数に応じて構成されるすべての木の集合であり、非終端記号はヌル引数とみなされます。
ツリーの派生
文法G は暗黙的に木の集合を定義します。つまり、規則集合P を使用してZから導出できる木はすべてGによって記述されると言えます。この木の集合はGの言語として知られています。より正式には、集合T Σ ( N ) 上の関係 ⇒ Gは次のように定義されます。
木t 1 ∈ T Σ ( N )は、コンテキストSと生成規則( A → t ) ∈ Pが存在し、次の条件を満たす場合、1ステップで木t 2 ∈ T Σ ( N ) (つまり 、t 1 ⇒ G t 2 )に導出できます。
- t 1 = S [ A ]であり、
- t 2 = S [ t ] です。
ここで、コンテキストとは、ちょうど 1 つの穴があるツリーを意味します。Sがそのようなコンテキストである場合、S [ t ] はツリーt をSの穴に埋め込んだ結果を表します。
Gによって生成される木言語は言語L ( G )={ t∈TΣ | Z⇒G * t }である 。
ここで、T ΣはΣの記号から構成されるすべての木の集合を表し、⇒G *は⇒Gの連続的な適用を表します。
何らかの正規木文法によって生成された言語は正規木言語と呼ばれます。
例

G 1 = ( N 1 ,Σ 1 , Z 1 , P 1 ) とします。ここで
- N 1 = { Bool , BList } は非終端記号の集合であり、
- Σ 1 = { true , false , nil , cons (.,.) } は順位付けされたアルファベットで、引数はダミー引数で示されます(つまり、シンボルcons の引数は 2 です)。
- Z 1 = BListは最初の非終端記号であり、
- 集合P1は次の生成規則から構成される。
- ブール値→ false
- ブール値→真
- BList →なし
- BList →短所( Bool , BList )
文法G 1からの導出の例は次の通りである。
BList ⇒ cons ( Bool、BList ) ⇒ cons ( false、cons ( Bool、BList )) ⇒ cons ( false、cons ( true、nil ))。
画像は対応する導出ツリーを示しています。これはツリーのツリー (メイン画像) ですが、単語文法の導出ツリーは文字列のツリー (左上の表) です。
G 1によって生成されるツリー言語は、ブール値のすべての有限リストの集合です。つまり、L ( G 1 ) はT Σ1に等しくなります。文法G 1は、代数データ型宣言 (標準 MLプログラミング言語)に対応します。
データ型 Bool
= false
| true
データ型 BList
= nil
| Bool * BListのcons
L ( G1 )の各メンバーは、 BList型のStandard-ML値に対応します。
別の例として、非終端記号集合と上記のアルファベットを使用し、生成規則集合をP 2で拡張して、 G 2 = ( N 1 , Σ 1 , BList 1 , P 1 ∪ P 2 )とします。これは、次の生成規則で構成されます。
- BList 1 →短所( true , BList )
- BList 1 →短所( false、BList 1 )
言語L ( G 2 ) は、少なくとも 1 回はtrue を含むブール値の有限リストすべての集合です。集合L ( G 2 ) には、標準 ML にも他の関数型言語にも対応するデータ型はありません。これはL ( G 1 )の適切な部分集合です。次の導出が示すように、 上記の例の用語はL ( G 2 )にも存在します。
BList 1 ⇒ cons ( false , BList 1 ) ⇒ cons ( false , cons ( true , BList )) ⇒ cons ( false , cons ( true , nil ))。
言語プロパティ
L 1、L 2 が両方とも正規木言語である場合、木集合L 1 ∩ L 2、L 1 ∪ L 2、およびL 1 \ L 2も正規木言語であり、 L 1 ⊆ L 2であるかどうか、およびL 1 = L 2であるかどうかは決定可能です。
代替的な特徴づけと他の形式言語との関係
- 正規木文法は正規単語文法の一般化です。
- 正規木言語は、ボトムアップ木オートマトンと非決定性トップダウン木オートマトンによって認識される言語でもある。[2]
- Rajeev AlurとParthasarathy Madhusudanは、正規二分木言語のサブクラスをネストされた単語と視覚的にプッシュダウンする言語に関連付けました。[3] [4]
アプリケーション
正規木文法の応用例には以下のものがあります。
- コンパイラコード生成における命令選択[5]
- 等式(=)と集合の帰属関係(∈)のみを述語とする一階論理理論の決定手順[ 6]
- 数学的集合に関する制約の解決[7]
- 有限代数(常に正規木言語)に関する一階述語論理で表現可能なすべての真理の集合[8]
- グラフ検索[9]
参照
参考文献
- ^ 「スコープの不十分な指定のための形式としての正規木文法」CiteSeerX 10.1.1.164.5484。
- ^ コモン、ヒューバート;マックス・ドーシェ。ギルロン、レミ。レーディング、クリストフ。ジャックマール、フィレンツェ;ルギエズ、デニス。ティソン、ソフィー。マーク・トンマシ(2007年10月12日)。 「ツリー オートマトンの技術と応用」。2016 年1 月 25 日に取得。
- ^ Alur, R.; Madhusudan, P. (2004). 「目に見えるプッシュダウン言語」(PDF)。第 36 回 ACM コンピューティング理論シンポジウムの議事録 - STOC '04。pp. 202–211。doi :10.1145 / 1007352.1007390。ISBN 978-1581138528. S2CID 7473479。第4節、定理5、
- ^ Alur, R.; Madhusudan, P. (2009). 「単語へのネスト構造の追加」(PDF) . Journal of the ACM . 56 (3): 1–43. CiteSeerX 10.1.1.145.9971 . doi :10.1145/1516512.1516518. S2CID 768006. セクション7
- ^ Emmelmann, Helmut (1991)。「定期的に制御された項書き換えによるコード選択」。コード生成 - 概念、ツール、テクニック。コンピューティングワークショップ。Springer。pp. 3–29。
- ^ Comon, Hubert (1990). 「順序ソート代数における等式」. Proc. ICALP .
- ^ Gilleron, R.; Tison, S.; Tommasi, M. (1993). 「ツリーオートマトンを使用したセット制約システムの解決」。第 10 回コンピュータサイエンスの理論的側面に関する年次シンポジウム。LNCS。第 665 巻。Springer。pp. 505–514。
- ^ ブルクハルト、ヨッヘン (2002)。 「有限代数の公理化」。人工知能の進歩。 LNAI。 Vol. 2479.スプリンガー。 222–234ページ。arXiv : 1403.7347。Bibcode :2014arXiv1403.7347B。ISBN 3-540-44185-9。
- ^ Ziv-Ukelson, Smoly (2016).正規木文法ネットワーク探索アルゴリズムとヒトウイルス感染パターンのマイニングへの応用. J. of Comp. Bio.[1]
さらに読む
- 正規木文法は 1968 年にすでに次のように記述されていました。
- ツリー文法に特化した書籍としては、Nivat, Maurice、Podelski, Andreas (1992)、「Tree Automata and Languages . Studies in Computer Science and Artificial Intelligence. Vol. 10. North-Holland」があります。
- 正規木文法のアルゴリズムは、効率重視の観点から、次の文献で説明されています: Aiken, A.; Murphy, B. (1991). 「Implementing Regular Tree Expressions」. ACM Conference on Functional Programming Languages and Computer Architecture . pp. 427–447. CiteSeerX 10.1.1.39.3766 .
- ツリーから重みへのマッピングが与えられれば、ドナルド・クヌースによるダイクストラの最短経路アルゴリズムの一般化を正規ツリー文法に適用して、各非終端記号について導出可能なツリーの最小重みを計算できます。この情報に基づいて、重みの昇順で言語を列挙するのは簡単です。特に、最小重みが無限の非終端記号は、空の言語を生成します。参照: Knuth, DE (1977). "A Generalization of Dijkstra's Algorithm". Information Processing Letters . 6 (1): 1–5. doi :10.1016/0020-0190(77)90002-3.
- 通常のツリー オートマトンが一般化され、ツリー内の兄弟ノード間の等価性テストが可能になりました。参照: Bogaert, B.、Tison, Sophie (1992)。「ツリー オートマトンにおける直接部分項の等価性および不等性制約」。Proc . 9th STACS . LNCS. Vol. 577. Springer. pp. 161–172。
- より深いノード間の等価性テストを許可すると、決定不能が生じます。参照: Tommasi, M. (1991)。Cousins Germains での Arbres avec Tests d'Égalités を自動化します。ライフイット。
