Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Lowest Common Ancestor – Wikipedia
Lowest Common Ancestor – Wikipedia
aus Wikipedia, der freien Enzyklopädie
In diesem Baum ist der LCA der Knoten x und y in Dunkelgrün mar­kiert. Andere ge­mein­same Vorfahren sind in Hellgrün dar­ge­stellt.

Als Lowest Common Ancestor oder Least Common Ancestor (LCA), deutsch „letzter gemeinsamer Vorfahre“, wird in der Informatik und Graphentheorie ein Ermittlungskonzept bezeichnet, das einen gegebenen gewurzelten Baum von Datenstrukturen effizient vor­ver­arbei­tet, sodass anschließend Anfragen nach dem letzten gemeinsamen Vorfahren für beliebige Knotenpaare in konstanter Zeit beantwortet werden können.

Bäume gehören zu den fundamentalen Datenstrukturen der Informatik. Sie werden häufig verwendet, um Daten in einer hierarchischen oder geschachtelten Struktur darzustellen. Zwei klassische Beispiele sind Such- und Entscheidungsbäume. Algorithmische Standard­fragen für Bäume sind zum Beispiel die Pre-, Post- und Inordertraversierung. Ein in diesem Kontext weniger bekanntes algorithmisches Problem ist die Suche nach dem letzten ge­mein­samen Vorfahren (LCA).[1]

Definition des LCA

[Bearbeiten | Quelltext bearbeiten]

Gegeben sei ein Baum T = ( V , E ) {\displaystyle T=(V,E)} {\displaystyle T=(V,E)} mit einem Wurzelknoten r {\displaystyle r} {\displaystyle r}, insgesamt n {\displaystyle n} {\displaystyle n} Knoten ( | V | = n ) {\displaystyle (|V|=n)} {\displaystyle (|V|=n)} und einer Höhe h {\displaystyle h} {\displaystyle h}. Der Lowest Common Ancestor (LCA) zweier Knoten u {\displaystyle u} {\displaystyle u} und v {\displaystyle v} {\displaystyle v} ist derjenige Knoten, der ein Elternknoten von sowohl u {\displaystyle u} {\displaystyle u} als auch v {\displaystyle v} {\displaystyle v} ist und am weitesten von der Wurzel r {\displaystyle r} {\displaystyle r} entfernt liegt, also die größtmögliche Tiefe besitzt.

Ziel ist es, einen gegebenen Baum T {\displaystyle T} {\displaystyle T} effizient so vorzuverarbeiten, dass LCA ( u , v ) {\displaystyle (u,v)} {\displaystyle (u,v)} Anfragen möglichst schnell beantwortet werden können.

Entwicklung (Geschichte)

[Bearbeiten | Quelltext bearbeiten]

Das LCA-Problem wurde 1973 erstmals von Alfred Aho, John Hopcroft und Jeffrey Ullman definiert.

Im Jahre 1984 entwickelten Dov Harel und Robert Tarjan die erste effiziente Datenstruktur zur Lösung des LCA-Problems. Dabei wird der Eingabebaum in O ( n ) {\displaystyle {\mathcal {O}}(n)} {\displaystyle {\mathcal {O}}(n)} (siehe Landau-Symbole) vorverarbeitet, so dass die Abfragen in konstanter Zeit, O ( 1 ) {\displaystyle {\mathcal {O}}(1)} {\displaystyle {\mathcal {O}}(1)} beantwortet werden können. Allerdings gilt die Datenstruktur als sehr komplex und schwierig zu implementieren. Tarjan fand später einen einfacheren, wenn auch weniger effizienten Algorithmus, der auf der Union-Find-Struktur basiert und den LCA aus einer vorher berechneten Menge von Knotenpaaren ermittelt (Tarjan’s Offline Least Common Ancestor Algorithm (TOLCA)). Im Jahre 1988 vereinfachten Baruch Schieber und Uzi Vishkin diese Datenstruktur, so dass diese implementierbar wurde und dennoch einen Vorverarbeitungsaufwand von O ( n ) {\displaystyle {\mathcal {O}}(n)} {\displaystyle {\mathcal {O}}(n)} Zeit und einen Abfrageaufwand von O ( 1 ) {\displaystyle {\mathcal {O}}(1)} {\displaystyle {\mathcal {O}}(1)} aufweist.

