Изучение алгоритма: Суффикс высота массив простиранию

ОПРЕДЕЛЕНИЯ

[LCP] полное имя самого длинного общего префикса, самый длинный префикс между двумя суффиксами, определим следующее

Значение LCP (I, J) является самым длинным префиксы и суффиксы я и J

 

Функция [г] функция г [I] представляет собой длинный префикс и суффикс I строки

 

 


 

 [Проблема]

Оба были в решении этой проблемы

Т.е. ищет самый длинный общий префикс и суффикс строки между суффиксами и

 

Но что-то другое,

Суффикс массив , наконец , определить , что самый длинный общий префикс лексикографические суффиксы I-й и + 1-й суффикс

Z функции , чтобы окончательно определить , что самый длинный общий префикс и суффикс я строки

 

Затем найдите другое значение по наибольшей общей приставке

 


 

Изучение алгоритма []

Суффикс массив []

  Суффикс массив может быть получен в н-время лексикографического I-го и я - 1 длинных общий префикс - суффикс

  И эта функция обычно называется высота 

  Значение высоты [I] представляет собой, лексикографический I - наибольший общий префикс и суффикс суффикса г-го

  Получено имеет следующие свойства: (s [I] обозначает суффикс I-го)

  1. Если я меньше, чем у, ЖКП (I, J) = тт {ЖКП (к - 1, к), г + 1 <= K <= J}

  LCP может воспользоваться этим спросом у RMQ

  2. Определить Н [я] следующим образом: I-й суффикс, начинающийся перед ним и суффиксом LCP лексикографическом

  即: ч [я] = высота [ранг [я]]

  Тогда есть, для I> 1 и ранга [я]> 1  

   ч [я]> ч [я - 1] - 1;

   

  Удостоверяет следующим образом:

  И J является первым я - 1 суффикс начала встать на передней позиции суффикса ранжирования

  Примечание: J не первый я - 2

  В этом случае, суффикс J-й и я - 1-й в суффиксе LCP определяются высота [ранг [я - 1]], то есть ч [я - 1]

  То есть часть правой половины из нас, чтобы доказать

  Затем мы обсудим J + 1 и я (полученный I - 1 + 1) отношений:

  Во-первых, когда у и я - 1, где буквы не равны, ч [я - 1] = 0

  Ясно тогда ч [I]> ч [я - 1] - 1

  Во-вторых, когда у и я - 1, равна первой букве дела,  

  Очевидно, то, J, и я - ЖКП 1 ч [я - 1] - 1

  В рейтинге суффиксом, чем я экзамен, и суффикс я самый длинный, самый высокий сходство ЖКП явно в SA недавно, что от него

  Немедленное SA [ранг [я - 1]] - 1 

  То есть, ч [я]> = ч [я - 1] - 1

  QED

  

  Таким образом, каждый раз, когда мы находим самый длинный префикс, когда доступны из ч [я - 1] начать извлечение

  Является аналогом manacher

  Код выглядит следующим образом:

недействительный GetHeight () {
     INT J, K = 0 ;
    для ( INT I = 1 ; г <= N; я ++ ) {
         если (к) k-- ;
        INT J = са [Rak [I] - 1 ];
        в то время как (с [I + K] == S [J + K]) K ++ ; 
        Высота [Rak [я]] = K; 
        Е ( " % d \ п " , к); 
    } 
}

 

 


 

тема:

 

[SDOI 2008] Sandy карта

 

 

 

  

 

рекомендация

отwww.cnblogs.com/rentu/p/11338901.html