Besser beschrnkt, c't 10/97, S. 336, ts
========================================

branch.pas              Pascal-Programm zur Anwendung von Branch and Bound
                        auf das Rucksackproblem. Fehleingaben werden nicht
                        abgefangen!
Branch.exe              Ausfhrbare Datei dazu
Unterverzeichnis daten  Testflle fr das Programm

==================

Generelle Anmerkungen zu branch.pas

Das Programm bietet zwei Wege, Aufgabendaten zu erfassen:
1) Einlesen aus Datei mit folgendem Format: 
In den ersten beiden Zeilen stehen die Anzahl der Gegenstnde und das
Maximalgewicht des Koffers. In den weiteren Zeilen stehen Gewinn und
Gewicht jeweils eines Gegenstandes. 2) Generieren: Fr bis zu 500
Gegenstnde werden Gewinne und Gewichte zufllig gleichverteilt aus
dem Intervall [1,100] gewhlt. Das Maximalgewicht des Koffers ist auf
200 festgelegt.

Das Programm schreibt detaillierte Ergebnisse in die Datei
"branch.out" und Angaben zum Lsungsfortschritt auf den Bildschirm.

Es lassen sich verschiedene Einstellungen am Algorithmus vornehmen
(Fehleingaben werden nicht abgefangen). Dazu gibt es vier
Steuervariablen  (Namen und mgliche Werte in Klammern):
- Auswahlregel ("Auswahl"): Grtes Gewicht (1), Grter Gewinn (2),
  Grter relativer Gewinn (3), Unvollstndig  (4)
- Reihenfolge der Teilaufgaben ("Reihenfolge"): Zuerst verbieten (1)
  oder zuerst packen (2).
- Kletterstrategie ("Kletter"): Tiefensuche (1), Breitensuche (2),
  Beste Schranke (3).
- Logische Tests und Heuristik ("Zusatz"): Ausschalten (1), nur
  logische Tests (2), logische Tests und Heuristik (3).

Teilaufgaben werden vor allem durch die bisher eingepackten bzw.
verbotenen Gegenstnde charakterisiert. Diese sind in einem Vektor x
kodiert. Die Eintrge x[j]=1 bzw. x[j]=2 bedeuten, da Gegenstand j
eingepackt bzw. verboten ist. Zustzlich wird in x gespeichert, welche
Gegenstnde bei der Berechnung der Schranke bentigt werden. Fr jeden
freien Gegenstand j gibt  das in die Berechnung eingehende Gewicht an.
Beim Verzweigen entstehende Teilaufgaben werden gem ausgewhlter
Kletterstrategie in einer dynamischen Liste (Kandidatenliste)
gespeichert. Bei der "Tiefensuche" werden die entstehenden
Teilaufgaben an den Anfang und bei der "Breitensuche" ans Ende der
Liste gestellt. Bei "Beste Schranke" wird einsortiert.

Fr grere Testinstanzen kann es bei "Beste Schranke" und
"Breitensuche" vorkommen, da der verfgbare Speicherplatz nicht fr
alle Knoten der Kandidatenliste ausreicht. Sobald dies absehbar ist,
schaltet das Programm zur "Tiefensuche" um, die fr jede Ebene des
Baums nur zwei Knoten speichern mu. Schmuggeln im groen Stil.



