Algorithmik Votierübungen 3

Werbung
Diekert/Weiß/Milosavljevic
Wintersemester 2011/12
Algorithmik
Votierübungen 3
Besprechung: 23./24.11. bzw. 30.11./1.12.
1. Beweisen Sie die Jensensche
Ungleichung: Sei f : R → R eine konvexe Funktion und λi ≥ 0
P
für 1 ≤ i ≤ k mit ki=1 λi = 1. Dann gilt
!
k
k
X
X
f
λi xi ≤
λi f (xi )
i=1
i=1
2. Eine Ölfirma plant eine neue Pipeline durch ein Ölfeld. Die neue Pipeline soll auf einer
Geraden von Osten nach Westen verlaufen. In dem Ölfeld gibt es n Ölquellen, deren x- (OstWest-) und y- (Nord-Süd-)Koordinaten bekannt sind. Um den Preis für die Zuleitungen zur
Hauptpipeline zu minimieren, soll diese an einer optimalen Position platziert werden (d.h.
an der optimalen Stelle in Nord-Süd-Richtung), sodass eine möglichst kurze Strecke von
Zuleitungen verlegt werden muss. Geben Sie einen möglichst effizienten Algorithmus zur
Lösung dieses Problems an. Kann die optimale Lage in Linearzeit ermittelt werden?
3. Münzen-Algorithmus Geben Sie einen Algorithmus (in Pseudocode) an, der auf die Eingabe
einer Menge M von Münzwerten (natürliche Zahlen) und n ∈ N die optimale Darstellung
von n (möglichst wenige Münzen) mittels Münzwerten aus M berechnet. Es sind beliebig
viele Münzen jedes Münzwertes verfügbar.
Beispiel: M = {1, 4, 8, 13}, dann ist n = 20 = 2 ∗ 8 + 4, n = 81 = 5 ∗ 13 + 2 ∗ 8, n = 80 =
6 ∗ 13 + 2 ∗ 1.
Sie können annehmen, dass arithmetische Operationen und Vergleiche von natürlichen Zahlen in konstanter Zeit möglich sind. Ihr Algorithmus soll eine Laufzeit von O(n·|M |) besitzen.
Warum ist eine Greedy-Strategie für dieses Problem im Allgemeinen fehlerhaft?
Beweisen Sie die Korrektheit Ihres Algorithmus.
4. Medianberechnung
a) Der in der Vorlesung behandelte Median-Algorithmus bestimmt zunächst den Median
von 5er-Blöcken. Würde der Algorithmus immer noch in linearer Zeit ablaufen, wenn
stattdessen der Median von 3er-Blöcken oder von 7er-Blöcken bestimmt wird?
b) Seien A = [a1 , a2 , . . . , am ] und B = [b1 , b2 , . . . , bm ] zwei sortierte Felder mit insgesamt
n = 2m verschiedenen Elementen. Entwerfen Sie einen Algorithmus zum Auffinden
eines Medians in A ∪ B. Ihr Algorithmus soll in sublinearer Zeit ablaufen, d.h. eine
Komplexität von o(n) haben. Welche Laufzeit hat Ihr Algorithmus?
c) Sei k ∈ N fest gewählt. Geben Sie einen Algorithmus zur Bestimmung des k-kleinsten
Elementes eines unsortierten Arrays der Länge n (n > k) an. Ihr Algorithmus soll im
worst-case n + O(log(n)) Vergleiche benötigen.
Hinweis: Beginnen Sie mit n2 paarweise disjunkten Vergleichen, und fahren Sie dann
rekursiv mit den jeweils kleineren Elementen fort.
5. Sei G = (V, E) ein ungerichteter Graph. Für S ⊆ V , sei E(S) = {(u, v) ∈ E : u ∈ S, v ∈
/ S},
d.h. E(S) ist die Menge der Kanten, die S und V \ S verbinden. Die Kantenausdehnung von
G ist definiert als
|E(S)|
h(G) = min
S⊆V
|S|
0<|S|≤|V |/2
Ein großes h(G) bedeutet also, dass G “sehr zusammenhängend” ist.
Wie groß ist h(G) minimal/maximal in einem Graphen G mit n Knoten?
Geben Sie einen Algorithmus (Pseudocode) an um h(G) für einen als Adjazenzmatrix gegebenen Graphen G zu berechnen.
Herunterladen