You are not logged in.


1

Friday, October 28th 2011, 10:19pm

suffix array, grenze finden

Also, ich moechte noch Code fuer die rechte Grenze wissen. Ich habe viel ausprobiert, verschiedene Kombinationen, also ich habe die Bedienung mit if geandert, habe aber nichts erreicht damit.

https://www.mi.fu-berlin.de/wiki/pub/ABI…gWS11/exact.pdf
Seite 1011.

bei p= aca und text= acaaaacatat ist die Linke grenze
2 aaacatat@
3 aacatat@
4 acaaacatat@
5 acatat@
7 at@
...
11 tat@

Wir finden den Lp mit Hilfe dieser Code (1,10)->(1,6)->(1,4)->(3,4) Also Lp=4
Lp ist die Stelle in Array, wo das wort aca der Prefix des Wortes ist.

Jetzt müssen wir den Rp finden - die rechte grenze, wo aca auch der Prefix des Wortes ist. und hier ist es Rp=5. Aber ich verstehe der Code zum Finden vom Rp nicht.Ich verstehe nicht wie sie da den Rp gefunden habe, was muss man da verandern.

Im skipt sieht der Code einbisschen anders, aber es ist egal.

Quoted


if W <= suffixAt(pos[1]) then
ans = 1
else if W > suffixAt(pos[n]) then
ans = n
else
{
L = 1, R = n
while R-L > 1 do
{
M = (L + R)/2
if W <= suffixAt(pos[M]) then
R = M
else
L = M
}
ans = R
}

Cray X-MP

Moderatorin

Posts: 681

Location: Rechenzentrum

Occupation: *

  • Send private message

2

Saturday, October 29th 2011, 12:27pm

Hallo,
wenn du die rechte Grenze finden möchtest, dann ändere die while im Skript so ab:

Source code

1
2
3
while R - L > 1 do
    M = (L + R) / 2
    if p >= Tsuftab[M] then L = 5; else R = 5


Und am Ende muss es dann Rp = L heißen.

Zumindest komme ich bei dem Beispiel im Skript auf die Rp = 5.

Grüße

Cray
Die Utopie von heute ist die Realität von morgen. (Ernst Bloch)

Similar threads

Social bookmarks

Rate this thread