/


Kartei Details

Karten 83
Sprache Deutsch
Kategorie Informatik
Stufe Universität
Erstellt / Aktualisiert 19.01.2016 / 01.03.2016
Weblink
https://card2brain.ch/box/algorithmen_und_datenstrukturen_3_semester
Einbinden
<iframe src="https://card2brain.ch/box/algorithmen_und_datenstrukturen_3_semester/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Wie kann der Algorithmusbegriff informell definiert werden?

- eindeutige Handlungsvorschrift

- löst eine Klasse von Problemen

- aus endlich vielen, wohldefinierten Handlungsvorschriften

- Überführung einer bestimmten Eingabe in eine bestimmte Ausgabe

Welche Schritte führen von einer Problemklasse zu einem auf dem Computer ausführbaren Programm zur Lösung dieses Problems?

Problemklasse --> Lösungsidee --> (Formalisierung/Beweis) --> Algorithmus --> (Programmierung) --> Programm --> (Compilierung/Interpretation) --> Computer

Welche Eigenschaften besitzen Algorithmen und was bedeuten sie?

- finit (statisch): Beschreibung des Algorithmus besitzt endliche Länge

- finit (dynamisch): zu jedem Zeitpunkt nur endlich viel Speicher benötigt

- effektiv: jeder Algorithmusschritt ist tatsächlich ausführbar

- reproduzierbar: unabhängig von einer speziellen Implementierung

- terminierend: nach endlich vielen Schritten wird für jede Eingabe ein Ergebnis geliefert

- korrekt

- deterministisch: Verfahrensablauf zu jedem Zeitpunkt fest vorgeschrieben

- determiniert: gleiche Eingaben führen immer zum gleichen Ergebnis

- effizient: sparsamer Umgang mit Ressourcen

Wie verläuft der Design- und Analyseprozess eines Algorithmus'?

1.) Problem verstehen

2.) Entscheidung über Computer-Ressourcen, exakte oder Näherungslösung, Algorithmen-Design-Technik

3.) Algorithmusentwurf

4.) Beweis der Korrektheit (von hier möglicherweise Zurückgehen zu 2. oder 3. erforderlich)

5.) Analyse des Algorithmus' (von hier möglicherweise Zurückgehen zu 2. oder 3. erforderlich)

6.) Implementierung des Algorithmus

Welche Designtechniken gibt es für Algorithmen?

- Brute Force

- Decrease-and-Conquer

- Divide-and-Conquer

- Transform-and-Conquer

- Space and Time Tradeoffs

- Dynamic Programming

- Greedy Technique

- Iterative Improvement

- Backtracking

- Branch and Bound

Was ist eine Datenstruktur?

Organisationsform von Daten im Speicher zur Vereinfachung und zur Steigerung der Effizienz von Algorithmen

Was ist ein abstrakter Datentyp (ADT) und welche Vorteile bringt die Verwendung von ADTs?

Menge von Werten und zugeordneten Operationen, die unabhängig von ihrer Implementierung spezifiziert sind.

Vorteile:

- größere Verständlichkeit durch Abstraktion

- Austauschbarkeit der Implementierungen

- Wiederverwendbarkeit

Wie werden ADTs definiert?

Name

Schnittstelle (Operation 1, Operation 2, ...)

Invariante: relevante, stets (während der Durchführung der Operation darf sie kurz verletzt werden) geltende Eigenschaft, z.B. Sortiertheit der Elemente

Welche Klassen von Operationen gibt es?

- Erzeugung (eines leeren Exemplars)

- Sondierende Operationen (Sondierung des Zustands, ohne ihn zu verändern)

- Verändernde Operationen

- Erschaffende Operationen (Erschaffung eines weiteren Exemplars aus einem oder mehreren bestehenden Exemplaren)

- Zerstörung (Speicherfreigabe)

Wie werden Operationen notiert?

Vorbedingung: Eigenschaft, die vor Ausführung der Operation gelten muss

Nachbedingung: Eigenschaft, die nach Ausführung der Operation zugesichert wird

Zustand einer Datenstruktur: zur Beschreibung der Wirkung einer Operation

Nennen Sie elementare Datenstrukturen!

- Linare Datenstrukturen: Arrays, einfach und doppelt verkettete Listen

- Graphen: als Adjazenzmatrizen oder -listen

- Bäume: Binärbäume, n-äre Bäume

Was zeichnet ein Array aus?

- Sequenz von n Elementen des gleichen Datentyps

