• Keine Ergebnisse gefunden

¨Ubungen zur Vorlesung Datenstrukturen und Algorithmen SS 2007 Pr¨asenz¨ubung 3

N/A
N/A
Protected

Academic year: 2022

Aktie "¨Ubungen zur Vorlesung Datenstrukturen und Algorithmen SS 2007 Pr¨asenz¨ubung 3"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Christian Sohler Paderborn, den 13. April 2007 u.v.a.

Ubungen zur Vorlesung ¨

Datenstrukturen und Algorithmen SS 2007

Pr¨asenz¨ubung 3

AUFGABE 7:

Geben Sie den in der Vorlesung behandelten Merge Algorithmus im Pseudocode an. Benutzen Sie dabei die Operationen newArray und deleteArray, um ein neues Array anzulegen oder ein bestehendes Array zu l¨oschen. Ein AufrufnewArray(1,· · · , l) reserviert Speicherplatz f¨ur ein Array der L¨angel. Beachten Sie, dass ein solcher Aufruf eine Laufzeit von Θ(l) ben¨otigt.

Der Aufruf delete(A) gibt den Speicherplatz des Arrays A wieder frei. Ein solcher Aufruf ben¨otigt konstante Zeit. Analysieren Sie die Laufzeit des Merge Algorithmus.

AUFGABE 8:

Seien a1, a2,· · · , an Zahlen, die in einem Array A[1,· · · , n] gespeichert sind. Die folgenden beiden Algorithmen berechnen das kleinste Element in A. Dabei erfolgt der erste Aufruf des Algorithmus Minimum-Divide-&-Conquer mit den Arraygrenzen l = 1 und r = n. Zur Vereinfachung nehmen wir an, dassneine Zweierpotenz ist. Zeigen Sie f¨ur beide Algorithmen die Korrektheit. Analysieren und vergleichen Sie die Laufzeiten der beiden Algorithmen.

Minimum-Divide-&-Conquer(Array A, l, r)

1: if l=r then

2: min←A[l]

3: else

4: minl Minimum-Divide-&-Conquer(A, l,r+l2 )

5: minr Minimum-Divide-&-Conquer(A,r+l2 + 1, r)

6: if minl minr then

7: min minl

8: else

9: min minr

10: return min

Minimum-Incremental(Array A)

1: min←A[1]

2: for i←2 to length[A]do

3: if min> A[i] then

4: min ←A[i]

5: return min

Referenzen

ÄHNLICHE DOKUMENTE

b) Geben Sie den Algorithmus aus a) in Pseudocode an, so dass er bei Eingabe eines Arrays A mit A[i] = α i die minimalen Gesamtkosten als Ergebnis zur¨ uckliefert. Die Reihenfolge

Christian Sohler Paderborn,

a) Gegeben sei eine Liste von n Jobs. Geben Sie unter der Bedingung, dass der Prozessor zu jedem Zeitpunkt h¨ochstens einen Job verarbeiten kann, einen Greedy-Algorithmus im

L¨ oschenFIFO(x): Falls die Datenstruktur ein Element mit Schl¨ussel x enth¨alt, so wird daraus dasjenige Element mit Schl¨ussel x entfernt, das sich am l¨angsten darin befindet..

Das Spiel bevorteilt die Bank, falls die Bank im Erwartungswert von einem Spieler mehr Geld einnimmt als sie an diesen auszahlt?.

Wenden Sie dann den Tiefensuchalgorithmus startend bei Knoten 1 auf den Graphen an und geben Sie zu jedem Knoten v die Discovering/Finishing-Times (d[v], f [v]) an. Benutzen Sie

Christian Sohler Paderborn, den 22. Ist dies notwendig, oder existiert auch ein vern¨unftiger Begriff der topologischen Sortierung f¨ur allgemeine gerichtete oder ungerichtete

Modifizieren Sie den Algorithmus von Bellman-Ford, so dass dieser in Laufzeit O(|V | · |E|) f¨ur jeden Knoten v ∈ V die Kosten eines k¨urzesten s-v-Pfades berechnet, wobei |E| >