京都大学 情報学研究科 知能情報学専攻 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 の位置を1つ進め,不一致の比較は pattern の開始位置を1つ以上進める。 のとき,照合に成功する場合は一致比較が高々 回,不一致比較が高々 回である。照合に失敗する場合はそれぞれ高々 回, 回である。いずれも合計は
以下であるから,最大比較回数は である。よって計算量は である。
では,最初に 回,以後の各開始位置で2回ずつ比較するため,
回となり上界を達成する。( の最大回数は 。)