Normaali loppuosapuu ei täyty hyvän indeksitietorakenteen vaatimuksia, koska sen koko, eikä täten myöskään muodostamisaika, ole aina lineaarinen tekstin kokoon verrattuna. Loppuosapuutietorakennetta sopivasti modifioimalla saadaan kuitenkin tiiviimpi tietorakenne, Tiivistetty loppuosapuu. Tiivistetyn loppuosapuun koko on aina lineaarinen tekstin kokoon nähden. Loppuosapuu voidaan tiivistää kahdella eri menetelmällä:
Molempia menetelmiä voidaan käyttää yhdessä tai erikseen. Metodilla yksi muodostetussa puussa on kahdenlaisia kaaria, mikä aiheuttaa käytännön (ratkeavia) ongelmia. Metodilla kaksi muodostetut osasanaverkot eivät enää ole puita. Osasanaverkon polun päättävään solmuun voi liittyä monta loppuosaa. Tämä vaikeuttaa esimerkiksi loppuosien tekstipositioiden löytämistä.
Merkitään tekstistä muodostettua tiivistettyä loppuosapuuta
:llä. Jokainen
:n ketju tiivistetään yhdeksi kaareksi,
johon liitetään yksittäisen merkin sijasta osoittimet ketjun
merkkijonon muodostavaan tekstin
alimerkkijonoon (kuva 5). Puulla
on
korkeintaan
lehtisolmua, koska jokaista
:n loppuosaa kohti
on korkeintaan yksi lehtisolmu. Tästä seuraa, että
:llä on
korkeintaan
sisäistä solmua, koska jokaisella solmulla on
ainakin kaksi lasta. Näin ollen
. Tiivistetyn
loppuosapuun koko on siis aina enintään lineaarinen tekstin kokoon verrattuna.
Tiivistetty loppuosapuu voidaan muodostaan vastaavalla algoritmilla
kuin normaali loppuosapuu ajassa
[Ukk93]. Tiivistetty loppuosapuu täyttää siis
kaikki hyvän indeksitietorakenteen kriteerit.
Kirjan [CR94] luvussa 6 osoitetaan
osasanaverkon tilavaatimuksen olevan pahimmassa tapauksessa
.
Samassa luvussa esitetään algoritmi osasanaverkon muodostamiseksi
lineaarisessa ajassa.