12.2. Komplexität, Mächtigkeit und Aufwandsbetrachtungen - Effizienz |
![]() |
![]() |
Letztmalig dran rumgefummelt: 25.06.23 10:34:53 |
![]() |
Vor dem Herangehen an ein
Problem steht für den Informatiker die Frage, ob es sich bei der
vorliegenden Aufgabe überhaupt um ein lösbares Problem handelt. Fällt es
dann grundsätzlich in die Klasse der lösbaren Aufgaben, muss eingeschätzt
werden, mit welchem Aufwand ein sinnvolles, evtl. akzeptabel unvollständiges
Ergebnis erreicht werden kann. So wird es in absehbarer Zeit definitiv kein
perfektes Übersetzungsprogramm geben, was einfach daran liegt, das Sprachen
im Kontext betrachtet werden müssen. Das aber können derzeitige Computer und
Software nicht leisten. Anders gesagt: es gibt Probleme, welche man mit heute möglichem Aufwand lösen lassen, es existieren solche, die sich heute nicht, aber evtl. morgen schon lösen lassen und da ist die Restmenge der Probleme, welche sich generell nicht lösen lässt, weil es gar nicht geht! |
||||||
![]() |
1. Komplexität 2. Mächtigkeit 3. Aufwandsbetrachtungen 4. Effektivität & Effizienz 5. Laufzeitproblematik 6. Verwandte Themen |
||||||
![]() |
|
||||||
![]() |
Quellen:
|
||||||
![]() |
„Die rohe Gewalt der computerisierten Zahlenfresserei allein kann das Unendliche nicht erreichen.“ Simon Singh in „Fermats letzter Satz“ |
||||||
![]() |
Problemlösungsstrategien sowie Lösungsalgorithmen gibt's in jedem Olsenbande-Film - nach Egon Olsen gehören dazu: "... Kühnheit, Tatkraft, Entschlossenheit sowie Mut und Beherrschtheit!" | ||||||
![]() |
Riemannsche
Vermutung letztes Fermatsches Theorem Goldbach-Vermutung Hilbert-Raum Ramanujan-Tau-Funktion Euklids Algorihmus Hardy-Littlewood-Kreismethode Fourier-Reihen Gödel-Nummerierung Siegel-Nullstellen Selbergsche Spurformel Sieb des Eratosthenes Mersenne-Primzahlen Euler-Produkt Gaußsche ganze Zahlen |
||||||
![]() |
David Hillberts 23 wichtige mathematische Probleme des zwanzigsten Jahrhunderts | ||||||
![]() |
... und hier sind sie! | ||||||
![]() |
sieben aktuelle mathematische Probleme des 21. Jahrhunderts - Millenium-Probleme |
1. Komplexität eines Problems |
![]() |
![]() |
![]() |
![]() |
Komplex ist ein Problem, wenn die Anzahl der zur betrachteten Lösung benötigten Operationen hoch - im Einzelfall extrem hoch ist (wird). Komplexe Probleme fallen schon bei geringer Mächtigkeit in die Klasse der nichtlösbaren Probleme. | ||||
![]() |
Komplexität ist nix weiter als die Anzahl der in Betracht kommenden Operationen, um zur jeweils aktuellen Lösungsstrategie des Problems zu kommen (diese muss damit noch lange nicht effizient sein) | ||||
![]() |
Komplexität ist schlicht die Anzahl der benötigten Operationen zum aktuellen Lösungsalgorithmus | ||||
![]() |
|
2. Mächtigkeit eines Problems |
![]() |
![]() |
![]() |
![]() |
Mächtig ist ein Problem, wen die Anzahl der zur betrachteten Lösung benötigten Operanden hoch - im Einzelfall extrem hoch ist (wird). Mächtige Probleme fallen schon bei geringer Komplexität in die Klasse der nichtlösbaren Probleme. |
![]() |
Mächtigkeit ist nix weiter als die Anzahl der in Betracht kommenden Elemente, um zur jeweils aktuellen Lösungsstrategie des Problems zu kommen (diese muss damit noch lange nicht minimal sein) |
![]() |
Mächtigkeit ist schlicht die Anzahl der benötigten Operanden zum aktuellen Lösungsalgorithmus |
![]() |
Mächtigkeit kann uns in drei verschiedenen Formen
gegenüber treten:
|
3. Aufwandsbetrachtungen eines Problems |
![]() |
![]() |
![]() |
![]() |
Aufwand ist das Produkt von Komplexität und Mächtigkeit (wobei die Mächtigkeit die Anzahl der Ausgangsfaktoren darstellt), wenn wir die Komplexität (was sie meist auch ist) als Wiederholung eine Blockes identischer Anweisungen auffassen. |
![]() |
|
![]() |
Beide Übel für sich allein genommen (Komplexität oder Mächtigkeit) sind schon gewaltige Schranken zur Lösung von Problemen - oft aber finden sie auch noch zueinander und machen so Aufgabenstellungen praktisch unmöglich - dies zumindest in einem sinnvollen Zeitraum. Um auf dem Computer Algorithmen abarbeiten zu können, muss Aufwand betrieben werden. Klar ist auch, dass der Aufwand mit steigender Kompliziertheit aber auch mit größerer Menge von Daten und/oder mathematischer Operationen wächst (der Algorithmus wird komplexer!). Schnell wird der Ruf nach größeren und schnelleren Computern laut, vergessen wird vom Laien, dass die Verringerung des Aufwandes - evtl. noch gekoppelt mit leistungsfähigeren Maschinen die Lösung u. U. bringen kann. |
![]() |
Der Aufwand ist ein Ausdruck für die Komplexität (Kompliziertheit)
von Algorithmen. Algorithmische Lösung von Problemen wird auf Computern
durch Zeit und Speicherbelastung bestimmt. Durch zwei Maße kann der Aufwand charakterisiert werden:
Relation von Problemgröße und zu betreibenden Aufwand bei der Problemlösung |
![]() |
Was ist Aufwand im
Sinne der Informatik? Aufwand zur Lösung von Problemen durch Algorithmen auf Computern:
Aufwand muss messbar gemacht werden - also benötigen wir messbare Kriterien! In der Informatik:
Zeitbestimmende Maße beim Computer sind:
Aufwandsbezüge auf die Zeiteinheiten
|
![]() |
Aufwandsanalyse Wie oben erwähnt wurde, besitzen die meisten Algorithmen einen Hauptparameter N, (gewöhnlich die Anzahl der zu verarbeitenden Datenelemente) der die Laufzeit am stärksten beeinflusst. Der Parameter N könnte der Grad eines Polynoms sein, die Größe einer zu sortierenden oder zu durchsuchenden Datei, die Anzahl der Knoten in einem Graph usw. Bei praktisch allen Algorithmen in diesem Buch ist die Laufzeit zu einer der folgenden Funktionen proportional: Aufwand direkt: ein Argument mehr, ein Schritt mehr - wir sprechen vom Aufwand 1 Die meisten Anweisungen in der Mehrzahl der Programme werden einmal oder höchstens einige Male ausgeführt. Falls alle Anweisungen eines Programms diese Eigenschaft haben, sagen wir, dass seine Laufzeit konstant ist. Offensichtlich ist das die Situation, die bei der Entwicklung von Algorithmen angestrebt werden sollte. log N Wenn die Laufzeit eines Programms logarithmisch ist, wird das Programm mit wachsendem N allmählich langsamer. Diese Laufzeit tritt gewöhnlich bei Programmen auf, die ein umfangreiches Problem lösen, indem sie es in ein kleineres Problem umwandeln, wobei sie den Umfang auf einen gewissen konstanten Anteil verringern. Für unsere Belange kann angenommen werden, dass die Laufzeit kleiner ist als eine »große« Konstante. Die Basis des Logarithmus beeinflusst die Konstante, jedoch nicht sehr: Hat N den Wert eintausend, so hat log N zur Basis 10 den Wert 3, zur Basis 2 den Wert 10; beträgt N eine Million, so ist log N jeweils doppelt so groß. Bei jeder Verdopplung von N wächst log N um einen gewissen konstanten Wert; eine Verdopplung des Wertes findet jedoch erst statt, wenn N auf N2 angewachsen ist. Aufwand N: ein Argument mehr, N Schritte mehr - wir sprechen vom Aufwand N Wenn die
Laufzeit eines Programms linear ist, entfällt im allgemeinen ein
kleiner Anteil der Verarbeitung auf jedes Element der
Eingabedaten. Wenn N eine Million beträgt, dann ist die Laufzeit
ebenso groß. Jedes mal, wenn N sich verdoppelt, trifft das auch für
die Laufzeit zu. Dies ist die optimale Situation für einen
Algorithmus, der N Eingabedaten verarbeiten muss (oder N
Ausgabewerte erzeugen muss). N2 quadratischer Aufwand Wenn die Laufzeit eines Algorithmus quadratisch ist, lässt er sich praktisch nur für relativ kleine Probleme anwenden. Quadratische Laufzeiten sind typisch für Algorithmen, die alle paarweisen Kombinationen von Datenelementen verarbeiten (eventuell in einer doppelt verschachtelten Schleife). N3 kubischer Aufwand Wenn N
eintausend beträgt, ist die Laufzeit eine Million. Wenn N sich
verdoppelt, vervierfacht sich die Laufzeit. Literatur: Schülerduden "Die Informatik - Ein Sachlexikon für die Schule", Bibliografisches Institut & F. A. Brockhaus AG, 2. Auflage; 1991 |
![]() |
Algorithmen unterscheiden sich bei ihren Lösungsverfahren, ihrer Mächtigkeit und ihrer Komplexität ... |
![]() |
... kurz: sie unterscheiden sich durch den zu betreibenden Aufwand |
![]() |
überproportionaler Aufwand |
4. Effektivität & Effizienz |
![]() |
![]() |
![]() |
![]() |
Effizienz ist eine Art Wirkungsgrad eines Algorithmus. Nicht nur der Aufwand, sondern auch die Eleganz der Ausführungsroutine wird hier betrachtet. Daneben werden auch Speicherplatzbedarf, Anzahl benötigter Hilfsvariablen und Felder registriert. Einfach die Menge der benötigten Ressourcen, welche benötigt werden, um zu einem sinnvollen Ergebnis zu kommen, wird mit betrachtet. | ||||||
![]() |
|
||||||
![]() |
effektive Algorithmen lösen Probleme in minimal möglicher Zeit mit beliebigem Aufwand sowie hinreichender Sicherheit unter Nichtbeachtung des "ökonomischem Einsatzes" von Ressourcen | ||||||
![]() |
|||||||
![]() |
|||||||
![]() |
Algorithmen unterscheiden sich bei ihren Lösungsverfahren in dem benötigtem Aufwand an Ressourcen und Intelligenz (... oder Raffinesse) | ||||||
![]() |
|
||||||
![]() |
effiziente Algorithmen lösen Probleme in minimal möglicher Zeit mit minimalem Aufwand sowie maximaler Sicherheit unter "ökonomischem Einsatz" von Ressourcen. Und der Informatiker erkennt wie der Mathematiker in richtigen Lösungen, dass die verfahren anfangen, "schön" auszusehen. | ||||||
![]() |
Komplexität ist nix weiter als die Anzahl der in Betracht kommenden Operationen, um zur jeweils aktuellen Lösungsstrategie des Problems zu kommen (diese muss damit noch lange nicht effizient sein) - Effizienz minimiert den Aufwand im Durchschnitt der Fälle | ||||||
![]() |
Komplexität ist schlicht die Anzahl der benötigten Operationen | ||||||
![]() |
Algorithmen unterscheiden sich bei ihren Lösungsverfahren in dem benötigtem Aufwand an Ressourcen und Intelligenz (... oder Raffinesse) |
5. Laufzeitproblematik |
![]() |
![]() |
![]() |
![]() |
Laufzeitproblematisch oder -kritisch sind Algorithmen genau dann, wenn nach dem Start des Programms bis zur endgültigen Lösung ein vertretbarer Zeitaufwand nicht oder nicht unbedingt gegeben ist. Leider gehören in diese Gruppe eine ganze Reihe recht sinnvoller und praktisch auch benötigter Lösungen. Gemein ist ihnen allen, dass der Aufwand zu ihrer Lösung überproportional | ||||||||
![]() |
|||||||||
![]() |
|
6. Verwandte Themen |
![]() |
![]() |
![]() |
![]() |
Das Vorangestellte hilft wirtschaften, löst jedoch kein einziges Problem (allerdings ohne Beachtung der Worst-Case-Strategien wird man auch nicht erfolgreich Software entwickeln und/oder informatische Projekte realisieren können). Deshalb nunmehr das, was wirklich Arbeiten hilft. | ||||||||||||
![]() |
|
||||||||||||
![]() |
|
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost November 2002 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |
Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-) |