京都大学 情報学研究科 知能情報学専攻 2019年8月実施 情報学基礎 F2-2
Author
祭音Myyura
Description
大学公表の原題 文字のテキスト文字列 (text) の先頭から順に、 文字のパターン (pattern) を探す問題を考える。
例えば、図 (a) のように、text の位置 から始まる文字列と pattern "ABCA" を比較し、3文字目が不一致であったとする。 このとき、あらかじめ pattern の性質を調べておけば、pattern を1つ右にずらしても照合することはなく、pattern を2つ右にずらして、text の位置 から比較すれば良いことがわかる。 一方、図 (b) のように、4文字目で不一致であった場合には、pattern を4つ右にずらして、text の位置 と pattern の先頭の比較から再開すれば良い。
(1) pattern の位置 で照合が失敗したとき、pattern を最大何文字まで右にずらせるかを で表すこととする。 図 (a) では 、図 (b) では である。 次の pattern について、 の値を求めよ。
- (i) AAAB
- (ii) ABAC
(2) (1) の pattern (ii) と text "ABABBAABACA" との照合の過程を図示せよ。 pattern と text のどの文字が比較されて行くかを明示すること。
(3) このアルゴリズムの時間計算量を示せ。また、このアルゴリズムにおける比較の最大回数と、その具体例 (pattern と text) を示せ。
题目描述
考虑在长度为 的文本串中从头查找长度为 的模式串。若预先分析模式自身结构,在位置 失配时可以跳过不可能匹配的起点。题图以模式 ABCA 说明:第 3 个字符失配时可右移 2 位,第 4 个字符失配时可右移 4 位。
以 表示在模式位置 失配时最多可安全右移的字符数。
- 对下列模式分别求
():
AAAB;ABAC。
- 图示模式
ABAC与文本ABABBAABACA的完整匹配过程,明确标出依次比较的模式字符与文本字符。 - 给出该算法的时间复杂度,并给出最大比较次数以及达到该次数的具体模式串、文本串例子。
Kai
(1)
(i)
(ii)
(2)
ABABBAABACA
ABAC
ABAC
ABAC
ABAC
比較する は順に
であり,text の位置 から ABAC が見つかる。
(3)
以下では とし、残りの text が pattern より短くなった時点で終了する。 なら文字比較をせずに不一致と判定できる。 表は 時間で構成できる。照合中,一致した比較は text の位置を1つ進め,不一致の比較は pattern の開始位置を1つ以上進める。 のとき,照合に成功する場合は一致比較が高々 回,不一致比較が高々 回である。照合に失敗する場合はそれぞれ高々 回, 回である。いずれも合計は
以下であるから,最大比較回数は である。よって計算量は である。
では,最初に 回,以後の各開始位置で2回ずつ比較するため,
回となり上界を達成する。( の最大回数は 。)