- Ablage in zusammenhängenden Hauptspeicherbereichen

- Zugriff auf Elemente über Index

- Hauptvorteil: Elementzugriff in konstanter Zeit

- Hauptnachteil: feste Größe

Was zeichnet eine einfach verkettete Liste aus?

- Folge von beliebig vielen Listenelementen bestehend aus Datenfeld und Next-Zeiger

- Ablage der Elemente verteilt im Hauptspeicher

- Zugriff auf Liste erfolgt über Head-Zeiger

- Listenende durch leeren Next-Zeiger (null) markiert

- Hauptvorteil: flexibles Wachsen (oder Schrumpfen)

- Hauptnachteil: größerer Speicherbedarf durch Zeiger, langsamer

Was zeichnet eine doppelt verkettete Liste aus?

- wie einfach verkettete Liste, zusätzlich noch Zeiger auf vorheriges Listenelement

- Prev-Zeiger des ersten Elementes ist null

- Hauptvorteil: teilweise effizientere Operationen als einfach verkettete Liste

- Hauptnachteil: noch größerer Speicherbedarf als einfach verkettete Liste

Geben Sie die informelle und die formelle Beschreibung eines Graphen an.

informell: Punkte (Knoten) in der Ebene, die durch Liniensegmente (Kanten) verbunden sein können.

formell: Graph G (V,E) mit V= {v1, v2, ... , vn} als nicht-leere, endliche Menge von Knoten und E= {e1, e2, ... , en} als endliche Menge von Kanten der Form (vi, vj)

Welcher Unterschied besteht zwischen gerichteten und ungerichteten Graphen?

ungerichtete Kanten = Linien, kein Unterschied zwischen Kante (u,v) und (v,u) - u und v sind benachbart (adjazent)

gerichtete Kanten = Pfeile, Unterschied zwischen (u,v) und (v,u) - für (u,v) ist v adjezent zu u

Was sind Schleifen und Mehrfachkanten?

Schleife: Kante von einem Knoten auf sich selbst, nach Definition erlaubt

Mehrfachkanten: mehrere Kanten zwischen denselben Knoten, nach Definition nicht erlaubt, falls benötigt --> Erweiterung zu Multigraphen

Was lässt sich über die Kantendichte sagen?

vollständiger Graph: alle erlaubten Kanten vorhanden

dichter Graph: nur wenige fehlende Kanten

lichter Graph: nur wenige Kanten vorhanden

Was versteht man unter einer Adjazenz-Matrix?

- boolesche n x n Matrix

- Wert an (i,j) besagt, ob Kante von i nach j existiert

Was versteht man unter einer Adjazenz-Liste?

- jeder Knoten besitzt eine verkettete Liste

- Listenelemente sind die zum Knoten adjazenten Knoten

Wie werden gewichtete Graphen dargestellt?

- Zuordnung von Zahlenwerten zu den Kanten

- Werte repräsentieren eine Größe des Anwendungsbereiches (z.B. Dauer)

- Übernahme der Werte in die Adjazenz-Liste oder -Matrix

Was ist ein Pfad und wie wird die Pfadlänge bestimmt?

- Pfad: Folge von adjazenten Knoten

- einfacher Pfad: jeder Knoten taucht nur einmal auf

- Pfadlänge: ungewichtet = Anzahl der Kanten im Pfad, gewichtet = Summe der Kantengewichte

Inwiefern können gerichtete Graphen in Bezug auf den Zusammenhang unterschieden werden?

stark zusammenhängend: alle Knotenpaare sind verbunden

schwach zusammenhängend: zugrundeliegender ungerichteter Graph ist verbunden

Was sind Zusammenhangskomponenten eines Graphen?

Maximalgroße zusammenhängende Teilgraphen des Graphen

Was sind die Bedingungen für einen Zyklus in einem Graphen?

Zyklus: Pfad von einem Knoten zu sich selbst

- positive Pfadlänge

- keine Kante wird mehrmals durchlaufen

Was ist ein Baum?

Ein Baum ist ein ungerichteter, zusammenhängender, zyklenfreier Graph.

Was versteht man unter einem Wurzelbaum oder welche Vorteile bringt er mit sich?

- Auszeichnung eines Knotens als Wurzel

- Vorteile: Pfadrichtung zur Wurzel weg oder hin; eindeutige, einfache Pfade zwischen Wurzel und allen anderen Knoten

Erklären Sie folgende Begriffe für Bäume: Vorgänger, Nachfolger, direkter Vorgänger, direkte Nachfolger und Geschwisterknoten von v sowie Blätter

