<?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=Effizienz_%28Informatik%29</id>
	<title>Effizienz (Informatik) - 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=Effizienz_%28Informatik%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Effizienz_(Informatik)&amp;action=history"/>
	<updated>2026-06-04T03:40:29Z</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=Effizienz_(Informatik)&amp;diff=190917&amp;oldid=prev</id>
		<title>imported&gt;Skranon am 11. Oktober 2025 um 17:12 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Effizienz_(Informatik)&amp;diff=190917&amp;oldid=prev"/>
		<updated>2025-10-11T17:12:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Quelle}}&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;&amp;#039;Effizienz&amp;#039;&amp;#039;&amp;#039; eines [[Algorithmus]] ist seine Sparsamkeit bezüglich [[Ressource#Informatik|Ressourcen]], [[Laufzeit (Informatik)|Rechenzeit]] und [[Speicherkapazität|Speicherplatz]], die jener zur Lösung eines festgelegten [[Problem]]s beansprucht. Jedoch sind effiziente Algorithmen meist schwerer zu verstehen, da sie oft auf ausgeklügelten [[Idee]]n beruhen. Effiziente Algorithmen sind schnell in der Lösung des entsprechenden Problems.&lt;br /&gt;
&lt;br /&gt;
== Effizienz von Algorithmen ==&lt;br /&gt;
=== Bewertungsgrößen für die Effizienzbewertung von Algorithmen ===&lt;br /&gt;
==== Von Implementierung, Hardware und Eingabedaten unabhängige Bewertungsgrößen ====&lt;br /&gt;
Effizienz ist nicht „bloßes Charakteristikum“ eines Algorithmus. Die Effizienz wird vielmehr auch durch die konkrete [[Implementierung]] in der jeweiligen [[Programmiersprache]], des Weiteren durch die zugrundeliegende [[Hardware]] ebenso wie durch die Eingabedaten beeinflusst. Deshalb zieht man für die Effizienzbewertung von Algorithmen von Implementierung, Hardware und Eingabedaten unabhängige Bewertungsgrößen heran:&lt;br /&gt;
* [[Laufzeiteffizienz]]: Bewertungsgröße ist die [[Laufzeit (Informatik)|Laufzeit]] eines Algorithmus auf Basis der benötigten Rechenschritte&lt;br /&gt;
* [[Speichereffizienz]]: Bewertungsgröße ist der [[Datenmenge|Speicherbedarf]] durch [[Variable (Programmierung)|Variablen]]&lt;br /&gt;
&lt;br /&gt;
==== Die Landau-Notation ====&lt;br /&gt;
{{Hauptartikel|Landau-Notation}}&lt;br /&gt;
&lt;br /&gt;
Da die Anzahlen der benötigten [[Takt]]e für elementare [[Operator (Mathematik)|Operationen]] für unterschiedliche [[Chipsatz|Chipsets]] auf den (Main-)Boards von [[Rechner]]n variieren, sich in der Regel voneinander aber nur um einen konstanten Faktor unterscheiden und ferner der Laufzeit- und Platzbedarf für kleine Eingaben in der Regel unerheblich ist, nutzt man die sogenannte [[Landau-Notation]], gelegentlich auch „Omikron-Kalkül“ genannt, um die Effizienz eines Algorithmus überschlägig zu ermitteln. Dadurch ist das Laufzeitverhalten und der Platzbedarf unter Vernachlässigung eines konstanten Vorfaktors für große Eingabegrößen darstellbar, was jedoch über eine Praxistauglichkeit des Algorithmus noch nichts aussagt, da in der Praxis meistens mit relativ kleinen Eingabegrößen gearbeitet wird, die Landau-Notation jedoch sehr große Eingabegrößen betrachtet.&lt;br /&gt;
&lt;br /&gt;
==== Theorie trifft auf Praxis ====&lt;br /&gt;
Der Begriff effizienter Algorithmus wird in der [[Theoretische Informatik|theoretischen Informatik]] recht schwammig benutzt. Meist meint man damit einen Algorithmus, dessen Laufzeit polynomial in der Größe der Eingabe ist, aber auch solche Algorithmen können praktisch unbrauchbar sein, wenn beispielsweise der feste Exponent &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; des zugehörigen [[Polynom]]s &amp;lt;math&amp;gt;n^k&amp;lt;/math&amp;gt; zu groß ist. Es gibt sogar Linearzeit-Algorithmen, die praktisch unbrauchbar sind, weil der konstante Vorfaktor &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; in der Darstellung &amp;lt;math&amp;gt;c\cdot n&amp;lt;/math&amp;gt; zu groß ist. Somit kann es sein, dass, obwohl ein Algorithmus &amp;#039;&amp;#039;A&amp;#039;&amp;#039; in der Theorie deutlich effizienter ist als ein Algorithmus &amp;#039;&amp;#039;B&amp;#039;&amp;#039;, in der Praxis immer nur Algorithmus &amp;#039;&amp;#039;B&amp;#039;&amp;#039; verwendet wird, weil die zu bearbeitenden Eingabegrößen nicht groß genug sind, damit Algorithmus &amp;#039;&amp;#039;A&amp;#039;&amp;#039; seine Vorteile ausspielen kann.&lt;br /&gt;
&lt;br /&gt;
=== Laufzeiteffizienz ===&lt;br /&gt;
{{Lückenhaft}}&lt;br /&gt;
&lt;br /&gt;
=== Speichereffizienz ===&lt;br /&gt;
Die Menge belegten Speichers einer [[Datenstruktur]] muss immer im Verhältnis zur Häufigkeit ihres Auftretens zur Laufzeit eines Programms bewertet werden. Der Aufwand einer Optimierung ist häufig nur dann sinnvoll, wenn viele Objekte des betrachteten Typs im Hauptspeicher angelegt bzw. dauerhaft gespeichert werden. In diesem Fall kann durch Reduzierung des Speicherverbrauchs eine Senkung der Kosten einerseits und eine Erhöhung des Systemdurchsatzes andererseits erreicht werden.&lt;br /&gt;
&lt;br /&gt;
Eine Reduzierung des Speicherverbrauchs von Objekten kann eine Verschlechterung der Ausführungsdauer bestimmter Zugriffe auf die zugrundeliegende Datenstruktur haben, nämlich dann, wenn Teilinformationen zusammengefasst werden, um in Basistypen kompakt gespeichert zu werden. Die Effizienz der eingeführten [[Code|Kodierungsoperationen]] spielt hierbei eine Rolle. Die relative Häufigkeit bestimmter Zugriffe in einem typischen Programmlauf muss beachtet werden, um in der Summe optimal zu sein. Die Operationen auf Daten werden in zwei Kategorien eingeteilt: Lesen und Schreiben. Diese entsprechen dem Dekodieren und Kodieren der Teilinformationen und müssen deshalb getrennt betrachtet werden. Ein zusätzlicher Aspekt spielt durch das Modell des [[Abstrakter Datentyp|abstrakten Datentyps]] hinein: die interne Repräsentation kann gegebenenfalls ohne Umwandlung in die Komponenten verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Ziel ist, eine ausgewogene Lösung zu finden, die Vorteile auf einer Seite nicht mit Effizienzeinbußen auf der anderen Seite bezahlt. Aufwand und Komplexität müssen durch den erzielten Gewinn gerechtfertigt sein. Im Zweifelsfall ist die klare Implementierung der trickreichen vorzuziehen. Das heißt, nicht nur unmittelbarer Ressourcenbedarf des einzelnen Algorithmus zur Laufzeit wird betrachtet, sondern abhängig von den Anforderungen die Effizienz des gesamten Systems.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Ziel ist die Vermeidung von [[Redundanz (Informationstheorie)|Redundanz]] bei der Speicherung von Objektzuständen. Es ist auch zu beachten, dass Redundanz die Wartungsfreundlichkeit vermindert. Allerdings kann gerade gezielt eingesetzte Redundanz bei bestimmten Anwendungen die Zugriffsgeschwindigkeit auf Daten deutlich erhöhen.&lt;br /&gt;
&lt;br /&gt;
=== Effizienzbewertungsauswertung und -beurteilung ===&lt;br /&gt;
Ob ein Algorithmus nun als effizient gelten kann oder nicht, hängt vor allem von der Perspektive ab, aus der man den Algorithmus analysiert und was man über die [[Komplexität (Informatik)|Komplexität]] des vom Algorithmus behandelten Problems weiß.&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann es zu einer Grob-Beurteilung bei der Effizienzbewertung kommen:&lt;br /&gt;
* &amp;#039;&amp;#039;Worst-Case&amp;#039;&amp;#039; – der Algorithmus zeigt das schlechtestmögliche Verhalten zur Lösung eines festgelegten Problems&lt;br /&gt;
* &amp;#039;&amp;#039;Average-Case&amp;#039;&amp;#039; – der Algorithmus zeigt ein durchschnittliches Verhalten zur Lösung eines festgelegten Problems&lt;br /&gt;
* &amp;#039;&amp;#039;Best-Case&amp;#039;&amp;#039; – der Algorithmus zeigt das bestmögliche Verhalten zur Lösung eines festgelegten Problems&lt;br /&gt;
&lt;br /&gt;
Entsprechende Kenntnisse zu Algorithmen und Komplexität sind erforderlich, um zu derartigen Grobbeurteilungen zu gelangen.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Armin P. Barth: &amp;#039;&amp;#039;Algorithmik für Einsteiger: Für Studierende, Lehrer und Schüler in den Fächern Mathematik und Informatik.&amp;#039;&amp;#039; 2., überarb. Aufl., Springer Spektrum, Wiesbaden 2013, ISBN 978-3-658-02281-5, „Kap.3 Effizienz von Algorithmen“: S. 95–135.&lt;br /&gt;
* Volker Heun: &amp;#039;&amp;#039;Grundlegende Algorithmen: Einführung in den Entwurf und die Analyse effizienter Algorithmen.&amp;#039;&amp;#039; 2., verb. u. erw. Aufl., Vieweg+Teubner Verl., Wiesbaden 2003, ISBN 978-3-528-13140-1.&lt;br /&gt;
* [[Christian Wagenknecht]]: &amp;#039;&amp;#039;Algorithmen und Komplexität.&amp;#039;&amp;#039; Fachbuchverl. Leipzig im Carl-Hanser-Verl., München 2003, ISBN 3-446-22314-2.&lt;br /&gt;
* Ingo Wegener: &amp;#039;&amp;#039;Komplexitätstheorie: Grenzen der Effizienz von Algorithmen.&amp;#039;&amp;#039; Springer Verl., Berlin 2003, ISBN 3-540-00161-1.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Praktische Informatik]]&lt;br /&gt;
[[Kategorie:Theoretische Informatik]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Skranon</name></author>
	</entry>
</feed>