Grundlegende Algorithmen: Lösungshinweise


Kapitel 6

6.1
Initialisiere eine neue Variable found=0; ersetze return i; durch found++; break; und ersetze return -1; durch return found;
6.2
border[]=(0,0,1,0,1,0,1,2,3,4)
6.3
S[]=(12,12,12,12,12,12,12,7,12,12,3,1)
6.4
Der Einfachheit halber nehmen wir an, dass n gerade und m ungerade ist: Wähle t=(ab)n/2; s=a(ab)m/2;
6.5
Der Suffix-Trie besitzt Θ(n2) Knoten.
6.6
Fleißaufgabe.
6.7
Konstruiere den Suffix-Baum für die konkatenierte Zeichenreihe und entferne Teilbäume die Dollarzeichen enthalten. Alternativ konstruiere einen Suffix-Baum für t1. Konstruiere dann den Suffix-Baum für ti innerhalb des bereits konstruierten Suffix-Baumes.
6.8
Komnstruiere einen verallgemeinerten Suffix-Tree T für x,y∈&Sigma*. Markiere die Blätter mit x oder y, je nach dem, ob der zugehörige Suffix aus x oder y stammt. Der tiefste Knoten (gemäß der String-Tiefe) in T, der in seinem Teilbaum sowohl ein mit x als auch mit y markiertes Blatt besitzt, korrespondiert zum längsten gemeinsamen Teilwort.
6.9
Suche nach v in ww.
6.10
Suche nach dem zweiten Vorkommen von v in vv.
6.11
---
6.12
---