曖昧リンクリンクを先に作るときに効果的。
リンク先のページ名を不意に変えてしまっても有効だから。

異字体にも対応するとか。
いとゐとかも。

→「曖昧リンク」はリンク先が存在しなかったり一意でないBracketNameのリンク先とする。実装では曖昧さ回避ページメタページ)へのリンクにする。

打ち間違い(スペルミス)にも対応する方法 Edit

AC法を使うなら、転置インデックス上のポインターを増やせばいい。

  • ポインターを進めたとき、それ以外の(外れた)ノードにも仮のポインターを設ける。外れた場合の行き先はスタートノードなので、それ以外のノードとはひとつ先のノード全て。仮のポインターは生存期間が次の文字までの短いもの。これで1文字の打ち間違いを許容。
  • ポインターを進めたとき、その先のノードにも仮のポインターを設けると、1文字脱字があっても適合するようになる。
  • ポインターを進めたとき、元あったノードにも仮のポインターを設けると、余計な文字が1文字あっても適合するようになる。
  • 仮のポインターを広い範囲にばらまけば、2文字以上の打ち間違いにも対応できる。
    • 外れたポインターをスタートノードに返す前に、ひとつ先のノードだけでなく、さらに先のノード(つまり2ホップ先)全てにも仮のポインターを設けると、2文字の打ち間違いにも適合するようになる。
    • 先のノードだけでなく、さらにひとつ先のノード全てにもポインターを設けると、2文字以上の脱字が続いても適合する。
    • 元のノードだけでなく、もう一つ前…つまり元の元のノードにもポインターを設けると、2文字余計な文字が続いても適合する。

ポインターの性質…

  • 仮のポインターは進むと本物のポインターになる。進めなくてもスタートノードに戻れる。
  • 仮のポインターの生存期間はスタートノードに戻るまででもいい。元から進めなければスタートに戻るものなので、同じアルゴリズムになる。
  • 複数のポインターが同時にスタートノードに止まったとき、ひとつを残して他は消える。重複していても無駄なので消す。
    ポインターはスタートからの経路を記録しているので、スタート以外で鉢合わせても重複とは見なせない。

正規現を使うなら、パターン内の1文字ごとに「?」と「.?.?」を追加。「.?」の数が間違えていい文字数。