Anwendungen von Branch and Bound

Werbung
Anwendungen von Branch and Bound
Frederik Wollny
Philipp Schmid
Hochschule Aalen
Hochschule Aalen
Wintersemester 16/17
1
Inhaltsverzeichnis
1 Einleitung
3
2 Geschichte
3
3 Grundlagen
3.1 Optimierungsprobleme . . . . . . . .
3.2 NP-Vollständigkeit . . . . . . . . . .
3.2.1 Die Klasse NP . . . . . . . .
3.2.2 Polynomiale Reduzierbarkeit
3.2.3 NP-harte Probleme . . . . . .
3.2.4 NP-vollständige Probleme . .
.
.
.
.
.
.
3
3
4
4
4
4
4
4 Branch and Bound
4.1 Prinzip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Bestimmung der Bound . . . . . . . . . . . . . . . . . . . . .
5
5
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Anwendungen
5.1 Travelling Salesman Problem . . . . . . . . . . . . . . .
5.1.1 Problemstellung . . . . . . . . . . . . . . . . . .
5.1.2 Lösung mit Branch and Bound . . . . . . . . . .
5.1.3 Beispiel . . . . . . . . . . . . . . . . . . . . . . .
5.2 Ganzzahlige Lineare Optimierung . . . . . . . . . . . . .
5.2.1 Problemstellung . . . . . . . . . . . . . . . . . .
5.2.2 Lösung mit Branch and Bound . . . . . . . . . .
5.2.3 Beispiel der ganzzahligen Linearen Optimierung
5.2.4 Anwedung in der Realität . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
7
8
12
12
12
13
15
6 Fazit
15
Abbildungsverzeichnis
17
Literaturverzeichnis
18
2
1
Einleitung
Optimierungsprobleme spielen in der Theoretischen Informatik eine große
Rolle. Als besonders hartnäckig haben sich Optimierungsprobleme erwiesen, die NP-vollständig sind, da es für sie keine effizienten Lösungsverfahren
gibt. Um für diese trotzdem möglichst gute Lösungen zu finden, wurden
mehrere Verfahren entwickelt. Eines davon ist das sogenannte Branch-andBound-Verfahren, auf welches in dieser Arbeit eingegangen wird, speziell auf
mögliche Anwendungen. Dazu wird zuerst ein kurzer geschichtlicher Einblick
gewährt, worauf die Grundlagen, die zum Verständnis notwendig sind, folgen. Dies sind eine Definition von Optimierungsproblemen, sowie von NPVollständigkeit. Darauf folgt eine Darstellung des grundlegenden Prinzips
von Branch and Bound und danach zwei konkrete Anwendungen. Dies sind
das Travelling Salesman Problem und die Ganzzahlige lineare Optimierung.
Hier erfolgt zuerst eine Darlegung des Problems und dann ein konkretes
Beispiel. Schlussendlich folgt noch ein Fazit.
2
Geschichte
Branch and Bound wurde erstmals von A.H. Land und A.G. Doig 1960 im
Rahmen des Operations Research formuliert. [FU-Berlin]
3
Grundlagen
3.1
Optimierungsprobleme
Bei Optimierungsproblemen wird die beste Lösung aus einer Menge von
möglichen Lösungen gesucht.
Schöning definiert ein Optimierungsproblem durch drei Anforderungen:
• Es muss eine Menge gültiger Eingaben geben, wobei es möglich sein
muss, diese Gültigkeit zu überprüfen.
• Für diese Eingaben muss es zugeordnete Lösungen geben, deren Korrektheit überprüfbar sein muss.
• Zudem wird eine Bewertungsfunktion benötigt, die jede Lösung auf
einen Wert abbildet.
Die Bedingungen sowie sowie die Bewertungsfunktion sollen je mit polynomialer Komplexität berechenbar sein.
3
Es gibt zwei Fälle von Optimierungsproblemen: Minimierungs- und Maximierungsprobleme. Bei Minimierungsproblemen soll der Wert, der einer
Lösung zugeordnet wird, minimal sein, bei Maximierungsproblemen maximal. [Schoe01]
Wie bereits erwähnt, eignet sich Branch and Bound für Optimierungsprobleme, die NP-Vollständig sind. Deshalb wird im nächsten Kapitel auf
NP-Vollständigkeit eingegangen.
3.2
3.2.1
NP-Vollständigkeit
Die Klasse NP
Die Klasse N T IM E enthält alle Sprachen, für die es eine nichtdeterministische Mehrband-Turingmaschine gibt, deren Zeit eine obere Schranke hat,
die sich mit einer Funktion in Abhängigkeit der Eingabe berechnen lässt.
Die Vereinigung dieser Sprachen unter der Bedingung, dass diese Funktion
ein Polynom ist, ist die Klasse NP. [Schoe08]
Bis jetzt wurden noch keine Algorithmen entdeckt, die eines dieser Probleme in polynomialer Zeit lösen können. [Sip06]
3.2.2
Polynomiale Reduzierbarkeit
Bei einer Reduzierung wird ein Problem so auf ein anderes abgebildet, dass
die Lösung für das eine Problem zu einer Lösung für das andere Problem
führt. [Sip06]
Eine Sprache A heißt auf eine andere Sprache B reduzierbar, wenn es
eine Funktion gibt, die für jedes in der Sprache A enthaltene Wort ein Wort
berechnet, das in der Sprache B enthalten ist. Dies muss auch umgekehrt
gelten, also die Funktion bijektiv sein. Ist diese Funktion in polynomialer
Zeit berechenbar, spricht man von polynomialer Reduzierbarkeit. [Schoe08]
3.2.3
NP-harte Probleme
Eine Sprache ist NP-hart, falls sich alle Sprachen in NP auf diese Sprache
reduzieren lassen, sie also mindestens genauso schwer lösbar ist, wie jedes
andere Problem in NP. [Schoe08]
3.2.4
NP-vollständige Probleme
Ist eine NP-harte Sprache selbst in NP enthalten, heißt diese NP-vollständig.
[Schoe08]
Bis jetzt existieren - wie bereits erwähnt - keine Algorithmen mit polynomialer Zeit für diese Probleme. Sollte jedoch nur einer für ein bestimmtes
Problem entdeckt werden, sind alle NP-vollständigen Probleme in polynomialer Zeit lösbar. [Sip06]
4
4
4.1
Branch and Bound
Prinzip
Um das Verfahren anzuwenden, muss sich die Lösung Stück für Stück als
Baum aufbauen lassen; die Wurzel des Baumes stellt dann die leere Lösung
dar.[Schoe01]
Von der Wurzel aus wird nun - je nach Problemstellung verschieden –
der Verzweigungsschritt ausgeführt. Dies führt zu neuen Knoten, für die die
Bound bestimmt werden muss. Diese Bound ist entweder eine untere Schranke für Minimierungs-, oder eine obere für Maximierungsprobleme. Die Berechnung der Bound ist ebenfalls problemspezifisch. Die Bound eines Knoten
besagt, dass von diesem aus keine Lösung gefunden werden kann, die besser
ist, als von der Bound angegeben. Somit lohnt es sich nicht, einen Pfad weiterzuverfolgen, wenn ein anderer Knoten auf dieser Ebene eine höhere obere
bzw. niedrigere untere Schranke hat. Es wird also immer der Knoten mit
der für das aktuelle Problem besseren Bound ausgewählt, und von diesem
aus weiter gesucht.[Schoe01]
Diese zwei Schritte werden wiederholt, bis eine endgültige Lösung gefunden wurde. Ist die Güte dieser Lösung minimal bzw. maximal im Vergleich
zu den Bounds anderer Blätter, wurde eine optimale Lösung gefunden. Dies
liegt daran, das dann von anderen Blättern aus im besten Fall nur gleich
gute Lösungen gefunden werden können.[Schoe01]
In folgender Graphik wird das Prinzip nochmal mit Hilfe eines Baumes
dargestellt. Die Zahl im Knoten entspricht der Bound, es wird immer mit
dem Knoten mit der kleineren Zahl weitergemacht, es handelt sich also um
ein Minimierungsproblem.
5
Abbildung 1: Prinzip von Branch and Bound
Das Verfahren steht und fällt also mit den Bounds. Wie diese prinzipiell
bestimmt werden können, folgt im nächsten Abschnitt.
4.2
Bestimmung der Bound
Um das Verfahren anwenden zu können, muss es möglich sein, Bounds zu
bestimmen. Diese sollten natürlich möglichst genau, sowie effizient berechenbar sein.[Schoe01]
Eine Variante zur Bestimmung der Bound ist es, das Problem zu vereinfachen, genannt Relaxation, indem zum Beispiel Bedingungen der Problemstellung missachtet werden. Das ursprüngliche Problem ist dann ein Spezialfall der nun allgemeineren Problemstellung, und somit sind die Lösungen
für das eigentliche Problem eine Teilmenge der Menge der Lösungen des relaxierten Problems. Die Qualität dieser allgemeineren Lösungen kann dann
als Bound verwendet werden.[Schoe01]
Nun ist das Prinzip des Verfahrens bekannt. Wie dieses nun konkret bei
Optmierungsproblemen eingesetzt werden kann, wird im nächsten Kapitel,
den Anwendungen, dargestellt.
6
5
Anwendungen
5.1
5.1.1
Travelling Salesman Problem
Problemstellung
Als Eingabe dient ein Graph mit gewichteten Kanten und eine ganze Zahl.
Gefragt ist, ob es in diesem Graph einen Hamilton-Kreis gibt, dessen Gewicht höchstens dieser ganzen Zahl entspricht. Ein Hamilton-Kreis ist eine
Menge von Kanten, die die Knoten des Graphen so verbindet, das ein Kreis
entsteht, in dem jeder Knoten genau einmal vorkommt. [HopMotUll01]
Es muss also nach einem Hamilton-Kreis mit möglichst kleinem Gewicht
gesucht werden.
Wenn die Knoten als Städte und die Kanten als Straßen mit gegebener
Länge angesehen werden, entspricht die Problemstellung der Suche nach
einer Rundreise, die eine gewisse Länge nicht überschreitet.
5.1.2
Lösung mit Branch and Bound
Der Graph, der als Eingabe dient, kann auch mit Hilfe einer Matrix dargestellt werden. Die Matrix enthält die Entfernungsangaben zwischen je zwei
Städten, was dem Gewicht der Kante entspricht, die die zwei Städten entsprechenden Knoten verbindet. Diese Matrix wird nun im Laufe der Problemlösung modifiziert. Es wird ein Element (i, j) der Matrix ausgewählt
und zwei neue Matrizen erstellt. Die eine Matrix M 0 repräsentiert den Teil
der Lösungen, die diese Verbindung zwischen zwei Städten nutzen, die andere Matrix M 00 den Teil, der sie nicht benutzt. In der für die Nutzung dieses
Weges stehenden Matrix M 0 werden die Einträge auf ∞ gesetzt, die nicht
mehr in Frage kommen, wenn dieser Weg genutzt wird. Dies sind, falls das
Element M (i, j) gewählt wurde: M 0 (j, i), M 0 (i, k) für k 6= j und M 0 (l, j) für
l 6= j. In Matrix M 00 wird das Element M 00 i, j) auf ∞ gesetzt. Dies war nun
der Branch-Schritt; es sind zwei neue Knoten entstanden.[Schoe01]
Für diese muss nun die Bound bestimmt werden. Der Knoten mit der
niedrigeren Bound ist für das TSP besser, da eine möglichst kurze Rundreise gesucht wird. Von diesem Knoten aus wird nun weitergesucht, indem
erneut der Branch-Schritt durchgeführt wird. Dies wird solange wiederholt,
bis schlussendlich die verbleibenden Elemente der Matrix, also die, die nicht
auf ∞ gesetzt wurden, eine Rundreise beschreiben. Wenn die Bound dieses
Blattes, verglichen mit den Bounds anderer Blätter, am kleinsten ist, wurde
eine optimale Lösung gefunden. Andere Lösungen können im besten Fall nur
genauso gut sein.[Schoe01]
7
Nun wird eine Möglichkeit zur Bound-Bestimmung dargestellt. Zuerst
wird nacheinander in jeder Zeile sowie in jeder Spalte das Minimum gesucht. Dieses Minimum wird nun von den Werten in dieser Zeile bzw. Spalte
abgezogen. Das Optimierungsproblem vor und das nach der Reduktion einer Zeile oder Spalte ist bis auf die Werteverschiebung um das Minimum
äquivalent. Die Summe der Minima ergibt die Bound. [Schoe01]
Um das Problem möglichst effizient zu lösen, kommt es auch darauf
an, welche Kanten ausgewählt werden. Wie bereits dargelegt, hat man eine
Lösung gefunden, wenn die Matrix eine Permutationsmatrix darstellt. Dies
wird um so schneller erreicht, desto mehr Elemente der Matrix auf ∞ gesetzt werden. Wenn nun also in einem Schritt möglichst viele Elemente auf
∞ gesetzt werden, kommt man mit weniger Verzweigungsschritten zu einer
Lösung. Die Matrix M 0 , die der Wahl eines konkreten Weges entspricht,
enthält deutlich mehr ∞ als die andere Matrix M 00 . Dies ist auch daher ersichtlich, dass man mit der Wahl eines bestimmten Weges der Lösung näher
kommt, als wenn man nur einen möglichen suboptimalen auschließt.
Das Ziel muss also sein, eine Kante für den Verzweigungsschritt auszuwählen,
die eine möglichst hohe Chance hat, Teil einer optimalen Lösung zu sein und
daher zu einer Matrix mit kleinerem Bound führt, von der aus dann weitergemacht wird. Im Algorithmus von Little, Murty, Sweeney und Karel von
1963 wird dies erreicht, indem die Wege betrachtet werden, die eine konkrete Kante (i, j) nicht enthalten. Da eine Stadt auf irgendeinem Weg erreicht
und auch wieder verlassen werden muss, muss stattdessen eine andere Kante
der Spalte j und eine der Zeile j verwendet werden. Dies erfolgt im besten
Fall mit der jeweils kürzesten Kante.[LiMuSwKa63]
Indem man also das Minimum der Spalte j und das der Zeile i, jeweils
abgesehen von der Kante (i, j), sucht und beide Minima addiert, erhält man
die mindeste Wegstrecke, die zurückgelegt werden muss, falls diese Kante
(i, j) nicht gewählt wird. Die Kante, bei der diese Summe maximal ist, hat
also das größte Einsparpotenzial und es ist folglich ratsam, diese Kante zu
wählen. [LiMuSwKa63]
5.1.3
Beispiel
Wir betrachten

