<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lowest_Common_Ancestor</id>
	<title>Lowest Common Ancestor - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lowest_Common_Ancestor"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lowest_Common_Ancestor&amp;action=history"/>
	<updated>2026-06-04T16:05:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Lowest_Common_Ancestor&amp;diff=2906403&amp;oldid=prev</id>
		<title>imported&gt;ⵓ: +https ⇄</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lowest_Common_Ancestor&amp;diff=2906403&amp;oldid=prev"/>
		<updated>2025-12-04T19:22:48Z</updated>

		<summary type="html">&lt;p&gt;+https &lt;a href=&quot;/index.php?title=Benutzer:%E2%B5%93/ARreplace&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:ⵓ/ARreplace (Seite nicht vorhanden)&quot;&gt;⇄&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:Lowest common ancestor.svg|mini|hochkant=0.65|In diesem Baum ist der LCA der Knoten &amp;#039;&amp;#039;x&amp;#039;&amp;#039; und &amp;#039;&amp;#039;y&amp;#039;&amp;#039; in Dunkelgrün mar&amp;amp;shy;kiert. Andere ge&amp;amp;shy;mein&amp;amp;shy;same Vorfahren sind in Hellgrün dar&amp;amp;shy;ge&amp;amp;shy;stellt.]]&lt;br /&gt;