Vorgänger: alle Knoten auf dem Pfad von v zur Wurzel

Nachfolger: alle Knoten (außer v), deren Pfade zur Wurzel den Knoten v enthalten

direkter Vorgänger: der erste Knoten auf dem Pfad zur Wurzel

direkte Nachfolger: alle Knoten, die v als Elternknoten besitzen

Geschwisterknoten: alle Knoten mit demselben Elternknoten wie v

Blätter: Knoten ohne Nachfolger

Erklären Sie folgende Begriffe für Bäume: Tiefe eines Knotens v, Höhe des Baumes, Ebene i des Baumes, Grad eines Knotens v, Grad n eines Baumes

Tiefe eines Knotens: Länge des einfachen Pfades von v zur Wurzel

Höhe des Baumes: Länge des längsten einfachen Pfades von der Wurzel zu einem Blatt

Ebene i des Baumes: alle Knoten, bei denen die Länge des einfachen Pfades von der Wurzel zu ihnen den Wert i besitzt

Grad eines Knotens: Anzahl der direkten Nachfolger von v

Grad n eines Baumes: maximaler Grad aller Knoten eines Baumes

Was sind binäre Suchbäume?

- sortierter Binärbaum (Wurzelbaum mit dem Grad 2)

- Wert aller linken Nachfolger <= Wert des Knotens

- Wert aller rechten Nachfolger > Wert des Knotens

Was sind zentrale Aspekte bei der Analyse von Algorithmen?

- Korrektheit

- Laufzeiteffizienz

- Speicherplatzeffizienz

- Optimalität

Welche Frage steht im Mittelpunkt der Analyse der Laufzeiteffizienz?

Wie oft wird die Basisoperation des Algorithmus ausgeführt?

Basisoperation: Operation, die am stärksten zu der Laufzeit des Algorithmus beiträgt (Ausführungsanzahl von Eingabegröße abhängig)

Laufzeit T in Abhängigkeit von Eingabegröße n: T(n) ≈ Ausführzeit Basisoperation * Ausführungsanzahl C(n)

Was meint der mittlere Fall (in Bezug auf die Beschaffenheit einer Eingabe)?

NICHT der Durchschnitt aus best und worst case!

Annahmen über die Beschaffenheit und Wahrscheinlichkeit von "typischen" Eingaben notwendig

Was meint die Speicherplatzeffizienz?

Anzahl zusätzlich benötigter Speicherplätze

Was ist die asymptotische Wachstumsanalyse?

Ansatz, um konstante Faktoren und Besonderheiten bei kleinen Eingabegrößen ausblenden zu können.

Groß-O-Funktion von g(n): Klasse der Funktionen f(n), die nicht schneller als g(n) wachsen.

Groß-Theta-Funktion von g(n): Klasse der Funktionen f(n), die gleich schnell wie g(n) wachsen

Groß-Omega-Funktion von g(n): Klasse der Funktionen f(n), die mindestens so schnell wie g(n) wachsen

Was besagt die Regel von L'Hôspital?

Falls lim f(n) = unendlich und lim g(n) = unendlich sowie f´(n) und g´(n) existieren, dann gilt:

lim (f(n)/g(n)) = lim (f´(n)/g´(n))

Was besagt die Stirlingformel?

Formel zur Abschätzung der Fakultät

n! ≈ \(\sqrt{2 \pi n} ( \frac n e)^n\)

 

Welche Funktionen beschränken andere Funktionen?

Jede Exponentialfunktion beschränkt jedes Polynom: nk = O(rn)

Jedes (nicht-konstante) Polynom beschränkt jede Logarithmus-Funktion: logr n = O(nk)

Die Wurzelfunktion ist linear beschränkt: \(\sqrt{n}\) = O(n)

Nennen Sie wichtige Rechenregeln, was die asymptotischen Wachstumsfunktionen anbelangt.

f1(n) = O(g(n)) und f2(n) = O(h(n))

Summenformel: f1(n) + f2(n) = O( max(g(n), h(n)) )

Produktregel: f1(n) * f2(n) = O(g(n)*h(n))

 

Nennen Sie häufig auftretende Wachstumsfunktionen und ordnen Sie sie in aufsteigender Reihenfolge.

O(1) = konstant

O(log n) = logarithmisch

O(n) = linear

O(n * log n) = überlogarithmisch

O(n2) = quadratisch

O(n3) = kubisch

O(kn) = exponentiell

O(n!) = faktoriell