Изменения

Перейти к: навигация, поиск

Алгоритм Фараха

75 байт убрано, 15:43, 8 июня 2014
Шаг 5: удаление двойных дуг
Разберём дуги по порядку:
* <tex>(1)</tex> # расслоение находится на расстоянии два от корня, то есть дуга не расслаивается.* <tex>(2)</tex> # конец является родителем вершин <tex>2</tex>, <tex>7</tex>. Родитель <tex>3</tex>, <tex>8</tex> после слияния дуги <tex>(1)</tex>, находится на глубине <tex>2</tex> символа. Значит, дуга <tex>(2)</tex> расслаивается на глубине <tex>3</tex> символа, то есть так же не расслаивается. Дугу <tex>(2)</tex> нужно вычислять после обработки дуги <tex>(1)</tex>, потому что конец дуги <tex>(1)</tex> после обработки может оказаться на разной высоте, в зависимости от того на каком символе она расслоилась.* <tex>(3)</tex> # конец является родителем <tex>2</tex>, <tex>9</tex>. Родитель <tex>3</tex>, <tex>10</tex> находится на расстоянии <tex>3</tex>, а наше расслоение на расстоянии <tex>4</tex>, то есть сливается первый символ двойной дуги. Дугу <tex>(3)</tex> надо вычислять после дуги <tex>(2)</tex>. Потому что если на дуге <tex>(2)</tex> появится разветвление, то компоненты дуги <tex>(3)</tex> придётся растащить по разным веткам дерева и сравнивать их будет не нужно.* <tex>(4)</tex> # конец является родителем <tex>1</tex>, <tex>4</tex>. Расслаивается на втором символе.* <tex>(5)</tex> # конец является родителем <tex>0</tex>, <tex>3</tex>. Дугу <tex>(5)</tex> можно обрабатывать только после дуги <tex>(4)</tex>, так как от неё будет зависеть глубина расслоения.
Дерево после обработки:
497
правок

Навигация