オートマトンと言語

Similar documents
PowerPoint プレゼンテーション

オートマトンと言語

オートマトンと言語

オートマトン 形式言語及び演習 1. 有限オートマトンとは 酒井正彦 形式言語 言語とは : 文字列の集合例 : 偶数個の 1 の後に 0 を持つ列からなる集合 {0, 110, 11110,

オートマトン 形式言語及び演習 3. 正規表現 酒井正彦 正規表現とは 正規表現 ( 正則表現, Regular Expression) オートマトン : 言語を定義する機械正規表現 : 言語

Microsoft PowerPoint - 3.ppt [互換モード]

離散数学

Microsoft PowerPoint - アルデIII 02回目10月15日

Microsoft PowerPoint L03-Syntex and Semantics-1-students ( )

オートマトン 形式言語及び演習 4. 正規言語の性質 酒井正彦 正規言語の性質 反復補題正規言語が満たす性質 ある与えられた言語が正規言語でないことを証明するために その言語が正規言語であると

4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ

Microsoft PowerPoint - アルデIII 02回目10月14日

Microsoft PowerPoint - 09re.ppt [互換モード]

オートマトンと言語

情報数理学

Microsoft PowerPoint - 1.ppt [互換モード]

Microsoft PowerPoint - 5.ppt [互換モード]

Microsoft PowerPoint ppt

C8

Information Theory

2015年度 2次数学セレクション(整数と数列)

2015-2018年度 2次数学セレクション(整数と数列)解答解説

Microsoft PowerPoint - mp11-02.pptx

構造化プログラミングと データ抽象

CプログラミングI

Microsoft PowerPoint ppt

Microsoft PowerPoint - 03BNFScanner.ppt [互換モード]

文法と言語 ー文脈自由文法とLR構文解析2ー

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

Microsoft PowerPoint - 11Syntax.ppt

Microsoft PowerPoint - Prog05.ppt

Microsoft PowerPoint - lec4.ppt

構造化プログラミングと データ抽象

日本内科学会雑誌第102巻第4号

Microsoft PowerPoint - 3.pptx

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

2-1 / 語問題 項書換え系 4.0. 準備 (3.1. 項 代入 等価性 ) 定義 3.1.1: - シグネチャ (signature): 関数記号の集合 (Σ と書く ) - それぞれの関数記号は アリティ (arity) と呼ばれる自然数が定められている - Σ (n) : アリ

Microsoft PowerPoint - C4(反復for).ppt

kantan_C_1_iro3.indd

融合規則 ( もっとも簡単な形, 選言的三段論法 ) ll mm ll mm これについては (ll mm) mmが推論の前提部になり mmであるから mmは常に偽となることがわかり ll mmはllと等しくなることがわかる 機械的には 分配則より (ll mm) mm (ll mm) 0 ll m

Microsoft PowerPoint - 10.pptx

nlp1-04a.key

An Automated Proof of Equivalence on Quantum Cryptographic Protocols

PowerPoint Presentation

プログラミング基礎

Microsoft Word - VBA基礎(3).docx

Microsoft PowerPoint - 2.ppt [互換モード]

Java講座

Microsoft PowerPoint - アルデIII 10回目12月09日

Microsoft PowerPoint - 03BNFScanner-print.ppt

Microsoft PowerPoint - 02LanguageTheory.ppt [互換モード]

Microsoft PowerPoint - 9.pptx

Microsoft PowerPoint - 9.pptx

PowerPoint プレゼンテーション

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

æœ•å¤§å–¬ç´—æŁ°,æœ•å°‘å–¬å•“æŁ°,ã…¦ã…¼ã‡¯ã…ªã……ã…›ã†®äº™éŽ¤æ³Ł

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

ポインタ変数

Microsoft PowerPoint - Compiler03.pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint - ca ppt [互換モード]

アルゴリズムとデータ構造

Microsoft PowerPoint - 10.pptx

Microsoft PowerPoint - ProD0107.ppt

JavaプログラミングⅠ

Microsoft Word ã‡»ã…«ã‡ªã…¼ã…‹ã…žã…‹ã…³ã†¨åłºæœ›å•¤(佒芤喋çfl�)

Functional Programming

プログラミング基礎

Programming D 1/15

Microsoft PowerPoint - while.ppt

Microsoft Word - CompA-Ex doc


プログラミング実習I

Microsoft PowerPoint - enshu4.ppt [äº™æ‘łã…¢ã…¼ã…›]

Microsoft PowerPoint - 13approx.pptx

PowerPoint Presentation

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

【FdData中間期末過去問題】中学数学2年(連立方程式計算/加減法/代入法/係数決定)

Microsoft Word - Javacc.docx

スライド 1

2011年度 大阪大・理系数学

1

Microsoft PowerPoint - Compiler05note.pptx

アセンブラとコンパイラ・インタプリタ

日本内科学会雑誌第97巻第7号

日本内科学会雑誌第98巻第4号

Z...QXD (Page 1)

<4D F736F F F696E74202D B835E8AEE91622D566F6C322D B A C682CD2E >

2018年度 筑波大・理系数学

学習指導要領

経済数学演習問題 2018 年 5 月 29 日 I a, b, c R n に対して a + b + c 2 = a 2 + b 2 + c 2 + 2( a, b) + 2( b, c) + 2( a, c) が成立することを示しましょう.( 線型代数学 教科書 13 ページ 演習 1.17)

2015-2018年度 2次数学セレクション(整数と数列)解答解説

Microsoft PowerPoint - Compiler03note.pptx

PowerPoint Presentation

Microsoft PowerPoint - C1(演算と変数).ppt

かんたん! RPN 電卓を使おう 0. はじめに 11 7tuv RPN 電卓とは普通の電卓とは違い ちょっと特殊な操作を必要とする電卓です その特殊性のせいか 現代の日常生活ではほとんど見かけることはありません しかし一旦その直感的な操作に慣れてしまうと 二度と普通の電卓が使えない カラダ になっ

kiso2-03.key

情報量と符号化

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

ポインタ変数

Transcription:

オートマトンと言語 回目 4 月 8 日 ( 水 ) 章 ( 数式の記法, スタック,BNF 記法 ) 授業資料 http://ir.cs.yamanashi.ac.jp/~ysuzuki/public/automaton/

授業の予定 ( 中間試験まで ) 回数月日 内容 4 月 日オートマトンとは, オリエンテーション 4 月 8 日 章 ( 数式の記法, スタック,BNF) 3 4 月 5 日 章 (BNF),3 章 ( グラフ ) 4 5 月 0 日 3 章 ( グラフ ) 5 5 月 09 日 4 章有限オートマトン 6 5 月 6 日有限オートマトン 3 章の小テスト 7 5 月 3 日正規表現 8 5 月 30 日正規表現, 非決定性有限オートマトン 9 6 月 06 日中間試験, 前半のまとめ出張などにより, 授業日が変更になる場合があります.

授業の予定 回数月日 内容 0 6 月 3 日 NFA DFA 6 月 0 日 DFA の最小化 6 月 7 日 DFAの最小化, 有限オートマトン の応用 3 7 月 04 日 プッシュダウンオートマトン, チューリング機械 4 7 月 日 形式言語理論, 文脈自由文法 5 7 月 8 日 期末試験, まとめ 出張などにより, 授業日が変更になる場合があります.

前回の復習 この授業の目標 複雑 ( そう ) なシステムの中身を考える 手品を後ろから見る コンピュータの中身を見る 人間の頭の中を見る

今日のメニュー 数学的帰納法, 再帰 p.8~ 数式の記法 後置記法とスタック BNF 記法

数学的帰納法の例 任意の自然数 n について命題 P n を考える a) 基本段階 :P は真である b) 帰納段階 : P k が真と仮定すれば ( 帰納法の仮定 ) P k+ も真である c) 結論 :a),b) が成立すれば, 任意の自然数 n に対して P n は真である

