Datenstrukturen und Algorithmen

Ein Rucksack mit der Kapazität 8 wird mit Gegenständen aus vier Gegenständen mit (Gewicht, Wert) (2, 3), (3, 4), (4, 5) und (5, 6) gefüllt. Jeden Gegenstand gibt es nur einmal, und Gegenstände lassen sich nicht teilen. Wie groß ist der höchste Gesamtwert bei einem Gesamtgewicht von höchstens 8?

  1. A7
  2. B9
  3. C10
Antwort und Erläuterung anzeigen

Antwort: C. 10

Die Gegenstände mit den Gewichten 3 und 5 ergeben das Gewicht 8 und den Wert 4 + 6 = 10, das Maximum. Die Gewichte 2 und 5 (Wert 9) oder 3 und 4 (Wert 9) passen ebenfalls, erreichen aber nicht 10, und drei beliebige Gegenstände wiegen mindestens 2 + 3 + 4 = 9, mehr als die Kapazität. Ein Greedy-Algorithmus, der die Gegenstände nach Wert pro Gewichtseinheit einpackt, nimmt die Gegenstände mit den Gewichten 2 und 3 (Wert 7); danach passt kein Gegenstand mehr in die verbleibende Kapazität 3, und er bleibt bei 7 stehen. Die dynamische Programmierung aktualisiert Gegenstand für Gegenstand eine Tabelle des besten Werts, der innerhalb jeder Kapazität c erreichbar ist, und findet das Optimum in O(nW) für n Gegenstände und die Kapazität W.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Datenstrukturen und Algorithmen

  1. Welche Aussage beschreibt ein Merkmal des Boyer-Moore-Algorithmus zum Suchen eines Musters in einer Zeichenkette richtig?
  2. Ein dynamisches Array legt, wenn ein Element hinzugefügt wird, während es voll ist, einen neuen Bereich mit doppelter Kapazität an und kopiert alle Elemente dorthin. Wie viele Elementkopien entstehen insgesamt, wenn einem leeren Array mit der Kapazität 1 nacheinander 1000 Elemente hinzugefügt werden?
  3. Warum ist bei einer Hashtabelle mit vielen Elementen und einem Belegungsfaktor von etwa 0,5 die offene Adressierung mit linearem Sondieren am ehesten schneller als die Verkettung (Verbinden der Elemente durch verkettete Listen)?
  4. Für das Sortieren auf paralleler Hardware wie GPUs werden manchmal Sortierverfahren mit einer festen Folge von Vergleichs- und Tauschschritten (Sortiernetzwerke) wie Bitonic Sort verwendet. Warum?
  5. Welche Zeitkomplexität hat bei einem Array mit n Elementen ein Verfahren, das jedes Paar zweier verschiedener Elemente genau einmal vergleicht (eine doppelte Schleife, die das i-te Element mit allen dahinterliegenden Elementen vergleicht und i schrittweise erhöht)?