Сжатое суффиксное дерево — различия между версиями
(Новая страница: «{{Определение |definition= Пусть дана строка <tex>S</tex>, <tex>|S| = m</tex>. Суффиксное дерево <tex>T</tex> для стр…») |
AndrewD (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | Пусть дана строка <tex> | + | Пусть дана строка <tex>s</tex>, <tex>|s| = m</tex>. Суффиксное дерево <tex>T</tex> для строки <tex>s</tex> - ориентированное дерево с корнем, имеющее ровно <tex>m</tex> листьев, занумерованных от <tex>1</tex> до <tex>m</tex>. Каждая внутренняя вершина, отличная от корня, имеет не меньше двух детей, а каждая дуга помечена непустой подстрокой строки <tex>s</tex>. Никакие две дуги не могут иметь пометок, начинающихся с одного и того же символа. |
}} | }} | ||
| − | Главная особенность суффиксного дерева заключается в том, что для каждого листа <tex>i</tex> конкатенация меток дуг на пути от корня к листу <tex>i</tex> в точности составляет суффикс строки <tex> | + | Главная особенность суффиксного дерева заключается в том, что для каждого листа <tex>i</tex> конкатенация меток дуг на пути от корня к листу <tex>i</tex> в точности составляет суффикс строки <tex>s</tex>, который начинается в позиции <tex>i</tex>, то есть <tex>s[i..m]</tex>. |
| − | + | ==Существование сжатого суффиксного дерева== | |
| − | Определение суффиксного дерева не гарантирует, что такое дерево существует для любой строки <tex> | + | [[Файл:Suffix_tree.jpg|thumb|right|Суффиксный бор для строки <tex>xabxa</tex> с защитным символом]] |
| + | Определение суффиксного дерева не гарантирует, что такое дерево существует для любой строки <tex>s</tex>. Если один суффикс совпадает с префиксом другого суффикса, то построить суффиксное дерево, удовлетворяющее данному выше определению, невозможно, поскольку путь для первого суффикса не сможет закончиться в листе. Например, для строки <tex>xabxa</tex> суффикс <tex>xa</tex> является префиксом суффикса <tex>xabxa</tex>. Во избежание этого в конце строки <tex>s</tex> добавляется символ, не входящий в исходный алфавит. Такой символ называется '''''защитным'''''. Как правило в качестве защитного символа используется <tex>\$</tex>. | ||
| + | ==Связь с суффиксным бором== | ||
| + | Пусть <tex>P</tex> - [[Суффиксный бор|суффиксный бор]] строки <tex>s</tex>. Тогда сжатое суффиксное дерево <tex>T</tex> может быть получено из <tex>P</tex> слиянием каждого пути из неветвящихся вершин в одну дугу. | ||
| + | ==Хранение в памяти== | ||
Версия 05:55, 22 марта 2011
| Определение: |
| Пусть дана строка , . Суффиксное дерево для строки - ориентированное дерево с корнем, имеющее ровно листьев, занумерованных от до . Каждая внутренняя вершина, отличная от корня, имеет не меньше двух детей, а каждая дуга помечена непустой подстрокой строки . Никакие две дуги не могут иметь пометок, начинающихся с одного и того же символа. |
Главная особенность суффиксного дерева заключается в том, что для каждого листа конкатенация меток дуг на пути от корня к листу в точности составляет суффикс строки , который начинается в позиции , то есть .
Существование сжатого суффиксного дерева
Определение суффиксного дерева не гарантирует, что такое дерево существует для любой строки . Если один суффикс совпадает с префиксом другого суффикса, то построить суффиксное дерево, удовлетворяющее данному выше определению, невозможно, поскольку путь для первого суффикса не сможет закончиться в листе. Например, для строки суффикс является префиксом суффикса . Во избежание этого в конце строки добавляется символ, не входящий в исходный алфавит. Такой символ называется защитным. Как правило в качестве защитного символа используется .
Связь с суффиксным бором
Пусть - суффиксный бор строки . Тогда сжатое суффиксное дерево может быть получено из слиянием каждого пути из неветвящихся вершин в одну дугу.