XKCD Nr. 356: Nerd Sniping
Im folgenden ein paar besonders knifflige Aufgaben im Stil von D&A, welche den Assistenten im Verlaufe des Semesters über den Weg gelaufen sind.
Achtung: Die Aufgaben sind nicht nach Schwierigkeit geordnet, sondern thematisch!
Wenn du einige der Aufgaben gelöst hast, so sende sie uns ein an baertschi@inf.ethz.ch. Abgabeschluss ist der Tag der D&A-Prüfung. Wer die meisten Rätsel knackt, gewinnt mindestens einen Buchpreis (z.B. Datenstrukturen und Algorithmen von Widmayer, Ottmann oder Introduction to Algorithms von Cormen, Leierson, Rivest und Stein). Bei hervorragenden Einsendungen gerne auch mehr…
Viel Erfolg!
Gib die Grössenordnung der folgenden Funktion (so knapp wie möglich) in
Hinweis: Man schafft es auch ohne Stirling. Man muss aber nicht :-)
Wir zeigen, dass folgende Implikation gilt:
Dazu machen wir eine Fallunterscheidung:
Falls
Für
Warum funktioniert dieser Beweis nicht?
Wir versuchen es noch einmal, diesmal präziser:
Wegen
Ausserdem wächst ab einem bestimmten Punkt
Setzen wir nun
und deshalb
Stimmt dieser neue Beweis? Falls ja, wieso?
Falls nein, für welche Klasse von Funktionen gilt er?
Zeigen oder widerlegen Sie:
Analysiere folgendes Codestück in der
int f(n) {
int c = 0;
if (n == 1) return 1;
for(int i = 0; i<n; i++)
;
c = f(n/2)+1;
return c;
}
Gegeben sei folgende Rekursionsgleichung (wobei angenommen werden darf, dass
Finde eine geschlossene Form für die Gleichung.
Beweisen Sie mit vollständiger Induktion die in Aufgabe 5 gefundene geschlossene Form für die Rekursion
Auf einer Wiese steht – von 3 hungrigen Löwen umringt – ein einsames, aber magisches Schaf. Falls einer der Löwen das Schaf frisst, so wird er selbst zu einem (wiederum magischen) Schaf und kann von den verbleibenden Löwen gefressen werden.
Wird das Schaf gefressen? Wie sieht die Situation bei vier Löwen aus? Wie bei einer allgemeinen Anzahl
Ein Piratenschiff mit
Alle Piraten haben grossen Spass daran, jemanden über Bord zu werfen. Noch wichtiger ist es ihnen hingegen, selber möglichst viel Gold zu erhalten. Falls beispielsweise ein Pirat
Welchen Vorschlag sollte der mächtigste Pirat
a)
b)
c) Kann
Wir betrachten zwei Min-Heaps, implizit gegeben als Arrays
Ist
Gegeben
Ein Beispiel: Für
In Aufgabe 7.2 haben wir ein DP gesehen, um das längste Palindrom in einem Text zu finden. Dabei hatten wir eine Tabelle
Sei diese Tabelle nun bereits aufgefüllt gegeben. Die Lösung in Aufgabe 7.2.b) findet in der Tabelle ein längstes Palindrom in Zeit
a)
b)
Zweifach Offline: Wir schauen uns eine Offline-Version des Dino-Spiels des Chrome-Browsers an (Tipp: Versetze dein Mobiltelefon oder Laptop in den Flugmodus, rufe eine Seite in Chrome auf und drücke auf den Dino).
In unserem Dino-Spiel soll ein T-Rex von links nach rechts über eine Ebene rennen und dabei alle Kakteen, die sich ihm in den Weg stellen, überspringen. Wir möchten wissen, ob dies überhaupt möglich ist.
Gegeben sind:
Unser Dino startet bei Postion
Gib einen möglichst schnellen Algorithmus nach dem Prinzip der dynamischen Programmierung an, welcher bestimmt, ob der Dino das Feld
Sei
Schreibe ein Dynamische Programm, um die Werte
Löse die Programmieraufgabe 8.4 in konstanter Zeit. Also: Gegeben natürliche Zahlen
Diamantendiebstahl in Planarplanet: In Planarplanet, einem Planeten von der Form einer Scheibe, wird im Algoland ein wertvoller Diamant gestohlen. Die internationale Polizeiabteilung Interpol weiss aus zuverlässigen Quellen, dass sich der Diamantenhehler in Legoland, einem weiteren Land auf Planarplanet befindet.
Interpol möchte nun verhindern, dass der Diamant bis zum Käufer gelangen kann. Deshalb soll die kleinste Anzahl Länder gefunden werden, in welchen die Polizei alarmiert werden soll, sodass keine Route von Algoland nach Legoland existiert, welche nicht durch eines dieser Länder führt.
Zwei Länder sind benachbart, falls sie eine gemeinsame Grenze haben, und von jedem Land aus kann man genau in alle Nachbarländer reisen. Keines der Länder hat eine Exklave (das heisst jedes Land ist einfach zusammenhängend).
Gib einen möglichst schnellen Algorithmus an, um zu bestimmen, in welchen Ländern Interpol die Polizei alarmieren soll. Es sollen möglichst wenig Länder alarmiert werden.
Interborder, die internationale Vereinigung aller Grenzwachen, hat ebenfalls vom Diamantenraub aus Aufgabe 15 erfahren. Am liebsten würden die Grenzwachen die Diebe selber schnappen. Landesgrenzen zu bewachen ist allerdings kostspielig, für jeden Kilometer Grenze braucht es 10 Beamte.
Für jedes Paar von benachbarten Ländern ist die Länge der gemeinsamen Grenze bekannt. Gesucht ist nun eine zu bewachende Teilmenge der Grenzen, sodass (i) jede Route von Algoland nach Legoland mindestens eine bewachte Grenze überquert und (ii) möglichst wenige Beamte im Einsatz sein müssen. (Haben die Länder A und B, sowie B und C je eine gemeinsame Grenze, so können wir beide Grenzen von B bewachen, nur eine, oder auch gar keine.)
Gegeben