オートマトンと言語

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

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

オートマトンと言語

オートマトンと言語

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

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

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

オートマトンと言語

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

PowerPoint プレゼンテーション

CプログラミングI

第2回

PowerPoint プレゼンテーション

Microsoft Word - 中間試験 その1_解答例.doc

情報数理学

計算機アーキテクチャ

Microsoft PowerPoint - 2-LispProgramming-full

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

nlp1-04a.key

オートマトンと言語

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

オートマトンと言語

Microsoft Word - CompA-Ex doc

Microsoft PowerPoint ppt

計算機ソフトウエア

PowerPoint プレゼンテーション

DA02

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

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

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

Microsoft PowerPoint - 6.pptx

Microsoft PowerPoint ppt

プログラミング基礎

Microsoft PowerPoint - アルデIII 13回目01月12日 [互換モード]

PowerPoint Presentation

言語プロセッサ2005

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

Microsoft PowerPoint - 11.pptx

alg2015-6r3.ppt

Microsoft PowerPoint - 06.pptx

Microsoft PowerPoint - 11Syntax.ppt

コンピュータ工学Ⅰ

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

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

PowerPoint プレゼンテーション

前期募集 令和 2 年度山梨大学大学院医工農学総合教育部修士課程工学専攻 入学試験問題 No.1/2 コース等 メカトロニクス工学コース 試験科目 数学 問 1 図 1 は, 原点 O の直交座標系 x,y,z に関して, 線分 OA,OB,OC を 3 辺にもつ平行六面体を示す. ここで, 点 A

PowerPoint Presentation

ex04_2012.ppt

Microsoft Word - Javacc.docx

コンピュータ工学Ⅰ

スライド 1

スライド 1

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

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

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

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

4-1- 基 Java に関する知識 1 独立行政法人情報処理推進機構

C8

マウス操作だけで本格プログラミングを - 世界のナベアツをコンピュータで - プログラムというと普通は英語みたいな言葉で作ることになりますが 今回はマウスの操作だけで作ってみます Baltie, SGP System 操作説明ビデオなどは 高校 情

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

Microsoft PowerPoint - lec06 [互換モード]

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

模擬試験問題(第1章~第3章)

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

離散数学

データ構造

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

"GIFT" フォーマットのインポート

プログラム言語及び演習Ⅲ

オートマトンと言語

情報処理Ⅰ

第9回 配列(array)型の変数

各学科 課程 専攻別開設授業科目 ( 教職関係 ) 総合情報学科 ( 昼間コース ) 中学校教諭 1 種免許状 ( 数学 ) 高等学校教諭 1 種免許状 ( 数学 ) 代数学 線形代数学第一 2 線形代数学第二 2 離散数学 2 応用代数学 2 オペレーションズ リサーチ基礎 2 数論アルゴリズム

Microsoft PowerPoint ppt

Microsoft PowerPoint - Prog05.ppt

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

System.out.print 先段まで使用してきた上記 System/Math/String クラスは基本パッケージと呼ばれ,import 文の記述なしに提供されるクラス 2.2 BufferedReader クラスと例外処理 端末から文字列をプログラムに入力したい場合,java.io.Buff

2006年10月5日(木)実施

Functional Programming

ポインタ変数

Microsoft PowerPoint ppt

スライド 1

