Problem by D. Mikurube Slides by Y. Izumi

Slides:



Advertisements
Similar presentations
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
Advertisements

和田俊和 資料保存場所 /2/26 文法と言語 ー正規表現とオートマトンー 和田俊和 資料保存場所
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
J: Magical Switches JAG 模擬地区予選 2013 原案:保坂 解答:保坂・楠本 解説:保坂.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
人工知能特論II 二宮 崇.
コンパイラ 2011年10月17日
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
言語体系とコンピュータ 第6回.
言語処理系(6) 金子敬一.
アルゴリズムイントロダクション第5章( ) 確率論的解析
実験 関数・記号付き文型パターンを用いた機械翻訳の試作と評価 石上真理子 水田理夫 徳久雅人 村上仁一 池原悟 (鳥取大) ◎評価方法1
文法と言語 ー文脈自由文法とLR構文解析2ー
C言語 配列 2016年 吉田研究室.
情報工学概論 (アルゴリズムとデータ構造)
文法と言語 ー文脈自由文法とLL構文解析ー
プログラミング言語論 第4回 式の構文、式の評価
データ構造と アルゴリズム 第二回 知能情報学部 新田直也.
Problem C: Princess' Japanese
条件式 (Conditional Expressions)
模擬国内予選2014 Problem C 壊れた暗号生成器
言語処理系(5) 金子敬一.
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
コンパイラ 2012年10月15日
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
コンパイラ 2012年10月22日
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
コンパイラ 2011年10月24日
東京工科大学 コンピュータサイエンス学部 亀田弘之
第7回 条件による繰り返し.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
コンパイラ 第14回 上昇型構文解析(2) 38号館4階N-411 内線5459
プログラミング言語論 第3回 BNF記法について(演習付き)
計算の理論 II NP完全 月曜5校時 大月美佳 平成17年1月17日 佐賀大学理工学部知能情報システム学科.
正則言語 2011/6/27.
形式言語の理論 5. 文脈依存言語.
アルゴリズムとプログラミング (Algorithms and Programming)
形式言語とオートマトン Formal Languages and Automata 第4日目
第7回 条件による繰り返し.
コンパイラ 第13回 上昇型構文解析(1) 38号館4階N-411 内線5459
言語と文法 言語とは,ルールに従う記号列の無限集合である. 文法を与えることで言語が定義できる.
文法と言語 ー文脈自由文法とLR構文解析2ー
「入力」はInputBoxやテキストボックスに限らず、 セルからのデータの入力や、チェックボックス等からの入力全てを含める。
アルゴリズムとプログラミング (Algorithms and Programming)
東京工科大学 コンピュータサイエンス学部 亀田弘之
言語プロセッサ ー第9回目ー 構文解析(続き).
文法と言語 ー文脈自由文法とLR構文解析3ー
計算の理論 I 文脈自由文法の標準形 月曜3校時 大月美佳.
プログラミング 4 探索と計算量.
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
文法と言語 ー文脈自由文法とLL構文解析ー
コンパイラ 2011年10月20日
文法と言語 ー文脈自由文法とLR構文解析ー
情報処理Ⅱ 2005年1月25日(火) レポート課題2の解説.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
情報処理Ⅱ 2005年10月28日(金).
東京工科大学 コンピュータサイエンス学部 亀田弘之
コンパイラ 2012年10月11日
言語プロセッサ ー第9回目ー 構文解析(続き).
言語プロセッサ ー第7回目ー 構文解析(続き).
PROGRAMMING IN HASKELL
文法と言語 ー文脈自由文法とLR構文解析2ー
4.2 再帰下降解析 (1)再帰下降解析とは ■再帰下降解析(Recursive Descent Parsing)
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

Problem by D. Mikurube Slides by Y. Izumi Reading Brackets Problem by D. Mikurube Slides by Y. Izumi

a list of A, a list of P and Q, B, a list of X, Y and Z and C Problem Outline 与えられた英文を S 式に変換せよ. 一応は機械翻訳の問題であるが,実質的には文法解析の問題. a list of A, a list of P and Q, B, a list of X, Y and Z and C (A (P Q) B (X Y Z) C)

Submission Summary 提出数 : 18 正答数 : 2 難しすぎた 240min  ((lambda x.xx)(lambda x.xx)) 267min  kitsune- 難しすぎた 難易度を気にせずに作ったら,こんな難しい問題になってしまったらしい. 曖昧性判定が曲者だった. 解釈が 1 通りであることが保証されていれば易しい.

How to Solve 想定解法 発展解法 CYK アルゴリズム,計算量は O(N3) "a list of" と "and" の対応を求める問題だとみなすと線形時間の解析も可能.

Simplification もとの文法は解析が少し面倒. 入力文を次のように前処理する. "a list of" は実質一単語として扱いたい. カンマは解析する上で不要. 入力文を次のように前処理する. 文字列中の "a list of" を "list" に置換する. カンマを全部削除する. 空白で分割して配列に格納する. e.g. list A B C and D e.g. list A list P and Q B list X Y and Z and C

