• Keine Ergebnisse gefunden

Lösungsvorschlag zu Aufgabe 1

N/A
N/A
Protected

Academic year: 2022

Aktie "Lösungsvorschlag zu Aufgabe 1"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

ETH Zürich

Institut für Theoretische Informatik

Prof. Dr. Angelika Steger, Dr. Johannes Lengler Übungsleitung: Florian Meier

HS 2019

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 7

Lösungsvorschlag zu Aufgabe 1

Seibi,jder maximale Profit, den der Roboter bis zur Position(i,j)sammeln kann, indem eri−1 Schritte nach unten undj−1 Schritte nach rechts macht. Um zur Position(i,j)zu gelangen muss der Roboter zuvor entweder auf Position(i−1,j)oder(i,j−1)gewesen sein. Es folgt, dassbi,j mit folgender Formel Rekursiv berechnet werden kann:

bi,j=ai,j+max(bi−1,j,bi,j−1).

Da zur Berechnung vonbi,jlediglich die Wertebi−1,jundbi,j−1benötigt werden, können wir mit zwei For-Schleifen welche überiund jiterieren die gesamte MatrixBberechnen. Für die erste Zeile bzw. Spalte muss die Formel leicht abgeändert werden, da der Roboter von links bzw. oben kommen muss (siehe Pseudo-code).

Um zusätzlich noch den Weg bestehend aus 2n+1 Feldern auszugeben, speichern wir in einer (n+1)×(n+1)MatrixCab ob der Roboter jeweils von oben oder links kam. Fallsbi−1,j≥bi,j−1

setzeci,j = obenund sonstci,j = links. Dann können wir in(n+1,n+1)starten und den Weg rückwärts abblaufen und abspeichern, siehe Pseudo-Code.

Korrektheit folgt aus der Korrektheit der Rekursionsformel. Die Laufzeit beträgtO(n2), da bei der Berechnung vonbi,jfür jedes Paar 2≤i,j≤n+1 konstant viel Zeit benötigt wird (Intialisie- ren und Ausgabe des Weges brauchtO(n)).

1

(2)

Algorithm 1MARSEXPEDITION(MatrixA) { Initialisierung: }

b1,1=a1,1

fori=2, . . . ,n+1do bi,1=ai,1+bi−1,1

ci,1=oben b1,i=a1,i+b1,i−1

c1,i=links end for

{ Berechnung bn+1,n+1: } fori=2, . . . ,n+1do

forj=2, . . . ,n+1do

if bi−1,j ≥bi,j−1 then

bi,j=ai,j+bi−1,j

ci,j=oben else

bi,j=ai,j+bi,j−1

ci,j=links end if end for end for

{ Bestimmung des Pfades: } x =n+1

y=n+1

fori=1 . . . 2n+1do w[2n+2−i] = (x,y) ifc(x,y) =obenthen

y=y−1 else

x=x−1 end if end for

return Profit:bn+1,n+1, Weg:w[1 . . . 2n+1]

Lösungsvorschlag zu Aufgabe 2

Wir kürzen monoton steigende Teilsequenz mit MSTS ab. Sei ai die Länge der längsten MSTS, welche mitxiendet. Es seiJidie Menge der Indizesj <ifür diexj < xigilt. Falls die Menge Ji leer ist, giltai =1. Ansonsten gilt folgende Rekursionsformel.

ai =1+max

j∈Ji aj. (1)

Wir beweisen Korrektheit dieser Rekursionsformel. An jede Teilsequenz, welche inxjmit j ∈ Ji endet, kannxiangehängt werden. Daraus folgtai ≥1+ajfürj∈ Ji, und somitai≥1+maxj∈Jiaj. Betrachte nun das zweitletzte Elementxjder längsten MSTS, welche inxi endet.jist sicherlich inJi. Daraus folgt, dassai ≤1+aj≤1+maxj∈Jiaj. Somit folgt (1).

Mithilfe dieser Rekursionsformel können wirai füri=1, . . .nberechnen (siehe Algorithmus 2).

Die Länge der längsten MSTS ist dann gegeben durch a = maxi∈[n]ai, wobei[n] = {1, . . . ,n} bezeichnet. Um die längste MSTS auszugeben, speichern wir zusätzlich zur Länge ai der läng- sten MSTS, welche inxiendet, den Vorgänger-Indexbiin dieser MSTS ab.bi ist gegeben durch

2

(3)

arg maxj∈Jiaj. Mithilfe der bi’s können wir jeweils zum Vorgänger in der längsten MSTS hüp- fen und die MSTS rückwarts durchlaufen (siehe Algorithmus 2): Wennkder Index des letzten Elements der längsten MSTS ist, so istbk, der Index des zweitletzten Elements,bbk der des dritt- letzten, usw.

Laufzeitanalyse: Die Ausgabe der Sequenz dauertO(n). Die Berechnung von ai undbi dauert jeweilsO(n). Da dies füri=1, . . .nberechnet wird, ergibt sich eine Laufzeit vonO(n2).

Algorithm 2LÄNGSTE MONOTON STEIGENDETEILSEQUENZ

fori=1, . . . ,ndo

{ Bestimmung der Menge Ji: } Ji=∅

