• Keine Ergebnisse gefunden

Zeigen Sie durch Handsimulation wie mit dem Breitensuch-Algorithmus ein Weg von nach

N/A
N/A
Protected

Academic year: 2021

Aktie "Zeigen Sie durch Handsimulation wie mit dem Breitensuch-Algorithmus ein Weg von nach"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Aufgabe 1: Suchalgorithmen (12 Punkte) (a) (4 Punkte ) Gegeben ist folgendes Streckennetz:

A

C

B D

Z F

E

Zeigen Sie durch Handsimulation wie mit dem Breitensuch-Algorithmus ein Weg von nach

gefunden wird. F¨ur die Reihenfolge, in der Nachfolger-Knoten besucht werden, sei eine alphabetische Ordnung vorgegeben

(A

B

C

D

E

F

Z).

(b) (1 Punkt ) Was ist ein Zyklus und wie k¨onnen Zyklen bei der Breitensuche erkannt und

vermieden werden?

(2)

(c) (4 Punkte ) Nun sind zus¨atzlich Entfernungen zwischen den Orten (an den Kanten) und untere Schranken f¨ur die Restwegkosten (an den Knoten) gegeben:

4 1

1

5 5

6 A

C B

Z F

1

1 2

1 3

4 6

2 2

D

E

Zeigen Sie durch Handsimulation wie mit dem A* Algorithmus f¨ur bewertete Kanten der Weg von nach

gefunden wird. Die Ordnung der Nachfolger-Knoten sei wieder alpha- betisch.

(d) (1 Punkt ) Was ist die Terminationsbedingung f¨ur A* und Branch-and-Bound?

(3)

(e) (1 Punkt ) In welcher Hinsicht ist Branch-and-Bound als Spezialfall von A* zu sehen?

(f) (1 Punkt ) Mit welcher Speicherstruktur und welchem Abarbeitungsprinzip kann Tiefensu-

che realisiert werden?

(4)

Aufgabe 2: Greedy-Algorithmen (13 Punkte) (a) (1 Punkt ) Was ist der Unterschied zwischen greedy-L¨osbarkeit und greedy-Algorithmus?

(b) (10 Punkte ) Ein Fabrikant m¨ochte einige seiner Maschinen erneuern. F¨ur jede Maschine sind die Leistung (Anzahl der produzierten St¨ucke pro Zeit) und die Betriebskosten (pro Zeit) bekannt. Erneuert werden sollen die unwirtschaftlichsten Maschinen. Die Auswahl soll durch einen greedy-Algorithmus erfolgen. Entsprechend wird als greedy-Kriterium der

Quotient

verwendet.

Gegeben seien

Maschinen, wovon

erneuert werden sollen (

). Die Maschinen werden durch folgenden Datentyp repr¨asentiert:

TYPE Maschtyp = RECORD

Kennung : INTEGER;

Kosten : REAL;

Leistung : REAL;

Erneuern : BOOLEAN;

END;

TYPE Maschinen = ARRAY[1..n] OF Maschtyp; (* n als Konstante vor- gegeben *)

Gesucht ist eine (MODULA-2) Prozedur

PROCEDURE erneuere (VAR AlleMasch:Maschinen),

die aus den

vorhandenen Maschinen diejenigen

Maschinen ausw¨ahlt, die bevorzugt

erneuert werden sollen. Dabei sei AlleMasch bereits vorbelegt (Kennung, Leistung und

Kosten sind gegeben; Erneuern ist f¨ur alle Maschinen auf FALSE gesetzt) und m und n seien

als Konstanten vorgegeben. HINWEIS: F¨ur den greedy-Algorithmus sollen die Daten nicht

vorsortiert werden!

(5)

PROCEDURE erneuere (VAR AlleMasch:Maschinen);

END erneuere;

(6)

(c) (2 Punkte ) Gegeben ist das Rucksack-Problem:

Ein Dieb will m¨oglichst viel Geld aus einem M¨unz-Tresor stehlen. Die M¨unzen im Tresor haben alle dasselbe Gewicht, aber unterschiedliche Wertigkeiten. Der Dieb hat einen Ruck- sack dabei, in den maximal

M¨unzen passen.

Was ist das greedy-Kriterium f¨ur dieses Problem?

(7)

Aufgabe 3: Graphalgorithmen (13 Punkte) (a) (1 Punkt ) Was repr¨asentiert der aufspannende Baum eines Graphen?

(b) (10 Punkt ) In einem Supermarkt soll die Anordnung der Waren optimiert werden. Aus diesem Grund wird zun¨achst f¨ur verschiedene Produktsorten (sowie die Kasse) erhoben, wie weit die Wege zwischen diesen Produkten sind. Das Ergebnis der Analyse ist im folgenden Graph abgebildet:

3

4 7

8

2 6

5 12

MILCH

FLEISCH

KNABBER BACKWAREN

KASSE

OBST KONSERVEN

Implementieren Sie den Dijkstra-Algorithmus (in MODULA-2) um zu ermitteln, wie hoch die minimalen Wegekosten von einer fest vorgegebenen Position zu allen anderen Positionen sind.

Vorgaben:

CONST MatrixDimension = 7;

UNENDLICH = 99;

TYPE Matrix = ARRAY[1..MatrixDimension],[1..MatrixDimension] OF INTEGER;

ErgebnisArray = ARRAY[1..MatrixDimension] OF INTEGER;

Die Knotenbezeichner (“Kasse”, “Backwaren”, etc.) werden dabei durch Zahlen