例題.5 P Pは, nに対し[] 内の等式が成立することを意味する命題である. P ( 基本段階 ) よって, P ( 帰納段階 ) n n n n def = [ = T n i= 左辺 = i 右辺 = ( k よって, P n( n + )] とする. ( true) ならば等式が成立し, P k + i= = = T i k + = n = のとき, Piにおいて左辺 = n = k + のとき, P k i= + ){( k = T = kのとき, P k + において i + ( k + ) ( 結論 ) 以上により, 任意の自然数 nに対してp = n + ) + } = n i= = [ i k = i= i n = n( n + ) を数学的帰納法で示せ k( k + ) + ( k + ) = ( k + )( k + ), = F ( false) ならば等式は成立しない. i= i =, 右辺 = k( k + )] = Tとする ( 帰納法の仮定 ). n ( k + )( k + ), = Tである. ( + ) =,

演習問題 例題.7 任意のn Nに対し, n 3 + 5nは6で割り切れることを, nに関する帰納法で証明せよ

演習問題 の解答例題.7 n = の時 n = kの時 n = k + の時 ( k 3 k( k n n + 5k) は仮定より6 で割り切れる + ) はで割り切れるので( k( k したがって3( k( k 3 3 項とも6で割り切れるので( k したがってn + 5n + 5n = k n 3 3 = 6であるから6で割り切れる + 5n + 5n = ( k 以上により, 任意のn Nに対し, n 3 + 5kが6で割り切れるとする + ) + ) は6で割り切れる = ( k + ) + ) 3 3 + 5( k 3 + 5( k + ) = ( k + ) + ) もで割り切れる + 5k) + 3( k( k + 5k) + 3( k( k + ) は6で割り切れる 3 3 + ) + ) は6で割り切れる + 5nは6で割り切れる + ) + )

