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

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

オートマトンと言語

オートマトンと言語

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

文字列探索

オートマトンと言語

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

オートマトンと言語

オートマトンと言語

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション


データ構造

PowerPoint プレゼンテーション

Microsoft PowerPoint - 5Chap15.ppt

Taro-cshプログラミングの応用.jt

Microsoft PowerPoint - w5.pptx

オートマトンと言語

PowerPoint プレゼンテーション

3. 標準入出力

Microsoft PowerPoint - 05.pptx

データ構造

Microsoft PowerPoint - Compiler03.pptx

2/ 土 :30 11:20 似通った科目名がありますので注意してください. 受験許可されていない科目を解答した場合は無効 整理番号と科目コードは受験許可証とよく照合し正確に記入

第2回

nlp1-04a.key

Microsoft PowerPoint - Compiler03note.pptx

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

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

(1) (2) (3) (4) (1) (a) (b) (c) (d) kg 9.8 N 5.0 kg 19.6 m/s kg m/s 8.0kg (2) 1 r=1.0m ABC QA =1

PowerPoint Presentation

言語プロセッサ2005 -No.6-

オートマトンと言語

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

2 Windows 版パソコンでの操作方法 イ署名検証用ソフト (Gpg4win) のインストール 1 にアクセスし DownloadGpg4win をクリックします 2 Gpg4win をクリックするとダウンロードが開始されます 2

情報処理Ⅰ

プログラミングA

memo

Java講座

PowerPoint プレゼンテーション


FMV取扱ガイド

FMV取扱ガイド

取扱ガイド

FMV取扱ガイド

プログラミングA

Microsoft PowerPoint - DA2_2017.pptx

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

2 key. 3

プログラミングA

コンピュータの構成

Microsoft Word - Javacc.docx

Microsoft PowerPoint - prog03.ppt

PowerPoint プレゼンテーション

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

情報プリント パソコンプログラミング

program7app.ppt

参加報告書

P70

ex04_2012.ppt

Functional Programming




memo

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

<4D F736F F F696E74202D208FEE95F1926D8EAF836C F815B834E93C1985F817595B68E9A97F18FC68D B A E

.V...z.\

201604_建築総合_2_架橋ポリ-ポリブテン_cs6.indd

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

フローチャートの書き方

要旨 : データステップ及び SGPLOT プロシジャにおける POLYGON/TEXT ステートメントを利用した SAS プログラムステップフローチャートを生成する SAS プログラムを紹介する キーワード :SGPLOT, フローチャート, 可視化 2

メソッドのまとめ

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

untitled

橡07第1章1_H160203_.PDF

ポインタ変数

Webデザイン論

スライド 1

スライド 1

Microsoft PowerPoint - prog04.ppt

2

<96BC8FCC96A290DD92E82D31>