forj=1, . . . ,i−1do if xj<xi then

Ji= Ji∪j end if end for

{ Berechnung von aiund bi: } ifJi =∅then

ai =1 bi=nil else

ai =1+maxj∈Jiai

bi=arg maxj∈Jiai

end if end for

{ Ausgabe der längsten MSTS s}

a=maxi∈[n]ai

k=arg maxi∈[n]ai sa =xk

fori=1 . . .a−1do k=bk

sa−i =xk end for

return Länge:a, längste MSTS:s1, . . . ,sa

Lösungsvorschlag zu Aufgabe 3

a) Um einen Algorithmus nach dem Prinzip der dynamischen Programmierung zu entwer- fen, definieren wir die Funktion f(i,b)wie folgt. f(i,b)sei der maximale Profit des Ruck- sackes, wenn das Gewicht höchstensbbeträgt und nur die ersteniObjekte zur Verfügung stehen. Für die ersteniObjekte gibt es zwei Möglichkeiten. Entweder dasi-te Objekt ist im Rucksack, dann dürfen die restlichen Objekte im Rucksack noch höchstensb−wiGewicht haben oder dasi-te Objekt ist nicht im Rucksack. Daraus ergibt sich die Rekursion

f(i,b) =max{f(i−1,b),f(i−1,b−wi) +pi} . (2) Der in Algorithm 3 beschriebene Algorithmus benutzt diese Rekursion um eine optimale Lösung zu berechnen.

Zur Korrektheit:Die Korrektheit folgt aus der Korrektheit von(2).

3

(4)

Algorithm 3KNAPSACK PACKING(w[1..n],p[1..n],B) F[0..n, 0..B]:=new Array of Integers

forb=0toBdo ifw[1]≤bthen

F[1,b]:=p[1] else

F[1,b]:=0 end if end for

fori=2tondo forb=0toBdo

ifb≥w[i]ANDF[i−1,b−w[i]] +p[i]>F[i−1,b]then F[i,b]:= f[i−1,b−w[i]] +p[i]

else

F[i,b]:=F[i−1,b] end if

end for end for return F[n,B]

Zur Laufzeit:Wie man auf Grund der zwei FOR-Schleifen leicht sehen kann, hat der Algo- rithmus eine Laufzeit vonO(nB). Da wir annehmen können dasB <ni=1wi ≤n3(sonst können wir alle Objekte in den Rucksack packen) benötigt der Algorithmus nur polynomi- elle Zeit.

b) Man kann die optimale Lösung speichern, indem man in einem zusätzlichen Feld L[i,b] jeweils speichert, ob für das MaximumF[i,b]dasi-te Objekt in den Rucksack gepackt wer- den muss (also fallsF[i−1,b−w[i]] +p[i]>F[i−1,b]dannL[i,b] =1 im Algorithmus 3).

Dann kann man aus dem FeldLleicht mit einer Schleife alle Objekte berechnen, die in der optimalen Lösung tatsächlich enthalten sind (Algorithmus 4).

Wir möchten noch erwähnen, dass es in dieser Aufgabe auch möglich ist, für jedes paar (i,b) in L[i,b] direkt die ganze Liste von Objekten zu speichern, die in der Lösung des entsprechend Teilproblems enthalten sind (alsoL[i,b] ={L[i−1,b−wi],i}oderL[i,b] = L[i−1,b]in Algorithmus 3). Die Laufzeit des Algorithmus erhöht sich dadurch um einen Faktor n (da das kopieren der Listen O(n) Zeit beansprucht), bleibt aber offensichtlich polynomiell inn.

Algorithm 4KNAPSACK INHALT(L(),w[1..n],B) I←∅

i←n b←B

whilei≥1do ifL[i,b] =1then

I←I∪i i←i−1 b←b−w[i] else

i←i−1 end if end while return I

4

Referenzen

ÄHNLICHE DOKUMENTE

Es bietet den Teilnehmerinnen und Teilnehmern die Möglichkeit sich auszutauschen, wie ein Neustart der Gruppen in Präsenz gelingen

Unterstützt wird die Arbeit von und mit den Eltern durch die Rucksack KiTa-Materialien – Arbeitsbögen, die den Eltern Anregungen für täglich wechselnde Aktivitäten mit

Unterstützt wird die Arbeit von und mit den Eltern durch die Rucksack Schule-Materialien, die an den Unterrichtsinhalten anknüpfen und den Eltern Anre- gungen für täglich

Wenn Sie eine Auskunft zu den zu Ihrer Person gespeicherten personenbezogenen Daten wünschen, wenden Sie sich bitte an das Kommunale Integrationszentrum des Kreises Steinfurt. Sie

auch hybride Durchführung der Landesprogramme Griffbereit, Rucksack-Kita und Rucksack- Schule vermittelt: Es werden sowohl grundlegende Techniken der

Vor dem Hintergrund der aktuellen Situation – den erschwerten Durchführungsmöglichkeiten der Landesprogramme „Griffbereit“ und „Rucksack- Kita“ - wollen wir uns

9.00 – 12.00 Uhr nach Absprache Interkulturelles Elterncafé FZ St. Peter

9.00 – 12.00 Uhr nach Absprache Interkulturelles Elterncafé FZ St. Peter