Advertisement
dxvmxnd

Untitled

Dec 3rd, 2024
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.59 KB | None | 0 0
  1. # Кластеризация данных
  2.  
  3. **Автор:**
  4. Непесов Рустам
  5.  
  6. **Тема:**
  7. Машинное обучение и анализ данных
  8.  
  9. ---
  10.  
  11. ## Теоретическая база
  12.  
  13. Z-функция строки s определяется как массив z, где z[i] равно длине максимальной подстроки, начинающейся с i-той позиции, которая равна префиксу s.
  14. Пример: Для строки abacabadaba префикс-функция будет выглядеть как:
  15. 0 0 1 0 3 0 1 0 3 0 1
  16. Z-функция этой строки будет:
  17. 0 0 1 0 3 0 1 0 3 0 1
  18.  
  19. ### Алгоритм
  20. Инициализация: Создаем массив z такой же длины, как и пассив n.
  21. Установим z[0] = 0, так как Z-функция для первого символа всегда равна 0.
  22. Цикл по индексам: Проходим по всем индексам от 1 до n – 1:
  23. Если n[i]> 0, устанавливаем начальное значение z[i] = z[n[i-1]].
  24. Это значение указывает, насколько мы можем «перенести» информацию о совпадении префикса.
  25. Если z[i] не может быть больше n – i(то есть не выходит за границы строки), увеличиваем z[i], пока символы совпадают.
  26. Обновление границ: Если I + z[i] – 1 становится больше текущей правой границы r, обновляем границы Z-блока.
  27.  
  28. **Ограничения метода:**
  29. - Ограничение по длине строки.
  30. - Зависимость от корректности массива префикс-функции.
  31. - Применение в специфических задачах.
  32. - Обработка спец.символов
  33.  
  34. ### Примеры применения
  35. - Поиск подстрок.
  36. - Сравнение строк.
  37. - Алгоритм Кнута-Морриса-Пратта.
  38.  
  39. ---
  40.  
  41. ## Условие
  42. Дан массив префикс-функции. Исходная строка не дана. Вычислите за O(n) зет-функцию этой строки.
  43.  
  44. ### Входные данные
  45. - Первое число: n (1 ≤ n ≤ 100000) — длина массива префикс-функции.
  46. - Следующие n чисел: значения префикс-функции ni (0 <= ni < n) – массив префикс-функции, где каждый элемент представляет длину максимального префикса, совпадающего с суффиксом строки, заканчивающимся в позиции i.
  47.  
  48. ### Выходные данные
  49. - n строк, описывающих значения Z-функции zi (0 <= zi <= n) – массив Z-функции для строки, соответствующий данному массиву префикс-функции.
  50.  
  51. ---
  52.  
  53. ## Пример
  54. **Ввод:**
  55.  
  56. ```
  57. 11
  58. 0 0 1 0 2 1 0 3 0 4 1
  59. ```
  60.  
  61. **Вывод:**
  62.  
  63. ```
  64. 0 0 1 0 2 1 0 3 0 4 1
  65. ```
  66. **Ввод:**
  67.  
  68. ```
  69. 10
  70. 0 0 1 0 2 1 0 3 0 4
  71. ```
  72.  
  73. **Вывод:**
  74.  
  75. ```
  76. 0 0 1 0 2 1 0 3 0 4
  77. ```
  78.  
  79. #En:
  80. # Data clustering
  81.  
  82. **Author:**
  83. Nepesov Rustam
  84.  
  85. **Topic:**
  86. Machine learning and data analysis
  87.  
  88. ---
  89.  
  90. ## Theoretical basis
  91.  
  92. The Z-function of a string s is defined as an array z, where z[i] is equal to the length of the maximum substring starting from the i-th position, which is equal to the prefix of s.
  93.  
  94. Example: For the string abacabadaba, the prefix function will look like:
  95. 0 0 1 0 3 0 1 0 3 0 1
  96. The Z-function of this string will be:
  97. 0 0 1 0 3 0 1 0 3 0 1
  98.  
  99. ### Algorithm
  100. Initialization: Create an array z of the same length as the passive n.
  101. Set z[0] = 0, since the Z-function for the first character is always 0.
  102. Loop through indices: Loop through all indices from 1 to n – 1:
  103. If n[i]> 0, set the initial value z[i] = z[n[i-1]].
  104. This value indicates how much we can “carry over” the information about the prefix match.
  105. If z[i] cannot be greater than n – i (i.e. does not go beyond the string boundaries), increment z[i] while the characters match.
  106. Updating the boundaries: If I + z[i] – 1 becomes greater than the current right boundary r, update the boundaries of the Z-block.
  107.  
  108. **Method limitations:**
  109. - Limitation on the string length.
  110. - Dependence on the correctness of the prefix function array.
  111. - Application in specific tasks.
  112. - Processing special characters
  113.  
  114. ### Application examples
  115. - Search for substrings.
  116. - Comparison of strings.
  117. - Knuth-Morris-Pratt algorithm.
  118.  
  119. ---
  120.  
  121. ## Condition
  122. Given a prefix function array. No original string. Calculate the Z-function of this string in O(n).
  123.  
  124. ### Input
  125. - First number: n (1 ≤ n ≤ 100000) — length of the prefix function array.
  126. - Next n numbers: prefix function values ni (0 <= ni < n) — prefix function array, where each element represents the length of the maximum prefix that matches the suffix of the string ending at position i.
  127.  
  128. ### Output
  129. - n strings describing Z-function values zi (0 <= zi <= n) — Z-function array for the string corresponding to the given prefix function array.
  130.  
  131. ---
  132.  
  133. ## Example
  134. **Input:**
  135.  
  136. ```
  137. 11
  138. 0 0 1 0 2 1 0 3 0 4 1
  139. ```
  140.  
  141. **Output:**
  142.  
  143. ```
  144. 0 0 1 0 2 1 0 3 0 4 1
  145. ```
  146. **Input:**
  147.  
  148. ```
  149. 10
  150. 0 0 1 0 2 1 0 3 0 4
  151. ```
  152.  
  153. **Output:**
  154.  
  155. ```
  156. 0 0 1 0 2 1 0 3 0 4
  157.  
  158.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement