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