Microsoft PowerPoint ppt

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(VBA) サンプル問題 知識科目 第 1 問 ( 知

共有辞書を用いた 効率の良い圧縮アルゴリズム

Microsoft PowerPoint - ad11-09.pptx

Taro-リストⅢ(公開版).jtd

Si 知識情報処理

Taro-リストⅠ(公開版).jtd

Microsoft PowerPoint - DA2_2017.pptx

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

NLP プログラミング勉強会 5 HMM による品詞推定 自然言語処理プログラミング勉強会 5 隠れマルコフモデルによる品詞推定 Graham Neubig 奈良先端科学技術大学院大学 (NAIST) 1

Bluemix いつでもWebinarシリーズ 第15回 「Bluemix概説(改訂版)」

Microsoft PowerPoint - DA2_2018.pptx

1999年度 センター試験・数学ⅡB

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

Proc luaを初めて使ってみた -SASでの処理を条件に応じて変える- 淺井友紀 ( エイツーヘルスケア株式会社 ) I tried PROC LUA for the first time Tomoki Asai A2 Healthcare Corporation

文字列操作と正規表現

Transcription:

アルゴリズムとデータ構造 III 9 回目 : 月 9 日 全文検索アルゴリズム (Simple Serh, KMP) 授業資料 http://ir.s.ymnshi..jp/~ysuzuki/puli/lgorithm/index.html 授業の予定 ( 中間試験まで ) / スタック ( 後置記法で書かれた式の計算 ) / チューリング機械, 文脈自由文法 / 構文解析 CYK 法 / 構文解析 CYK 法 / 構文解析 ( チャート法 ) /8 構文解析 ( チャート法 ), グラフ ( ダイクストラ法, DPマッチング ) /9 グラフ (A* アルゴリズム,DPマッチング) 時限 B- 8 / グラフ ( DPマッチング ), 前半のまとめ 9 / 中間試験 授業の予定 ( 中間試験以降 ) /9 全文検索アルゴリズム (simple serh, KMP) 中間試験の結果 / 全文検索アルゴリズム (BM, Aho-Corsik) / 全文検索アルゴリズム (Aho-Corsik), データ圧縮 / 暗号 ( 黄金虫, 踊る人形 ) 符号化 ( モールス信号, Zipfの法則, ハフマン符号 ) テキスト圧縮 / テキスト圧縮 (zip), 音声圧縮 (ADPCM,MP,CELP), 画像圧縮 (JPEG) / 期末試験 受験者 平均点 満点獲得者数 今年 年度 9 年度 人 人 8 点 人 8 点 人 8 年度 9 人 9 点 人 年度 8 人 点 人 得点 9 8 中間試験の結果 年度 9 年度 8 年度 年度 中間試験結果 9 9 9 9 9 成績順位 問題別得点結果 問毎の平均点 スタック 問 文脈自由文法 オートマトン教科書例題. 問 9.8 問.. CYK 法 問 8. 問 トップダウンチャート法 問 問 問 問

中間試験の解答例 http://ir.s.ymnshi..jp/~ysuzuki/puli/lgorithm/ の 月 日の授業資料 本日のメニュー 全文検索アルゴリズム 全文検索とは simple serh 動作の説明 アルゴリズム KMP 動作の説明 アルゴリズム 全文検索 文書中から, 与えられた文字列と完全に一致する部分を探し出す. 全文検索の種類 文字列照合による全文検索 索引を用いた全文検索 全文検索 文書中から, 与えられた文字列と完全に一致する部分を探し出す. 全文検索の種類 文字列照合による全文検索 索引を用いた全文検索 文字列照合タスク テキストに キーワードが含まれているか? その出現は? テキスト処理には不可欠 タスク例テキストTからキーワードKを見つける テキストT:x キーワードK: 8 9 答えキーワードは含まれているか :YES 出現 : 文字目から始まる文字列と9 文字目から始まる文字列 x 8 9 文字列照合アルゴリズム Simple Serh Knuth-Morris-Prtt 法 Boyer-Moore 法 Aho-Corsik 法

文字列照合問題の単純な解決法 Simple Serh Simple Serh の文字列照合手順 Simple Serh のアルゴリズム Simple Serh の評価 単純な文字列照合アルゴリズム Simple Serh テキストの 文字目から n 文字目まで, 文字目から n+ 文字目まで, がキーワードと一致するかどうかをチェックする.(n: キーワードの文字数 ) 8 9 8 9 x 文字目からの照合 回目の照合で失敗 文字目からの照合 回目の照合で失敗 文字目からの照合 回目の照合で失敗 文字目からの照合 照合成功!! 文字目からの照合 回目の照合で失敗 は照合失敗箇所は文字照合に成功は文字列照合に成功 Simple Serh text 照合回数 同じ部分を何度も照合しなければならない 8 9 8 9 x x 文字照合失敗 文字照合成功 Simple Serh のアルゴリズム 入力 : テキスト (text), キーワード (key) 出力 : テキスト中のキーワードの m: テキストの長さ n: キーワードの長さ Method egin for i:= to m-n+ do 起点を決めて egin for j:= to n do キーワードと 字ずつ照合 if text[i+j-] key[j] then 照合に失敗したらループを抜ける goto ; print i; 出現を表示 : Simple Serh 最も効率の悪い場合 key = text = text 照合回数 文字照合回数 (-+)*= (m-n+)*n 回一般に m n なので O(mn) Knuth-Morris-Prtt 法 (KMP 法 ) Simple Serh テキスト文字列中の各文字がキーワードと複数回照合される 冗長 KMP 法 文字照合の実行中に次回の文字照合を考慮しつつ処理を進める 文字照合中, バックトラックの必要がない

Knuth-Morris-Prtt 法 次にキーワードの何文字目から照合すればよいか Key: next 8 9 8 9 text x x (keyの 文字目で照合失敗 ) キーワードの 文字目に対応している ( 照合成功 ) Keyの 文字目から ( 照合成功 ) Keyの 文字目から (keyの 文字目で照合失敗 ) Keyの 文字目から Keyの 文字目から KMP 法アルゴリズム m :textの長さ n :keywordの長さ i: textの照合 Method KMP J: keywordの照合 egin j:=; for i:= to m do egin while j> nd key[j] text[i] do j:=next(j); 次の照合 if j=n then 照合成功 print i-n+: j:=j+; 照合 キーワードの接頭辞文字列の出現 関数 next: 次回の照合でキーワードの何文字目を照合すべきか テキスト文字列中の照合に失敗した文字の直前の何文字がキーワードの接頭辞になっているかを調べる キーワード キーワード next 関数値 文字目で照合失敗した場合 : 直前文字列が なので 文字目から照合開始 照合に成功した場合 : 直前文字が なので 文字目から照合開始 Keyword: のとき 文字目の で照合失敗 ( 直前の文字が ) 照合失敗箇所の右隣と : を照合 next 関数 照合失敗箇所はキーワードの 文字目と照合 next()= 文字目の で照合失敗 ( 直前の文字が ) 照合失敗箇所と : を照合 next()= 文字目の で照合失敗 ( 直前の文字が ) 照合失敗箇所と : を照合 next()= : : keywordの一文字目の : 以外の文字 next 関数 Keyword: のとき : : keywordの一文字目の : 以外の文字 文字目の で照合失敗 ( 直前の文字が ) 照合失敗箇所の右隣と : を照合 照合失敗箇所はキーワードの 文字目と照合 next()= 文字目の で照合失敗 ( 直前の文字が ) 照合失敗箇所と : を照合 next()= 文字目の で照合失敗 ( 直前の文字が ) 照合失敗箇所と : を照合 next()= 文字目の で照合成功 ( 直前の文字が ) 照合失敗箇所 ( 照合成功末尾の右隣 ) と : を照合 next()= KMP 法アルゴリズム next 関数入力 : キーワード key, 出力 :next 関数 n : keyの長さ Method next j : keyの照合 egin t : keyのj 文字目の直前の何文字がkeyの接頭辞になっているか t:=; next():=; for j:= to n do keyの各文字に対してnext 関数値を計算 egin while t nd key[j] key[t] do t:=next(t); keyのj 文字目までの文字列がkeyの t:=t+; 接頭辞と一致しているか調べる if key[j+]=key[t] then keyの next(j+):=next(t); j+ 文字目の else next 関数値を next(j+):=t; 決定

KMP 法の評価 KMP 法 漸近的時間計算量 O(m) next 関数が必要 Simple Serh 法 漸近的時間計算量 O(mn) m: テキストの文字数 n: キーワードの文字数 テキスト文字列の各文字に対して 回照合 テキスト文字列の各文字に対してキーワード文字数回照合