例題.7 を状態遷移で表す

再帰的構造 ある構造の一部分が全体と同じような構造をしているもの 例 再帰的アルゴリズム フラクタル

再帰的記述非負の整数を表す0 進記法の数値 < 数値 >::= 0 < 正整数 > < 正整数 >::= < 非零数字 >< 数字繰り返し > < 非零数字 >::= 3 4 5 6 7 8 9 < 数字繰返し >::= ε < 数字 >< 数字繰返し > < 数字 >::= 0 < 非零数字 > 数字 数字の繰り返し

宿題 例題.6 の解を参考にして, ユークリッドの互除法 ( 最大公約数 ) のプログラムを作成せよ 使用するプログラム言語は問わない GCD( x, y) : a : b : c : r x = yのときgcd : = x; x > yのときcall GCD( y, y < yのとき : = y(mod x); r = 0のときGCD : = x; r 0のときcall GCD( r, x) x);

形式言語 基となる記号の幾つかから, 定められた規則に従って作られる記号全体の集合 プログラミング言語も素記号と構文規則によって定められた形式言語 用語 アルファベット : 有限個の文字記号の集合 語 : 有限な長さの文字記号列 言語 : アルファベットの閉包の部分集合

言語の演算 言語の和 言語の積 言語の閉包 L に属する任意個の記号列を任意回数, 任意の順序で並べて得られる記号列のすべてからなる無限集合 ( 集合としての和 ) } { L L L w L w w L L = = + ( 連接語の集合 ) } { L v L w wv L L = L L L L L L L L L L L i i = = = + + + + = 0 3 0 *, }, {, ε ただし,

数式の記法 前置記法 ( ポーランド記法 ) 演算子が先頭 *xy 中置記法 演算子が真ん中 x*y 後置記法 ( 逆ポーランド記法 ) 演算子が最後 xy*

数式の記法 () 前置記法 ( ポーランド記法 ) prefix notation (Polish Notation) 例 : *xy Lisp 言語 (car (A B C)) car : リストの第一要素を取り出す演算子 (car (A B C)) A 演算子 計算方法 : 左から 文字づつ読み込み, 演算子 つと変数 つがそろったら計算し, 計算した部分を計算結果に置き換える

数式の記法 () 中置記法 infix notation 例 : x*y 算数, 数学でよく使われる記法 式の意味を一意に確定するために括弧が必要な場合がある. (x+y)*z

数式の記法 (3) 後置記法 ( 逆ポーランド記法 ) postfix notation (Reverse Polish Notation) 例 : xy* Hewlett-Packard の電卓 括弧を書かなくても良い. 頭の中で計算する順序に近い 計算機の中の計算順序と同じ 日本語での計算の説明順序と同じ 例 : xy+ x と y とを足す 計算方法 : 左から 文字づつ読み込み, 演算子を読み込んだら直前の つの変数を使って計算し, 計算した部分を計算結果に置き換える

後置記法で計算する電卓 ソフトウェア名 :SK-RPN http://www.forest.impress.co.jp/article/006/07/ /okiniiri.html http://www.kaz.jpn.org/software.html 計算式 :3 5 + * (3+5)* 入力 :3 ENTER 5 + * 6

例題 xy+z* ( 後置記法 ) を中置記法に変換 xy+z* (xy+)z* 最初にxy+ を計算し, その結果とzをかけ合わせる (x+y)*z ( 中置記法 ) (x+y)*z ( 中置記法 ) を後置記法に変換 (x+y)*z xy+z* ( 後置記法 ) y/z ( 中置記法 ) を後置記法に変換 yz/ ( 変数間の順序も重要 )

演習問題 中置記法 (y+z)*w/v を逆ポーランド記法 ( 後置記法 ) に変換せよ. 中置記法 (y+z*w)/v を逆ポーランド記法 ( 後置記法 ) に変換せよ.

演習問題 の解答 中置記法 (y+z)*w/v 逆ポーランド記法 yz+w*v/ 中置記法 (y+z*w)/v 逆ポーランド記法 yzw*+v/

yz+w*/ の計算方法 ( 後置記法 ) スタック (Last In First Out) を利用する スタック y z y + z y yz+ w yz+ yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ 計算可能 * w yz+ yz+w* yz+w* / y-z+w* yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ 計算可能 計算可能

演習問題 3 yzw*+/ の計算方法 ( スタックの変化 ) を書け 参考 : yz+w*/ の計算方法 ( 前ページ ) y z + yz+ y z スタック y w yz+ yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ 計算可能 * w yz+ yz+w* yz+w* / y-z+w* yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ yz+w*/ 計算可能 計算可能

演習問題 3 の解答 yzw*+/ の計算方法を書け スタック yzw*+/ y z y w z y * w z y zw* y yzw*+/ yzw*+/ yzw*+/ yzw*+/ yzw*+/ 計算可能 + zw* y yzw*+ yzw*+ / yzw*+ yzw*+/ yzw*+/ yzw*+/ yzw*+/ yzw*+/ yzw*+/ 計算可能 計算可能

3 + 4 * / の計算方法 スタック 3 + 3 計算可能 5 ここまで 3 + 4 * / 3 + 4 * / 3 + 4 * / 3 + 4 * / 3 + 4 * / 3 + 4 * / 4 5 * 4 5 0 / 0 0.05 計算結果 3 + 4 * / 3 + 4 * / 3 + 4 * / 3 + 4 * / 3 + 4 * / 計算可能 計算可能

BNF 記法 (Backus Naur Form) プログラミング言語の構文記述用記法 BNF 記法で用いられる記号 ( メタ記号 ) < > という概念を表す. ::= 左の記号が右辺で定義される, is defined as もう一つの定義, または

BNF 記法の例 < 英数字 >::=< 英字 > < 数字 > 英数字とは英字または数字のことである. < 英字 >::=a b... y z 英字とは a,b,...,y,z のどれかである

例題.66 (44 ページ ) 非負の整数を表す 0 進記法の数値のみからなる言語を BNF 記法で定義せよ 解 < 数値 >::=0 < 正整数 > < 正整数 >::=< 非零数字 >< 数字繰返し > < 非零数字 >::= 3 4 5 6 7 8 9 < 数字繰返し >::=ε < 数字 >< 数字繰返し > < 数字 >::=0 < 非零数字 >

例題.68 (45 ページ ) 和 + と積 からなる中置記法の数式を BNF 記法で定義せよ. 変数はすべて y とし, 括弧 (,) を用いる. 定数は用いない. 解答 < 数式 >::=< 変数 > < 数式 >+< 数式 > < 数式 > < 数式 > (< 数式 >) < 変数 >::=y 例 :(y+y) y, (y (y+y))

構文図式表現と BNF 表現 (p.46) 書き換え 構文図式 α BNF <A>::=α 分岐 a b c y z <A>::=a b c... y z 連鎖 繰返し α B β γ B B <A>::=α<B>βγ <A>::=<B> <B><A> : BNF <A>::=<B>{<B>} : 拡張 BNF <A>::=ε <B><A> : BNF <A>::={<B>} : 拡張 BNF オプション α <A>::=ε α <A>::=[α] : BNF : 拡張 BNF

拡張 BNF 表現 繰り返し表現 <A>::=a a<a> aの 回以上の繰り返し 拡張記法 <A>::=a{a} <A>::=ε a<a> a の 0 回以上の繰り返し 拡張記法 <A>::={a} オプション <B>::=ε b b はなくてもよいし, あってもよい 拡張記法 <B>::=[b]

拡張 BNF 記法の例 Pascal( プログラム言語 ) の記法 PASCAL 情報処理シリーズ 出版社 : 培風館 著者 :K. イェンゼン N. ヴィルト ( 原田賢一訳 ) 付録 D 構文 (pp.-3)

演習問題 4 例題.73 改 つぎの BNF 記法による言語の表現を, できるだけ簡単な構文図式で表せ.. <A>::= a ab abb ba. <A>::= a a<a> 3. <A>::= ε a b<a> 4. <A>::= a<a> ba 5. <A>::= ε a<a>a b<a>b

演習問題 4の解答例題.73- <A>::=a ab abb ba <A>::=[b]a ab[b] A a b b a b

演習問題 4の解答例題.73- <A>::=a a<a> <A>::=a{a} A a A A a または A a a

演習問題 4の解答例題.73-3 <A>::=ε a b<a> <A>::={b}[a] A A b a a b A

演習問題 4の解答例題.73-4 <A>::=a<A> ba <A>::={a}ba A a b A a b a A a

演習問題 4の解答例題.73-5 <A>::=ε a<a>a b<a>b A a b A A a b

章のまとめ 自動販売機の動作モデル 状態を記憶することが重要 数学的帰納法 前置, 中置, 後置記法間の変換 中置記法 後置記法 後置記法とスタック 後置記法の計算はスタックを利用する BNF 記法と構文図式 簡単な構文は複数の状態と遷移で記述可能 先週 今週

今日の宿題 数学的帰納法 例題.5 を自分で解く ユークリッドの互除法のプログラムを作成する 数式記法 練習問題 後置記法とスタック 3 + 4 * / の ( スタックを使った ) 計算方法を理解する