Grammar Syntax S  "list" E S  "list" L L  E L L  E "and" E E  T T  "A" | "B" | ...

LL Parsing ICPC における構文解析はこれがほとんど. (通常は)再帰降下法を適用する. ただし今回は解釈が一意ではない可能性があるため,バックトラックを行わなければならない. 今回の問題では時間切れになる. 途中経過を上手に残せば間に合うかもしれないが. いわゆる形式言語理論(オートマトン,文脈自由文法)の科目の教科書などを参照して下さい.

LR Parsing 念のため触れておきます. あらかじめ LR table を作成して,それに基づいてプッシュダウン・オートマトンで解析する. 表の作成が面倒なので ICPC で活用される例は少ない. 今回はオートマトンが非決定的になる. 今回の問題では時間切れになる. いわゆる形式言語理論(ry

Chomsky Normal Form 非終端記号 終端記号 チョムスキー標準形 規則の左辺にあらわれる記号. 文中に現れる記号. 全ての規則の右辺が非終端記号 2 個あるいは終端記号 1 個のいずれか.

Grammar Syntax (CNF) S  W1 S S  W1 T S  W1 L L  S L L  T L L'  W2 S L'  W2 T T  "A" | "B" | ... W1  "list" W2  "and"

CYK Algorithm (1 of 2) 表を斜め方向(左上から右下)に埋める. 1 2 3 4 5 6 表を斜め方向(左上から右下)に埋める. 動的計画法 表中の S:1 は右辺の非終端記号が位置が 1 で分離されるという意味. e.g. S:1(左上) 規則は S  W1 L 本来はどの規則を適用したかも記録する. 0~1  W1 1~6  L W1 S:1 S:1 list T L:2 A W1 S:3 S:3 L:4 list T L:4 B W2 L':5 and T C

CYK Algorithm (2 of 2) (* w[0..n-1] = sentence *) for i = 0 to n-1 for each rule X -> w[i] t[i,i+1] = t[i,i+1] + {(X,i,w[i])} for k = 2 to n for i = 0 to n-k for j = 1 to k-1 for each rule X -> YZ if (Y,?,?) in t[i+0,i+j] and (Z,?,?) in t[i+j,i+k] then t[i,i+k] = t[i,i+k] + {(X,j,YZ)}

(参考)Advanced Algorithms Earley 法 一般の文脈自由文法に適用可能な解析法. CYK 法と比べると複雑だが O(N3) 時間で解析可能. Bottom-up Chart 法 Earley 法に近いがボトムアップに解析する. GLR 法 オートマトンが非決定的であっても効率のよい解析が行えるように LR 法を改良したもの. 決定的ならば線形時間,最悪時は O(N3) 時間.

From Another Viewpoint 問題を "a list of" と "and" の対応付けを求める問題だと考える. 対応付けが与えられれば,S 式は一意に構築できる(具体的手順は省略). e.g. list A list P and Q B list X Y and Z and C (A (P Q) B (X Y Z) C)

Linear-time Algorithm (1 of 2) 曖昧フラグを偽に初期化する. 最後の and の直前まで前から順番に走査. list が現れたら,現在位置をスタックに積む.このとき直前が and で,さらにもとのスタックが空でなければ,曖昧フラグをセットする(それ以外ではそのまま). and が現れたら,スタックからポップした位置と現在位置の対応関係を適当な方法で記録する.ポップした後,スタックの要素数が 2 以上ならば曖昧フラグを立てる.そうでないときは逆に曖昧フラグをクリアする. それ以外はとりあえず無視.

Linear-time Algorithm (2 of 2) 最後の and は次のように扱う. スタックに単一の要素しかなければ一意. 曖昧フラグはクリアする. 曖昧フラグが立っていて,スタックに複数の要素があるときは与えられた文が曖昧だと判断する. そうでないときは,最後の and は対応関係が未解決の list のうち最も左側にあるものに対応させる. 残りは単一要素のリストの開始とみなす. ただし,最も左側において list が連続しているときは曖昧だと判断する.

Examples (1 of 2) スタックの内容だけ表記,* は曖昧なことをあらわす. list A list P and Q B list X Y and Z and C []  [0]  [0,2]  [0]  [0,7]  [0]  [] list A list B C D E and F []  [0]  [0,2]  [2] 最後の and は特別扱いされることに注意 list list A A and A []  [0]  [0,1]  [1]* 先頭が list の連続なので曖昧になる list list A and A and A []  [0]  [0,1]  [0]  []

Examples (2 of 2) list A list B list C and D and E []  [0]  [0,2]  [0,2,4]  [0,2]*  [2]* D の直前の対応関係が曖昧 list A list list B and C and D list E F and G []  [0]  [0,2]  [0,2,3]  [0,2]*  [0]  [0,9]  [9] list A list B C and list D and E []  [0]  [0,2]  [0]  [0,6]*  [6]* and の直後に list があることが曖昧性を生んでいる list A and list B and list C []  [0]  []  [3]  [] C の直前の list は最後の and の後ろにあるため無視される

Validity 後日,別の場所に説明のためのページを用意したいと思います.