∞
8
 7 ∞

 5 14
10 10
folgende Matrix M :

13 22
9 12 

∞ 11 
11 ∞
8
Für diese wird nun die Zeilenreduktion durchgeführt:


∞
0
5 14
 0 ∞
2
5 


 0
9 ∞
6 
0
0
1 ∞
Das Aufsummieren der Zeilenminima: 8 + 7 + 5 + 10 = 30
Und die Spaltenreduktion:


∞
0
4
9
 0 ∞
1
0 


 0
9 ∞
1 
0
0
0 ∞
Aufsummieren der Spaltenminima:0 + 0 + 1 + 5 = 6
Dies führt zu: 30 + 6 = 36, was der Bound für alle Lösungen entspricht,
da die Wurzelmatrix zu jeder Lösung erweitert werden kann.
Es wird nun wieder mit der Ausgangsmatrix begonnen. Es muss nun ein
Element ausgewählt werden, um den Verzweigungsschritt zu organisieren.
Wenn man links mit der ersten Spalte beginnt, stehen drei Elemente zur
Auswahl. Wählt man die 7, sind die verbleibenden Minima der Zeile bzw.
Spalte 9 und 5, was zusammen 14 ergibt. Die Wahl von 5 führt zu 7+11 = 18,
10 zu 10 + 5 = 15. Das Maximum dieser drei Summen ist 18, also wird mit
(3, 1), der 5, verzweigt. Dies führt zu folgenden beiden Matrizen:(Die Bound
b wird immer hinter der Matrix angegeben, (i,j) bedeutet die Wahl dieser
Kante, (i, j)denAusschlussdieserKante.
(3,1)

∞
 ∞

 5
∞
8
∞
∞
10
∞
9
∞
11

22
12 
 b = 35
∞ 
∞
(3, 1)

∞
 7

 ∞
10
8
∞
14
10
13
9
∞
11

22
12 
 b = 37
11 
∞
Die Bound der Matrix, die der Wahl der Kante (3, 1) entspricht ist niedriger, also wird mit dieser Matrix weitergemacht. Da in der ersten Spalte
9
bereits alle Elemente außer eines auf ∞ gesetzt wurden, wird in der zweiten
Spalte fortgefahren. Mit den gleichen Überlegungen wie in Schritt eins wird
nun die Kante (1, 2) ausgewählt.
(1,2)

∞
 ∞

 5
∞
8
∞
∞
∞
∞
9
∞
11

∞
12 
 b = 35
∞ 
∞
(1, 2)

∞
 ∞

 5
∞
∞
∞
∞
10
∞
9
∞
11

22
12 
 b = 47
∞ 
∞
Hier bleibt nur noch die Wahl von (4, 3) übrig, um die Permutationsmatrix zu erhalten.
(4,3)

∞
 ∞

 5
∞
8
∞
∞
∞
∞
∞
∞
11

∞
12 
 b = 36
∞ 
∞
Die Permutationsmatrix führt zu folgender Reise mit Länge 36: 1-2-4-31.
In folgender Graphik wird der Lösungsweg nocheinmal als Baum dargestellt. Hier ist dann deutlich ersichtlich, auf welchem Weg die Lösung
gefunden wird.
10
Abbildung 2: Lösungsweg als Baum
11
5.2
5.2.1
Ganzzahlige Lineare Optimierung
Problemstellung
Optimierungsprobleme lassen sich meist bequem mithilfe des Simplex-Verfahrens
lösen. Voraussetzung hierfür ist, dass auch Lösungen akzeptiert werden, welche nicht ganzzahlig sind. Nun gibt es jedoch Optimierungsprobleme, bei
denen nur ganzzahlige Lösungen Sinn machen. so z.B [Wiki1]
• Es Können keine 5,3 Autos gebaut werden.
• Die Lösung kann den Wert 0 oder 1 annehmen ,z.B Es gibt eine Klausureinsicht, oder eben nicht.
5.2.2
Lösung mit Branch and Bound
Um eine solche ganzzahlige Lösung zu erreichen, kann nun Branch-andBound verwendet werden. Als Grundlage wird hierfür eine bereits optimale
Lösung ( = z), welche mithilfe des Simplexverfahrens oder einer anderen
gängigen Methode berechnet wurde, benötigt. Sollte diese Lösung bereits
aus Integer Werten bestehen, so hätte man bereits eine ganzzahlige Lineare
Optimierung und müsste Branch-and-Bound nicht anwenden. Ist dies nicht
der Fall, so wird nun die ersten Fließkomma-Variable des Ergebnisses, welches uns das Simplex-Verfahren liefert als Branchingvariable x1 gewählt und
stellt unser erstes Problem dar. Dies Variable wird nun in zwei Sub-Probleme
unterteilt.Diese Sub-Probleme werden nun mithilfe des Simplexverfahrens,
welches dx1 e und bx1 c als Eingabe erhält, berechnet. Abhängig davon, ob ein
Maximierungsproblem bzw. Minimierungsproblem vorliegt, wird das SubProblem mit der höchsten- bzw. niedrigsten Lösung ausgesucht, welches zuvor noch nicht gebrancht wurde.[mgce]
Die oben genannten Schritte werden solange wiederholt, bis eine vollständige
Integer Lösung vorhanden ist. Dieses Ergebnis wird nun als bestes bisher gefundenes ganzzahliges Ergebnis in der Variable zip gespeichert (entspricht
der lower Bound bei Maximierungsproblemen bzw. upper Bound bei Minimierungsproblemen), nun gilt es die restlichen sub-Probleme mit den oben
genannten Schritten zu durchlaufen, um so noch unentdeckte Ergebnisse mit
besserem Resultat zu erhalten und diese als neue Bound in zip zu speichern.
Dies ist jedoch nur möglich, wenn [FU-Berlin]
• Die Bounds nicht über- bzw. unterschritten werden, d.h z(Ki ) > zip(Maximierung)
bzw. z(Ki ) < zip(Minimierung)
• Gegebene Bedingungen nicht verletzt sind.
12
5.2.3
Beispiel der ganzzahligen Linearen Optimierung
Gegeben sei folgendes Maximierungsproblem:
max
2x1
3x1
5x1
x1, x2
+ x2
+ 2x2 ≤
6
+ 2x2 ≤
8
≥ 0 und Integer
eine Optimale Lösung wäre x1 = 1, x2 = 1.5 mit z = 3.5
Abbildung 3: Branch and Bound 1.Branch Schritt
Im Knoten K0 wird x2 als Branching Variable gewählt, da sie dem ersten
Float-Wert entspricht und die beiden Kindknoten (Subprobleme) mit x2 = 1
bzw. x2 = 2 berechnet. So erhält man in Knoten 1 die Lösung z(K1) = 3.4
und in Knoten 2 z(K2) = 3.34 da z(K1) größer als z(K2) ist und es sich hier
um ein Maximierungsproblem handelt, muss dieser Knoten weiterentwickelt
werden.
13
Abbildung 4: Branch and Bound 2.Branch Schritt
In diesem Verzweigungsschritt erhält man die erste Integer Lösung in
z(K3) = 3 und setzt zip = z(K3). z(K4) ist ungültig, da der zulässige Wertebereich (Bedingungen) überschritten ist. Die Verzweigung am linken Ast
ist nun abgeschlossen. Es wird nun der rechte Ast K2 betrachtet und dieser
verzweigt. Dabei gilt für K5 die Bedingung x1 ≤ 0 und für K6 die Bedingung
x1 ≥ 1 (x1 ist Branchingvariable).
14
Abbildung 5: Branch and Bound 3.Branch Schritt
Auch hier erhält man mit z(K5) = 3 = zip eine Optimale Integer Lösung,
sowie den ungültigen Knoten z(K6), welcher die gegebenen Bedingungen
verletzt. Die beste zulässige Lösung des ganzzahligen Maximierungsproblems
ist bei x1=1 und x2=1 mit z(K3)=3 bzw. x1=0 und x2=3 mit z(K5)=3
gegeben.[ingi]
5.2.4
Anwedung in der Realität
Praktisch angewandt wird dieses Verfahren vor allem in der Produktionsplanung, eine Anwendung könnte es sein, ein Optimum (Maximum) aus
Produktion, Resourcen, Kosten und Gewinn zu kalkulieren, um so einen
größtmöglichen Nutzen zu erhalten. Ein weiterer wichtiger Anwendungsfall
ist die Planung von Kommunikationsnetzen. Ziel hierbei ist es, die Kapazität
und benötigte Leistung so zu planen, dass sämtlicher Bedarf gedeckt ist und
die Kosten dabei minimal bleiben.[Wiki1]
6
Fazit
In der Arbeitung wurde verdeutlicht, wie Branch and Bound theoretisch
anzuwenden ist und geklärt, welche Art von Problemen mithilfe von Branch
and Bound lösbar bzw. optimierbar sind. Weitergehend wurde mit Hilfe
von zwei Beispielen gezeigt, dass die Umsetzung von Branch and Bound
ein einfacher und in den meisten Fällen leicht zu berechnender Weg ist,
15
um NP-vollständige Optimierungsprobleme zu lösen. Abschließend wurde
noch gezeigt, in welchen Bereichen der Industrie und Wirtschaft Branch
and Bound angewendet wird. Jedoch gilt es auch zu erwähnen, dass Branch
and Bound nicht nur Gutes mit sich bringt. So entwickelt sich der Branchand-Bound-Baum in Abhängigkeit von der Anzahl Variablen und gegebenen
Restriktionen rasant. Dies bedeutet insbesondere bei großen Problemen, dass
ein sehr hoher Rechen- und Speicheraufwand entsteht. [mpia]
16
Abbildungsverzeichnis
1
2
3
4
5
Prinzip von Branch and Bound . . .
Lösungsweg als Baum . . . . . . . .
Branch and Bound 1.Branch Schritt
Branch and Bound 2.Branch Schritt
Branch and Bound 3.Branch Schritt
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
11
13
14
15
Literatur
[Schoe01] Schöning, Uwe: Algorithmik. Spektum Akademischer Verlag, 2001
[Schoe08] Schöning, Uwe: Theoretische Informatik - kurz gefasst. Spektum
Akademischer Verlag, 2008
[Sip06] Sipser, Michael: Introduction to the Theory of Computation. Thomson Course Technology, 2006
[HopMotUll01] Hopcroft, John E., Motwani, Rajeev, Ullman, Jeffrey D.: Introduction to Automata Theory, Languages, and Computation. Addison
Wesley, 2001
[LiMuSwKa63] Little, J.D.C., Murty, K.G., Sweeney, D.W., Karal, C.: An
algorithm for the travelling salesman problem. Operations Research 11,
1963
[FU-Berlin] Entstehung von Branch and Bound“ S.1
”
http://www.diss.fu-berlin.de/diss/servlets/
MCRFileNodeServlet/FUDISS_derivate_000000003332/02_
Friedrich_Kap2.pdf?hosts=
[mpia] Branch and Bound“
”
http://www.mathepedia.de/Branch-and-Bound.aspx
[mgce] Branch and Bound - Beispiel“
”
http://mat.gsia.cmu.edu/orclass/integer/node13.html
[FH-Rhein-Siegen] Branch and Bound in der Theorie“
”
http://www2.inf.fh-rhein-sieg.de/~pbecke2m/or/bandb1.pdf
[ataa] Lösungsverfahren ganzzahliger Optimierung“
”
https://www.ads.tuwien.ac.at/teaching/ss09/
FortgeschritteneAD/folien/Optimierung2.pdf
[ingi] Anwendung von Branch and Bound an eine Beispiel “
”
https://www.ingenieurkurse.de/operations-research-2/
ganzzahlige-optimierung/branch-and-bound-verfahren/
17
maximierungsprobleme/branch-and-bound-am-maximierungsproblem-optimale-loesung/
beispiel-branch-and-bound-am-maximierungsproblem-optimale-loesung.
html
[Wiki1] Anwendung Ganzzahlige Lineare Optimierung“
”
https://de.wikipedia.org/wiki/Ganzzahlige_lineare_
Optimierung
18
Herunterladen