Z-функция и префикс-функция — это два различных инструмента, используемых для анализа строк, и они имеют разные определения и применения. Вот основные различия между ними:

Определение

  1. Префикс-функция:

    • Префикс-функция для строки длины определяется массивом длины .
    • Значение указывает длину наибольшего собственного префикса строки , который также является суффиксом этой строки.
  2. Z-функция:

    • Z-функция для строки длины определяется массивом длины .
    • Значение обозначает длину наибольшей подстроки, начинающейся с позиции , которая также является префиксом строки .

Пример

Рассмотрим строку S = "абабаба".

  1. Префикс-функция:

    • (первый символ не имеет префикса).
    • (“а” не совпадает с “б”).
    • (“аб” имеет префикс “а”, который совпадает с первым символом).
    • (“аба” имеет префикс “аб”, который совпадает с первыми двумя символами).
    • (“абаб” имеет префикс “аба”, который совпадает с первыми тремя символами).
    • (“абаба” имеет префикс “абаб”, который совпадает с первыми четырьмя символами).
    • (“абабаб” имеет префикс “абаба”, который совпадает с первыми пятью символами).

    Префикс-функция: .

  2. Z-функция:

    • (вся строка совпадает с собой).
    • (подстрока, начинающаяся с “бабаба”, не совпадает с началом строки).
    • (“абаба” совпадает с началом строки “абаба”).
    • (подстрока, начинающаяся с “баба”, не совпадает с началом строки).
    • (“аба” совпадает с началом строки “аба”).
    • (подстрока, начинающаяся с “ба”, не совпадает с началом строки).
    • (“а” совпадает с началом строки “а”).

    Z-функция: .

Различия в применении

  1. Префикс-функция:

    • Используется в алгоритме Кнута-Морриса-Пратта (КМП) для поиска подстрок.
    • Помогает найти периодичность строки.
    • Применяется для анализа строк и других задач, связанных с префиксами и суффиксами.
  2. Z-функция:

    • Используется в алгоритмах поиска подстрок, таких как алгоритм поиска по шаблону с использованием Z-функции.
    • Полезна для задач, связанных с нахождением совпадающих подстрок, и анализа повторяющихся паттернов.

Итог

Префикс-функция и Z-функция имеют разные определения и приложения, но обе они полезны для различных задач, связанных с анализом строк. Префикс-функция фокусируется на префиксах, которые также являются суффиксами, тогда как Z-функция измеряет совпадение префиксов с подстроками, начинающимися с каждой позиции строки.