1993 entdeckten Omer Berkman und Uzi Vishkin einen neuen Weg, das LCA-Problem mit Hilfe von Reduktion und Range Minimum Query (RMQ) zu lösen. Der Zeitaufwand hat auch hier lineare Vorverarbeitungszeit O ( n ) {\displaystyle {\mathcal {O}}(n)} {\displaystyle {\mathcal {O}}(n)} und konstante Abfragezeit O ( 1 ) {\displaystyle {\mathcal {O}}(1)} {\displaystyle {\mathcal {O}}(1)}. Dieser Lösungsansatz wurde 2000 von Michael Bender und Martin Farach-Colton vereinfacht.[2][3]

Anwendungsgebiete

[Bearbeiten | Quelltext bearbeiten]

Die LCA-Ermittlung kann angewendet werden, um den LCA (Last common ancestor, auch Most recent common ancestor, MRCA) von Gen-Bäumen (Bioinformatik) zu ermitteln.[4]

Verallgemeinerung

[Bearbeiten | Quelltext bearbeiten]
Ein gerichteter azyk­lischer Graph mit den ge­mein­samen Vorfahren von x und y in Hell­grün und ihren LCAs in Dun­gkel­ggrün.

Ursprünglich wurde der Begriff des LCA im Zusammenhang mit Bäumen untersucht, doch kann er auch für gerichtete azyk­lische Graphen (englisch directed acyclic graphs, DAGs) definiert werden. Dabei wird davon ausgegangen, dass die Kanten des DAG von den Eltern zu den Kindern führen. Die ursprüngliche Definition von Aït-Kaci et al. (1989)[5] wurde von Bender et al. (2005) vereinfacht.[6]

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Ermittlung des Lowest Common Ancestors mithilfe des RMQ-Algorithmus

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Effiziente Berechnung vom letzten ge­mein­samen Vorfahren und Anwendungen – FU Berlin. Auf: fu-berlin.de – abgerufen am 22. Januar 2023
  2. ↑ Michael A. Bender, Martin Farach-Colton: The LCA problem revisited. In: Proceedings of the 4th Latin American Symposium on Theoretical Informatics. Serie: Lecture Notes in Computer Science, Band 1776, Springer-Verlag, 2000, ISBN 978-3-540-67306-4, S. 88–94; doi:10.1007/10719839_9 (englisch).
  3. ↑ Algorithmen zum Ermitteln des Lowest Common Ancestor (LCA) – FU Berlin (PDF, 638 kB) fu-berlin.de – abgerufen am 10. März 2013
  4. ↑ Jana Hertel, Peter F. Stadler: BIOINF 15-037: The Expansion of Animal MicroRNA Families Revisited. In: bioinf.uni-leipzig.de. Bioinformatics Leipzig, abgerufen am 22. Januar 2023 (englisch). 
  5. ↑ H. Aït-Kaci, R. Boyer, P. Lincoln, R. Nasr: Efficient implementation of lattice operations. In: ACM Transactions on Programming Languages and Systems. 11. Jahrgang, Nr. 1, 1989, S. 115–146, doi:10.1145/59287.59293 (englisch). 
  6. ↑ Michael A. Bender, Martín Farach-Colton, Giridhar Pemmasani, Steven Skiena, Pavel Sumazin: Lowest common ancestors in trees and directed acyclic graphs. In: Journal of Algorithms. 57. Jahrgang, Nr. 2, 2005, S. 75–94, doi:10.1016/j.jalgor.2005.08.001 (englisch). 
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Lowest_Common_Ancestor&oldid=251767097“
Kategorien:
  • Graphentheorie
  • Theoretische Informatik

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id