* ライブラリ関数 islower(),toupper() を使ったプログラム 1 /* 2 Program : trupper.c 3 Student-ID : K 4 Author : TOUME, Kouta 5 Comments : Used Library function i

デジタル表現論・第4回

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

データ構造

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

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

CONTENTS マニュアルの表記... S01-13_01 1.DataNature Smart 全体概要図... S01-13_11 2. 基本操作... S01-13_ Web レポートの表示... S01-13_ 画面構成... S01-13_ 集計表 /

"GIFT" フォーマットのインポート

PowerPoint プレゼンテーション

Java講座

ソフトウェア基礎技術研修

目次 研究目的 背景システム開発について実験および評価結論

cp-7. 配列

プログラミングA

スライド 1

_unix_text_command.pptx

Microsoft Word - no11.docx

Transcription:

授業のねらい アルゴリズムとデータ構造 III 木曜日 2 時限鈴木良弥 アルゴリズムとデータ構造 I,II で学んだ事柄の復習 事例を通じて, 今まで学んだアルゴリズムとデータ構造を組み合わせたアプリケーションのアルゴリズムとデータ構造を学ぶ 授業資料 http://ir.cs.yamanashi.ac.jp/~ysuzuki/pulic/algorithm3/index.html 他の授業との関連科目間関係科目名キーワード関連度教科書, 参考書 (/2) 先行科目 同時進行科目後続科目 アルゴリズムとデータ構造 Ⅰ アルゴリズムとデータ構造 Ⅰ 演習 スタック, 探索木, グラフ アルゴリズムとデータ構造 Ⅱ グラフ, 文字列探索, データ圧縮 アルゴリズムとデータ構造 Ⅱ 演習オートマトンと言語情報数学プログラミング言語論ソフトウェア工学ヒューマン マシンインターフェースビジュアルコンピューティング スタック, 探索木, グラフ グラフ, 文字列探索, データ圧縮 オートマトン, 文脈自由文法暗号文脈自由文法状態遷移図 文脈自由文法,DP マッチング, 時系列データの圧縮 画像の圧縮 () 教科書 特に指定しない. (2) 参考書 形式言語と有限オートマトン入門例題を中心とした情報の離散数学 小倉久和著, コロナ社, 996 年,ISBN:4-339-02339-6 オートマトンと言語の教科書 アルゴリズムとデータ構造 湯田幸八, 伊原充博共著, コロナ社,2002 年,ISBN4-339- 098-3 アルゴリズムとデータ構造 Ⅰ,Ⅱの参考書 教科書, 参考書 (2/2) 参考書 情報検索アルゴリズム 出版社 : 共立出版 著者 : 北研二, 津田和彦, 獅々堀正幹 ISBN4-320-2036- マルチメディア時代の情報理論 出版社 : コロナ社 著者 : 小川英一 ISBN978-4-339-02372-5 THE NEW TURING OMNIBUS 出版社 :Henry Holt 著者 :A. K. Dewdney ISBN 0-8050-766-0 2 3 授業の予定 ( 中間試験まで ) 0/07 スタック ( 後置記法で書かれた式の計算 ) 0/4 チューリング機械, 文脈自由文法 0/2 構文解析 CYK 法 4 0/28 出張 構文解析 CYK 法 5 /04 構文解析 ( チャート法 ), グラフ ( ダイクストラ法 ) 6 / 構文解析 ( チャート法 ), グラフ ( ダイクストラ法, DPマッチング ) 7 /8 グラフ (DPマッチング,A* アルゴリズム ) 8 /25 グラフ (A* アルゴリズム ), 前半のまとめ 9 2/02 中間試験 0/28 の代わりの補講日は後日相談

0 2 3 4 5 授業の予定 ( 中間試験以降 ) 2/09 評価 2/6 0/06 0/3 全文検索アルゴリズム (simple search, KMP) 全文検索アルゴリズム (BM, Aho-Corasick) 全文検索アルゴリズム (Aho-Corasick), データ圧縮 暗号 ( 黄金虫, 踊る人形 ) 符号化 ( モールス信号, Zipf の法則, ハフマン符号 ) テキスト圧縮 0/20 テキスト圧縮 (zip), 音声圧縮 (ADPCM,MP3,CELP), 画像圧縮 (JPEG) 02/03 期末試験 演習問題 (3 点 ) (A) ( レポートを含みます ) 中間試験 (30 点 ) (B) 期末試験 (57 点 ) (C) 評価 =A B C 評価が 60 点以上なら合格 昨年までの実績 年度 2009 2008 2007 受講者 36 50 54 受験者 32 48 45 90 点以上 3 0 5 80 点台 5 3 3 70 点台 7 0 8 60 点台 3 4 8 59 点以下 8 第 回 0 月 7 日 ( 木 ) スタック, キュー 記法 ( 前置, 中置, 後置 ) 後置記法の計算 チューリング機械 スタックとキュー スタック (stack) LIFO (Last In First Out) 操作 : プッシュ (push) ポップ (pop) 例 : 私の机の上の本 キュー (queue) 待ち行列 FIFO (First In First Out) 操作 : エンキュー (enqueue) デキュー (dequeue) 例 : レジなどの待ち行列 スタック キュー 2

数式の記法 ( オートマトンと言語の復習 ) 前置記法 ( ポーランド記法 ) 演算子が先頭 *xy 中置記法 演算子が真ん中 x*y 後置記法 ( 逆ポーランド記法 ) 演算子が最後 xy* 数式の記法 () 前置記法 ( ポーランド記法 ) prefix notation (Polish Notation) 例 : *xy Lisp 言語 (car (A B C)) car : リストの第一要素を取り出す (car (A B C)) A 演算子 計算方法 : 左から 文字づつ読み込み, 演算子 つと変数 2 つがそろったら計算し, 計算した部分を計算結果に置き換える 数式の記法 (2) 中置記法 infix notation 例 : x*y 数式でよく使われる記法 式の意味を一意に確定するために括弧が必要な場合がある. (x+y)*z 数式の記法 (3) 後置記法 ( 逆ポーランド記法 ) postfix notation (Reverse Polish Notation) 例 : xy* Hewlett-Packardの電卓 括弧を書かなくても良い. 頭の中で計算する順序に近い 計算機の中の計算順序と同じ 日本語での計算の説明順序と同じ 例 : xy+ x と y とを足す 計算方法 : 左から 文字づつ読み込み, 演算子を読み込んだら直前の 2 つの変数を使って計算し, 計算した部分を計算結果に置き換える 例題 xy+z* ( 後置記法 ) を中置記法に変換 xy+z* (xy+)z* 最初にxy+ を計算し, その結果とzをかけ合わせる (x+y)*z ( 中置記法 ) (x+y)*z ( 中置記法 ) を後置記法に変換 (x+y)*z 2 xy+z* ( 後置記法 ) 演習問題 中置記法 (y+z)*w/2 を逆ポーランド記法 ( 後置記法 ) に変換せよ. 中置記法 (y+z*w)/2 を逆ポーランド記法 ( 後置記法 ) に変換せよ. 3

演習問題 の解答 中置記法 (y+z)*w/2 後置記法 yz+w*2/ 中置記法 (y+z*w)/2 後置記法 yzw*+2/ y + 構文木 / * 2 w z yz+w*2/ の計算方法 ( 後置記法 ) スタック (Last In First Out) を利用する 練習問題 2 yzw*+2/ の計算方法を書け 練習問題 2 の解答 yzw*+2/ の計算方法 ( スタックの変化 ) 参考 :yz+w*2/ の計算方法 7 2 3 + - を計算してみよう ( アセンブリ言語でプログラミング ) 数式 (7 2 3 + -) がメモリ ( データ領域 ) に書き込まれているとする. データ領域から 文字読み込む. 数字 ( アスキーコード :30H~39H) なら. 数値に変換し, 数値をスタックにプッシュ 2. 演算子なら. 一旦スタックにプッシュし, ポップする. 2. スタックからポップし, 数値をBレジスタに取り込む 3. スタックからポップし, 数値をAレジスタ ( アキュムレータ ) に取り込む 4. 演算子が+なら. A + B を計算し,Aレジスタに計算結果を格納 5. 演算子が-なら. A -B を計算し,Aレジスタに計算結果を格納 6. Aレジスタの内容をスタックにプッシュ 2. データ領域すべてを読み終えるまで続ける. 簡単な計算の例 7 2 3 + - ; 後置記法 7 2 3 + - の計算 ORG 8000H ; LD HL, DATA ; 数式の先頭番地を指定 LOOP: LD A, (HL) CP 00H JP Z, OWARI ; 数式を全部読み込んだら終わり LD E, (HL) LD D, 0H LD A, (HL) INC HL CP 2BH JP Z, LOOPA ; +なら加算処理へ CP 2DH JP Z, LOOPS ; -なら減算処理へ LD A, E SUB 30H ; 数字なら数値に変換 ; Aレジスタの内容をスタックへプッシュ STPUSH: LD E, A LD D, 0H PUSH DE ; 読み込んだ数値をスタックへプッシュ JP LOOP ; つぎの文字読み込みへ Z80 シミュレータで動作を確認できます. ; 加算 LOOPA: ; 減算 LOOPS: PUSH DE ; 演算子をスタックへプッシュ POP DE ; 演算子をスタックからポップ LD B, E ; スタックトップの値を B レジスタへ LD A, E ; スタックトップの値を A レジスタへ ADD A, B ; 加算 ( A <= A + B ) JP STPUSH PUSH DE ; 演算子をスタックへプッシュ POP DE ; 演算子をスタックからポップ LD B, E ; スタックトップの値を B レジスタへ LD A, E ; スタックトップの値を A レジスタへ SUB B ; 減算 ( A <= A - B ) JP STPUSH ; OWARI: HALT ; 入力データ DATA: DEFB 37H ;7 DEFB 32H ;2 DEFB 33H ;3 DEFB 2BH ;+ DEFB 2DH ;- DEFB 00H ;END END 4

形式言語と有限オートマトン入門 4.5.2 チューリング機械 言語受理能力が最も高いオートマトン 半無限長の読み書きが自由にできるテープを用いた有限状態機械 読み書きテープ ( 初期状態では入力語が記述されている ) 0 0 0 B B B B 読み書きヘッド ( 初期状態 : 左端語の先頭文字位置テープ上を左右に移動,read,rewrite) ε 有限状態制御部 最終状態に遷移すると停止して入力語を受理する 25 チューリング機械 (TM) の定義 TM M=(Q,Σ,Γ,,S,B,F) Q : 内部状態の集合 Σ: 入力アルファベット Bを含まない Γ: テープ記号の集合 (Γ Σ) B : 空白記号 Γの要素であるがΣの要素ではない : 状態遷移関数 : Q Γ Q Γ {R,S,L} R: ヘッドを右に移動,S: ヘッドを移動させない, L: ヘッドを左に移動 S : 初期状態 S Q F : 最終状態 ( 受理状態 ) の集合 F Q 26 例題 4.7 w=00 Q={q0,q,qf}, Σ={0,}, Γ={0,,}, S=q0, B=, F={qf} q0 q qf 0 (q0,,r) (q,,r) (q,,r) (q0,,r) (qf,0,s) (qf,,s) 計算状況を示せ. Σ* 上の任意の語と, その最終計算状況におけるテープ上の記号との対応を答えよ 27 例題 4.7 答え w=00 時点表示 ( 計算状況 ) q 0 q q f 0 (q 0,,R) (q,,r) (q f,0,s) (q,,r) (q 0,,R) (q f,,s) w: が奇数個 を出力 w: が偶数個 0 を出力 最終状態 q f に遷移 wを受理 28 例題 4.7 w2 =000 例題 4.7 答え W2 =000 時点表示 ( 計算状況 ) Q={q0,q,qf}, Σ={0,}, Γ={0,,}, S=q0, B=, F={qf} q0 q qf 0 (q0,,r) (q,,r) (q,,r) (q0,,r) (qf,0,s) (qf,,s) 計算状況を示せ. Σ* 上の任意の語と, その最終計算状況におけるテープ上の記号との対応を答えよ 29 w: が奇数個 を出力 w: が偶数個 0 を出力 30 5

練習問題 例題 4.7 w2=00 練習問題 例題 4.7 答え (q0 00) ( q0 0) Q={q0,q,qf}, Σ={0,}, Γ={0,,}, S=q0, B=, F={qf} w2=00 ( q 0) q0 q qf 0 (q0,,r) (q,,r) (q,,r) (q0,,r) (qf,0,s) (qf,,s) w: が奇数個 を出力 w: が偶数個 0 を出力 ( q0 0) ( q0 ) ( q) 計算状況を示せ. Σ* 上の任意の語と, その最終計算状況におけるテープ上の記号との対応を答えよ 最終状態 受理 ( qf) 3 32 ここまで 4.5.3 オートマトンと計算理論 オートマトンの受理する言語クラスオートマトン受理言語型言語クラス チューリング機械線形拘束チューリング機械プッシュダウンオートマトン有限オートマトン 第 0 型言語第 型言語 第 2 型言語 第 3 型言語 句構造言語 (PSL) 文脈依存言語 (CSL) 文脈自由言語 (CFL) 正規言語 (RL) 万能チューリングマシン 任意の TM について, その動作表を与えられるとあたかもその TM のように振る舞う TM コンピュータ プログラム= 動作表 ( 状態遷移関数表 ) 入力 = 入力語 コンピュータは万能 TM チューリングテスト TM M が人間 コンピュータ (TM) が TM M を完全に模倣できるか 33 34 RL CFL CSL PSL ( チョムスキーの言語階層 ) 6