www.wikidata.de-de.nina.az
Der Begriff Komplexitat wird in der Informatik in verschiedenen Teilbereichen verwendet Die Komplexitatstheorie befasst sich dabei mit dem Ressourcenverbrauch von Algorithmen die Informationstheorie dagegen verwendet den Begriff fur den Informationsgehalt von Daten die Praktische Informatik wiederum bewertet damit Software oder Softwareteile hinsichtlich der Anzahl von Interaktionen Inhaltsverzeichnis 1 Komplexitatstheorie 2 Komplexitat von Daten 3 Softwarekomplexitat 4 Siehe auch 5 EinzelnachweiseKomplexitatstheorie Bearbeiten Hauptartikel Komplexitatstheorie Unter der Komplexitat auch Aufwand oder Kosten eines Algorithmus versteht man in der Komplexitatstheorie seinen Ressourcenbedarf Dieser wird oft in Abhangigkeit von der Lange n displaystyle n nbsp der Eingabe angegeben und fur grosse n displaystyle n nbsp asymptotisch unter Verwendung von Landau Symbolen abgeschatzt Analog wird die Komplexitat eines Problems definiert durch den Ressourcenverbrauch eines optimalen Algorithmus zur Losung dieses Problems Die Schwierigkeit liegt darin dass man alle Algorithmen fur ein Problem betrachten muss um die Komplexitat desselben zu bestimmen Die betrachteten Ressourcen sind fast immer die Anzahl der benotigten Rechenschritte Zeitkomplexitat oder der Speicherbedarf Platzkomplexitat Die Komplexitat kann aber auch bezuglich einer anderen Ressource bestimmt werden Dabei interessiert nicht der Aufwand eines konkreten Programms auf einem bestimmten Computer sondern viel mehr wie der Ressourcenbedarf wachst wenn mehr Daten zu verarbeiten sind also z B ob sich der Aufwand fur die doppelte Datenmenge verdoppelt oder quadriert Skalierbarkeit Oft ist es schwierig eine Funktion anzugeben die allgemein zu jeder beliebigen Eingabe fur ein Problem den zugehorigen Aufwand an Ressourcen angibt Daher begnugt man sich in der Regel damit konstante Faktoren und Summanden auszulassen und sich lediglich mit dem Verhalten in Abhangigkeit der Eingabelange n w displaystyle n w nbsp zu befassen Die Eingabelange wird hierbei in der Anzahl an Bits gemessen die benotigt werden um die Information darzustellen Eine weitere Vereinfachung ist die Annahme dass alle elementaren Operationen dieselbe Zeit benotigen sodass z B die Addition zweier Zahlen und die Multiplikation zweier Zahlen genau eine Zeiteinheit kostet Algorithmen und Probleme werden in der Komplexitatstheorie gemass ihrer so bestimmten Komplexitat in so genannte Komplexitatsklassen eingeteilt Diese sind ein wichtiges Werkzeug um bestimmen zu konnen welche Probleme gleich schwierig beziehungsweise welche Algorithmen gleich machtig sind Dabei ist die Frage ob zwei Komplexitatsklassen gleichwertig sind oft nicht einfach zu entscheiden zum Beispiel P NP Problem Die Komplexitat eines Problems ist zum Beispiel entscheidend fur die Kryptographie und insbesondere fur die asymmetrische Verschlusselung So verlasst sich zum Beispiel das RSA Verfahren auf die Vermutung dass die Primfaktorzerlegung von grossen Zahlen nur mit sehr viel Aufwand zu berechnen ist anderenfalls liesse sich aus dem offentlichen Schlussel leicht der private Schlussel errechnen Ein Problem das selbst fur einen Computer von der Grosse der Erde nicht losbar ist wird als transcomputationales Problem bezeichnet Komplexitat von Daten BearbeitenIn der Informationstheorie versteht man unter der Komplexitat von Daten bzw einer Nachricht ihren Informationsgehalt Neben der klassischen Definition dieser Grosse nach Claude Shannon gibt es verschiedene andere Ansatze zu bestimmen wie viel Information in einer Datenmenge enthalten ist Zum einen gibt es die so genannte Kolmogorow Komplexitat auch Algorithmische Komplexitat oder Beschreibungskomplexitat die den Informationsgehalt als die Grosse des kleinsten Programms definiert das in der Lage ist die betrachteten Daten zu erzeugen Sie beschreibt eine absolut optimale Komprimierung der Daten Eine Prazisierung des Ansatzes Andrei Kolmogorows bezuglich des Maschinenmodells bietet die Algorithmische Informationstheorie von Gregory Chaitin Dagegen betrachtet Algorithmische Tiefe auch Logische Tiefe die Zeitkomplexitat eines optimalen Algorithmus zur Erzeugung der Daten als Mass fur den Informationsgehalt Softwarekomplexitat BearbeitenProgramm oder Softwarekomplexitat umfasst viele Eigenschaften einer Software die einen Einfluss auf interne Interaktionen haben Meist wird zwischen den Begriffen Komplex und Kompliziert unterschieden Kompliziert bedeutet in diesem Zusammenhang fur Programmierer schwer zu verstehen also eine interne Eigenschaft des Codes der Algorithmen des technischen Designs oder der Architektur der Software Komplexitat wiederum beschreibt die Eigenschaften der Interaktionen zwischen Teilen der Software Mit der Anzahl der Abhangigkeiten zwischen Teilen der Software steigt die Anzahl der Interaktionen und somit die Komplexitat der Software Das Verstandnis der Abhangigkeiten und Interaktionen hat einen grossen Einfluss auf das gesamte Verstandnis der Software darum wird Software wenn sie komplexer wird auch schwerer zu verstehen also komplizierter Die Komplexitat einer Software kann einen Grad erreichen wo es fur Menschen unmoglich ist die Software vollumfanglich zu verstehen Ahnlich dazu erhoht eine hohe Komplexitat das Risiko dass Anderungen an einer Stelle ungewollte Auswirkungen an einer anderen Stelle bewirken Das fuhrt zu einer hoheren Wahrscheinlichkeit Fehler in die Software einzubauen und zu grosseren Aufwanden die Ursache dieser Fehler zu finden bzw diese zu beheben Im schlechtesten Fall kann die Komplexitat dazu fuhren dass die Software de facto unwartbar wird da die Risiken von Anderungen deren Nutzen ubersteigen Die Abhangigkeit zwischen Komplexitat und Wartungsaufwand wurden durch Meir Manny Lehman untersucht und in seinen Gesetzen der Softwareevolution 1980 zusammengefasst 1 Meir Manny Lehman und Laszlo Belady untersuchten auch eine Reihe von Softwaremetriken zur Messung des Zustandes einer Software 2 Die folgenden Softwaremetriken messen die Komplexitat von Daten und Algorithmen in der Informatik auf unterschiedliche Art und Weise Chapins Data Metrik Misst den Anteil der Bedingungs und Ergebnisdaten an allen verwendeten Daten Elshofs Data Flow Metrik Misst die Anzahl der Datenverwendungen relativ zur Anzahl der Daten Sie ist verwandt mit hoher Kohasion Hohe Kohasion entspricht einer haufigen Verwendung von moglichst wenig Variablen Cards Data Access Metrik Misst das Verhaltnis der Anzahl der Zugriffe auf externe Dateien und Datenbanken relativ zur Anzahl derselben Henrys Interface Metrik Misst die Anzahl der Zugriffe von fremden Funktionen Methoden in ein Modul englisch fan in beziehungsweise Anzahl der Aufrufe fremder Funktionen Methoden aus einem Modul englisch fan out relativ zu allen Funktionen Methoden des Moduls 3 McCabe Metrik bzw Eulers Mass bzw Zyklomatische Komplexitat Misst die Komplexitat des Ablaufgraphen als Verhaltnis der Kantenanzahl zur Knotenanzahl McClures Decision Metrik Misst den Anteil der Entscheidungen an allen Anweisungen Sneeds Branching Metrik Misst das Verhaltnis der Anzahl Verzweigungen jeglicher Art zur Summe aller Anweisungen Halstead Metrik Misst die Anzahl der verschiedenen Worter hier Anweisungstypen relativ zur Anzahl verwendeter Worter hier Anweisungen Sie behauptet je weniger verschiedene Anweisungstypen man verwendet desto einfacher ist der Code was sehr umstritten ist NPATH Zahlt die azyklischen Pfade durch Funktionen 4 Cognitive Complexity Wird von SonarQube zur Messung der Komplexitat von Programmen und Programmteilen gegenuber anderen Komplexitatsmetriken empfohlen 5 Sechs Komplexitatsmetriken fur objektorientiertes Design wurden von S R Chidamber und C F Kemerer 1994 vorgestellt 6 Gewichtete Methoden pro Klasse Kopplung zwischen Objektklassen Antworten pro Klasse Anzahl an Subklassen Tiefe des Vererbungsbaumes und ungenugende Kohasion von Methoden Siehe auch BearbeitenEffizienzEinzelnachweise Bearbeiten M M Lehman Programs Life Cycles and Laws of Software Evolution In Proceedings of the IEEE 68 1980 S 1060 1076 englisch Meir Manny Lehman Les A Belady Program Evolution Processes of Software Change Hrsg Academic Press Inc 1985 ISBN 978 0 12 442441 8 englisch 538 S S Henry D Kafura Software Structure Metrics Based on Information Flow In IEEE Hrsg IEEE Transactions on Software Engineering SE 7 Nr 5 September 1981 ISSN 1939 3520 S 510 518 doi 10 1109 TSE 1981 231113 englisch the procedure length multiplied by the square of fan in multiplied by fan out Brian A Nejmeh NPATH a measure of execution path complexity and its applications In Communications of the ACM Band 31 Nr 2 Februar 1988 doi 10 1145 42372 42379 G Ann Campbell Cognitive Complexity A new way of measuring understandability Hrsg SonarSource 2016 englisch 20 S sonarsource com PDF 214 kB abgerufen am 10 Marz 2020 S R Chidamber C F Kemerer A Metrics Suite for Object Oriented Design In IEEE Hrsg IEEE Transactions on Software Engineering Band 20 Nr 6 Juni 1994 ISSN 1939 3520 S 476 493 doi 10 1109 32 295895 englisch Abgerufen von https de wikipedia org w index php title Komplexitat Informatik amp oldid 235264518