Что такое ACT-дерево

«Что такое ACT-дерево» — вопрос из категории Тестирование, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ACT-дерево (Aho-Corasick Trie) — это структура данных для эффективного поиска множества подстрок в тексте. Основано на алгоритме Ахо-Корасик, который объединяет префиксное дерево (trie) с автоматом для быстрого перехода между состояниями.

Ключевые особенности:

  • Строится на основе набора шаблонов (строк для поиска)
  • Позволяет искать все шаблоны за O(n + m + k), где n — длина текста, m — сумма длин шаблонов, k — число вхождений
  • Использует три типа ссылок: переходы по символам, суффиксные ссылки и выходные ссылки

Пример использования в Go:

import "github.com/cloudflare/ahocorasick"

func main() {
    patterns := []string{"he", "she", "his", "hers"}
    matcher := ahocorasick.NewMatcher(patterns)
    text := "ushers"
    matches := matcher.Match([]byte(text))
    // matches содержит позиции всех найденных паттернов
}

Применяется в антивирусах, поисковых системах, анализе текста.