0

LZ78 アルゴリズムの実装方法について質問があります。辞書を最初のインデックスに入力した後、新しい「キーワード」を追加する可能性はありますか? 私のコードを見てください:

//adding new word to dictionary
int dodaj(unsigned char *dop )
{
  int i;
  slownik[ adresy[ilosc]*257 ] = dop[0];
  for(i=1;i<dop[0]+1;i++)
    slownik[ adresy[ilosc]*257+i ] = dop[i];
  ilosc++;
  if( ilosc>ROZMIAR-1 ) przesun();
}

//move location in dictionary, if full
int przesun()
{
  int i,b;
  b = adresy[0];
  for( i=0; i<ROZMIAR-1; i++ )
  {
    adresy[i] = adresy[i+1];
  }
  adresy[ ROZMIAR-1] = b;
  ilosc--;
}

私のコードでは、辞書を埋めた後、すべての出現箇所が -1 に移動され、最後の出現箇所が上書きされます。このコードを変更する方法について何か考えはありますか?

4

1 に答える 1

0

このループは、adresycontaininga, b, c, dで開始すると、次のようにROZMIAR=4なります。

for(i = 0; i

adresyを含むb, b, b, b

上から始めて歩いて行きたいと思いますか?

私はあなたのコードを完全には理解しておらず、変数が名前のように見えるコードを読むのは難しいと思いますが、それらが何を意味するのか理解できません。

于 2013-03-03T13:09:28.640 に答える