0

私はPHPにKMPコードを持っています。これは単語とテキストの間の文字列マッチングを行うことができます. テキスト間の文字列マッチングに KMP Algorithm を使用できるかどうか疑問に思っています。それは可能ですか?2つのテキスト間の文字列の一致を見つけるためにどのように使用できますか。

KMP アルゴリズムのコアは次のとおりです。

<?php
    class KMP{
      function KMPSearch($p,$t){
        $result = array();
        $pattern = str_split($p); 
        $text    = str_split($t);
        $prefix = $this->preKMP($pattern);
    // print_r($prefix);

     // KMP String Matching
     $i = $j = 0;
        $num=0;
        while($j<count($text)){
          while($i>-1 && $pattern[$i]!=$text[$j]){
         // if it doesn't match, then uses then look at the prefix table
            $i = $prefix[$i];
          }
          $i++;
          $j++;
      if($i>=count($pattern)){
         // if its match, find the matches string potition
      // Then use prefix table to swipe to the right.
            $result[$num++]=$j-count($pattern);
            $i = $prefix[$i];
          }
        }
     return $result;
      }

      // Making Prefix table with preKMP function
      function preKMP($pattern){
        $i = 0;
        $j = $prefix[0] = -1;
        while($i<count($pattern)){
          while($j>-1 && $pattern[$i]!=$pattern[$j]){
            $j = $prefix[$j];
          }
          $i++;
          $j++;
          if(isset($pattern[$i])==isset($pattern[$j])){
            $prefix[$i]=$prefix[$j];
          }else{
            $prefix[$i]=$j;
          }
        }
        return $prefix;
      }
    }
    ?>

テキストで単語を検索するために使用する場合は、このクラスを index.php に呼び出します。

これは、コードに実行させたいステップです:(1)。テキスト1(2)を入力します。テキスト2(3)を入力します。テキスト1をパターンにしたい(すべての単語がテキスト1にあり、パターンとして扱う)(4)。私のコードがテキスト 2 のテキスト 1 のすべてのパターンを見つけられるようにしたい (5)。最後に、私のコードは、類似性のパーセンテージを表示できます。

皆さんが私を助けたり、教えてくれることを願っています。どこでも答えを探していますが、まだ見つかりません。少なくともあなたは私に教えることができます。

4

1 に答える 1