"!$#%&')(+*,-. / -'10

angegeben. Die Kosten sind als INTEGER vorgegeben.

Gesucht ist die Prozedur PROCEDURE Dijkstra (VAR kMatrix: Matrix; VAR Ergebnis:

ErgebnisArray; startKnoten: INTEGER); wobei kMatrix bereits initialisiert

sei (Adjazenzmatrix des Graphen).

(8)

PROCEDURE Dijkstra (VAR kMatrix: Matrix; VAR Ergebnis:

ErgebnisArray; startKnoten: INTEGER) ;

END Dijkstra;

(9)

(c) (1 Punkt ) Wie hoch sind die minimalen Wegekosten von der Kasse zu allen angegebenen Waren?

Backwaren – Milch – Fleisch – Knabber – Konserven – Obst –

(d) (1 Punkt ) Was ist der Aufwand des Dijkstra-Algorithmus?

(10)

Aufgabe 4: Dynamische Datenstrukturen (12 Punkte) (a) (1 Punkt ) Welche Aufwandsklasse hat die Suche nach einem Eintrag in einem maximal aus-

gewogenen Bin¨arbaum im Vergleich zur Suche in einer ungeordneten Liste (bei ann¨ahrend gleichen Zugriffswahrscheinlichkeiten auf die Daten)?

(b) (1 Punkt ) Was ist ein

2

-h¨ohen-balancierter Baum?

(c) (3 Punkte ) Gegeben ist der unten abgebildete 1-h¨ohenbalancierte, geordnete Bin¨arbaum (angegeben sind nur die Schl¨ussel). In diesen Baum soll ein neues Element mit Schl¨ussel

“11” eingef¨ugt werden, so daß wieder ein 1-h¨ohenbalancierter, geordneter Bin¨arbaum ent- steht. Zeichnen Sie den resultierenden Baum auf.

1 4

7

10 3

9 12

13

15 18

17 19

20

(11)

(d) (2 Punkte ) Wie kann beim offenen Hashing vermieden werden, daß alle Schl¨ussel dem

selben Indexplatz zugewiesen werden?

(12)

(e) (3 Punkte ) Die Verwaltung einer Studierenden-Kartei soll von geschlossenem auf offenes Hashing umgestellt werden. Zuk¨unftig soll der Zugriff ¨uber die erste Ziffer der f¨unfstelligen Matrikelnummer erfolgen. Bisher wurde die Hash-Tabelle durch folgende Datenstruktur rea- lisiert:

CONST

N = 10000; (* Laenge der Hash-Tabelle *) TYPE

ziffer = 0..9;

daten = RECORD

nachname: String;

vorname: String;

matnummer: ARRAY [1..5] OF ziffer;

semesterzahl: CARDINAL;

END;

element = RECORD

marke: BOOLEAN; (* FALSE bei geloeschtem Eintrag *) student: daten;

END;

tabelle = ARRAY [0..N-1] OF element;

Modifizieren Sie die Datenstruktur so, daß offenes Hashing realisiert werden kann. (Notation

wieder in MODULA-2, nur Datenstruktur, nicht Hash-Funktion)

(13)

(f) (2 Punkte ) In einer Mini-Datenbank sind die Daten von f¨unf Studierenden mit offenem Hashing gespeichert. Geben Sie an, wie diese Daten bei geschlossenem Hashing in einer Tabelle mit 10 Speicherpl¨atzen abgelegt waren:

– Eintragsreihenfolge: nach dem ersten Buchstaben des Nachnamens; bei Kollision wird der n¨achste freie Speicherplatz verwendet.

– Schl¨ussel

3

: Quersumme der 5-stelligen Matrikelnummer – Hashfunktion: Divisionsmethode:

46587-369 :$3;.'<>=

.

Tragen Sie die Werte f¨ur

4 5

und die Matrikelnummern in die vorgegebene Tabelle ein.

0

1

2

3

4

5

6

7

8

9

Kurt Kohl Maria Meier

Anita Auer

Hans Huber 43512

Lilli Lehmann 46963

10530 14160

24150

0

1

2

3

4

5

6

7

8

9

j h’(k) Mat-Nr.

Referenzen

ÄHNLICHE DOKUMENTE

Wir k¨ onnen vollst¨ andige Induktion auch anwenden, um zu zeigen, dass eine Eigenschaft P(x) f¨ ur alle Elemente einer rekursiv definierten Menge M gilt.. Der

MATHEMATISCHES INSTITUT WS 2017/18 DER UNIVERSITÄT MÜNCHEN.. Übungen zu Mathematik III

Testen Sie ihr Verfahren anhand der folgenden zwei Beispiele, indem Sie die Itera- tionsanzahl sowie einen Konvergenzplot der Iterierten des Verfahrens im semilogarith- mischen

Fachbereich Mathematik und Statistik Repetitorium 2018, Analysis 2.

Entscheiden Sie, ob die folgenden Matrizen diagonalisierbar sind und geben Sie gegebenenfalls die zugeh¨orige

Eine der folgenden Aussagen ist immer richtig, die andere gilt

m sollte so klein wie m¨oglich gew¨ahlt werden; m = 1 kommt nicht in Frage, denn ein Vektor in einem 1-dimensionalen Vektorraum ist immer linear unabh¨angig.. Die Spaltenvektoren

M¨ oglichkeit: Da diese Matrix eine Blockstruktur hat, ist ein Eigenwert (vom oberen Block) 2, die anderen beiden sind die Eigenwerte des unteren Blocks... (iv) (2 Punkte) Da ~ v