BiBiServ Logo
Attention:
Due to technical maintenance some tools will not be available.
See maintenance description for more information.
BiBiServ -
                                    Bielefeld         University Bioinformatic Service
Tools
Education
Administration
Tools
Genome Comparison
Gecko
REPuter
...more
Alignments
e2g
PoSSuMsearch
...more
Primer Design
GeneFisher
RNA Studio
RNAcast
RNAshapes
...more
Evolutionary Relationship
ROSE
SplitsTree
...more
Others
XenDB
PREdictor
...more

Vertex Successor in amortisierten O(1)

Vertex Successor in amortisierten O(1)

Torsten Will

Zusammenfassung

Bisher wurde fuer die Aufzaehlung der Nachfolger eines Vertexes ein einfacher Algorithmus mit O(k) verwendet. Hier wird eine Verbesserung untersucht, die die Aufzaehlung der Successoren in Graycode-Reihenfolge ausnutzt und daher amortisierte O(1) hat.

(Zurück)

Einleitung

Das verwendete Programm oma. Relevant ist hier, dass zwei verschiedene Versionen getestet wurden.
  • oma/O(k): Einfache Implementierung mit O(k), bei der jeder Sukzessor von der Wurzel des Vertex-Tries aus neu gesucht wird.
  • oma/O(1)): Aufwendigere Implementierung, die im Trie nur so weit hinabsteigt, die die Graycode-Aufzaehlung angibt.

Sequenzdaten

Die Tests wurden mit Sequenzen der BAliBASE durchgefuerht, deren Namen in der Tabelle angegeben sind. Ich habe Datensaetze ausgewaehlt, die lange Sequenzen anthalten (n>400) und k=4 oder k=5 Sequenzen enthalten. Ein weiteres Kriterium war, dass der Alignierungsvorgang eine Weile brauchen wuerde (zwischen 200 und 600 Sekunden).

Testreihe 1

  • max htT/gets:Anzahl der get-Zugriffe auf den Hashtable des Vertex-Tries, der die (Vater,Ordinate)->Sohn implementiert. Es wurde das Segment angegeben, das die meisten get-Zugriffe hatte.
  • time:Laufzeit in Sekunden.
oma/O(k) oma/O(1)
1ac5 (k=4)
max htT/gets 46 969 172 27 142 447
time[s] 542 477
2ack (k=5)
max htT/gets 15 914 938 9 832 340
time[s] 218 214
1lcf (k=6)
max htT/gets 846 748 073 616 700 230
time[s] 5 408 6 255
Tabelle 1:
Implementationsvergleich
Mit "2ack" habe ich ein noch zu "harmloses" Beispiel ausgewaehlt. Alle Segmente werden recht schnell aligniert. Das Beispiel "1ac5" hat ein "Problemsegment", bei dem, trotz des kleineren k's, der Vorteil mehr ins Gewicht faellt.

Literatur

 
Welcome
References
Download
Contact
Tue Dec 20 16:59:43 2005