Als &amp;#039;&amp;#039;&amp;#039;Lowest Common Ancestor&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Least Common Ancestor&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;LCA&amp;#039;&amp;#039;&amp;#039;), deutsch &amp;#039;&amp;#039;„letzter gemeinsamer [[Out-Tree#Vorfahr|Vorfahre]]“&amp;#039;&amp;#039;, wird in der [[Informatik]] und [[Graphentheorie]] ein Ermittlungskonzept bezeichnet, das einen gegebenen gewurzelten [[Binärbaum|Baum von Datenstrukturen]] effizient vor&amp;amp;shy;ver&amp;amp;shy;arbei&amp;amp;shy;tet, sodass anschließend Anfragen nach dem letzten gemeinsamen Vorfahren für beliebige Knotenpaare in konstanter Zeit beantwortet werden können.&lt;br /&gt;
&lt;br /&gt;
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&amp;amp;shy;fragen für Bäume sind zum Beispiel die Pre-, Post- und Inordertraversierung.&lt;br /&gt;
Ein in diesem Kontext weniger bekanntes algorithmisches Problem ist die Suche nach dem letzten ge&amp;amp;shy;mein&amp;amp;shy;samen Vorfahren (LCA).&amp;lt;ref&amp;gt;[https://www.mi.fu-berlin.de/inf/groups/ag-ti/theses/bachelor_finished/kresse_antonia/index.html &amp;#039;&amp;#039;Effiziente Berechnung vom letzten ge&amp;amp;shy;mein&amp;amp;shy;samen Vorfahren und Anwendungen – FU Berlin&amp;#039;&amp;#039;]. Auf: fu-berlin.de – abgerufen am 22. Januar 2023&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Definition des LCA ==&lt;br /&gt;
Gegeben sei ein Baum &amp;lt;math&amp;gt;T=(V,E)&amp;lt;/math&amp;gt; mit einem Wurzelknoten &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, insgesamt &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Knoten &amp;lt;math&amp;gt;(|V| = n )&amp;lt;/math&amp;gt; und einer Höhe &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;. Der Lowest Common Ancestor (LCA) zweier Knoten &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; ist derjenige Knoten, der ein Elternknoten von sowohl &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; als auch &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; ist und am weitesten von der Wurzel &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; entfernt liegt, also die größtmögliche Tiefe besitzt.&lt;br /&gt;
&lt;br /&gt;
Ziel ist es, einen gegebenen Baum &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; effizient so vorzuverarbeiten, dass LCA &amp;lt;math&amp;gt;(u,v)&amp;lt;/math&amp;gt; Anfragen möglichst schnell beantwortet werden können.&lt;br /&gt;
&lt;br /&gt;
== Entwicklung (Geschichte) ==&lt;br /&gt;
Das LCA-Problem wurde 1973 erstmals von [[Alfred Aho]], [[John Hopcroft]] und [[Jeffrey Ullman]] definiert.&lt;br /&gt;
&lt;br /&gt;
Im Jahre 1984 entwickelten [[Dov Harel]] und [[Robert Tarjan]] die erste effiziente Datenstruktur zur Lösung des LCA-Problems. Dabei wird der Eingabebaum in &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; (siehe [[Landau-Symbole]]) vorverarbeitet, so dass die Abfragen in konstanter Zeit, &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; Zeit und einen Abfrageaufwand von &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; aufweist.&lt;br /&gt;
&lt;br /&gt;
1993 entdeckten [[Omer Berkman]] und Uzi Vishkin einen neuen Weg, das LCA-Problem mit Hilfe von Reduktion und [[Range Minimum Query|Range Minimum Query (RMQ)]] zu lösen. Der Zeitaufwand hat auch hier lineare Vorverarbeitungszeit &amp;lt;math&amp;gt;\mathcal{O}(n)&amp;lt;/math&amp;gt; und konstante Abfragezeit &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt;. Dieser Lösungsansatz wurde 2000 von [[Michael Bender]] und [[Martin Farach-Colton]] vereinfacht.&amp;lt;ref name=&amp;quot;Bender2000&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;[https://page.mi.fu-berlin.de/alt/vorlesungen/sem09/Algorithmen%20zum%20Ermitteln%20des%20Lowest%20Common%20Ancestor_M2.pdf &amp;#039;&amp;#039;Algorithmen zum Ermitteln des Lowest Common Ancestor (LCA) – FU Berlin&amp;#039;&amp;#039;] (PDF, 638 kB) fu-berlin.de – abgerufen am 10. März 2013&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendungsgebiete ==&lt;br /&gt;
Die LCA-Ermittlung kann angewendet werden, um den LCA (Last common ancestor, auch [[Most recent common ancestor]], MRCA) von [[Phylogenetischer Baum|Gen-Bäumen]] ([[Bioinformatik]]) zu ermitteln.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Jana Hertel, Peter F. Stadler |url=https://www.bioinf.uni-leipzig.de/publications/supplements/15-037 |titel=BIOINF 15-037: The Expansion of Animal MicroRNA Families Revisited |werk=bioinf.uni-leipzig.de |hrsg=Bioinformatics Leipzig |sprache=en |abruf=2023-01-22}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verallgemeinerung ==&lt;br /&gt;
[[Datei:Lowest common ancestors in a DAG.svg|mini|hochkant=0.65|Ein [[Gerichteter azyklischer Graph|gerichteter azyk&amp;amp;shy;lischer Graph]] mit den ge&amp;amp;shy;mein&amp;amp;shy;samen Vorfahren von &amp;#039;&amp;#039;x&amp;#039;&amp;#039; und &amp;#039;&amp;#039;y&amp;#039;&amp;#039; in Hell&amp;amp;shy;grün und ihren LCAs in Dun&amp;amp;shy;gkel&amp;amp;shy;ggrün.]]&lt;br /&gt;
Ursprünglich wurde der Begriff des LCA im Zusammenhang mit Bäumen untersucht, doch kann er auch für [[Gerichteter azyklischer Graph|gerichtete azyk&amp;amp;shy;lische Graphen]] ({{enS|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 &amp;#039;&amp;#039;et&amp;amp;nbsp;al.&amp;#039;&amp;#039; (1989)&amp;lt;ref name=&amp;quot;Ait1998&amp;quot; /&amp;gt; wurde von Bender &amp;#039;&amp;#039;et&amp;amp;nbsp;al.&amp;#039;&amp;#039; (2005) vereinfacht.&amp;lt;ref name=&amp;quot;Bender2005&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.it-cow.de/post/Ermittlung-des-Lowest-Common-Ancestors-mithilfe-des-RMQ-Algorithmus-WIP.aspx Ermittlung des Lowest Common Ancestors mithilfe des RMQ-Algorithmus]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Ait1998&amp;quot;&amp;gt;&lt;br /&gt;
{{cite journal |first1=H. |last1=Aït-Kaci |first2=R. |last2=Boyer |first3=P. |last3=Lincoln |first4=R. |last4=Nasr |title=Efficient implementation of lattice operations |journal=ACM Transactions on Programming Languages and Systems |volume=11 |issue=1 |pages=115–146 |date=1989 &amp;lt;!--|url=http://hassan-ait-kaci.net/pdf/encoding-toplas-89.pdf --&amp;gt; |doi=10.1145/59287.59293&amp;lt;!--|citeseerx=10.1.1.106.4911 |s2cid=2931984--&amp;gt; |language=en }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Bender2000&amp;quot;&amp;gt;&lt;br /&gt;
Michael A. Bender, Martin Farach-Colton: &amp;#039;&amp;#039;The LCA problem revisited.&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;Proceedings of the 4th Latin American Symposium on Theoretical Informatics.&amp;#039;&amp;#039; Serie: &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Band 1776, Springer-Verlag, 2000, ISBN 978-3-540-67306-4, S.&amp;amp;nbsp;88–94; [[doi:10.1007/10719839_9]] ({{enS}}).&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Bender2005&amp;quot;&amp;gt;&lt;br /&gt;
{{cite journal |last1=Bender |first1=Michael A. |first2=Martín |last2=Farach-Colton |first3=Giridhar |last3=Pemmasani |first4=Steven |last4=Skiena |first5=Pavel |last5=Sumazin |title=Lowest common ancestors in trees and directed acyclic graphs |journal=Journal of Algorithms |volume=57 |issue=2 |year=2005 |pages=75–94 &amp;lt;!--|url=http://www.cs.sunysb.edu/~bender/pub/JALG05-daglca.pdf--&amp;gt; |doi=10.1016/j.jalgor.2005.08.001 |language=en }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Graphentheorie]]&lt;br /&gt;
[[Kategorie:Theoretische Informatik]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ⵓ</name></author>
	</entry>
</feed>