2009-03-10 3 views
7

NP-Vollständigkeit scheint mir eines dieser Dinge zu sein, die meistens nur theoretisch sind und nicht wirklich etwas, dem man in einer normalen Arbeitsumgebung begegnet.Hatten Sie jemals eine Geschäftsanforderung, die sich als ein NP-vollständiges Problem herausgestellt hat?

Also bin ich irgendwie neugierig, wenn irgendjemand jemals ein Problem bei seiner Arbeit hatte, das sich als NP-komplett herausstellte und dass das Design geändert werden musste, um es anzupassen?

Antwort

7

Wie die anderen bereits erwähnt haben, sind der Rucksack (für die Verpackung von Fracht) und das Problem der reisenden Verkäufer wahrscheinlich die häufigsten "echten" NP-vollständigen Probleme.

Ich stoße bei der Arbeit auf Probleme, die sich nicht als NP-vollständig oder unvollständig erweisen, weil sie nicht sehr gut definiert sind.

+7

+1 für "nicht sehr gut definiert "- in der realen Welt scheint dies ein viel häufigeres Problem zu sein. –

0

Das Problem des Geschäftsreisenden ist ein perfektes Beispiel. Die gleichen logistischen Probleme gelten für Fluggesellschaften, Postämter und alle Arten von Industrien.

1

Jede Art von Mapping-Tool, wo man einer optimalen Fahrpunkte zwischen mehr als zwei Stellen kann ohne Änderungen zu einem NP-Complete problem

+1

Ich hatte damit zu tun, bevor. Ich landete nur mit Google Maps :( – TheTXI

+2

TheTXI: Das erinnert mich an http://xkcd.com/399/ – Brian

1

Das Problem der Optimierung der Welle aus einem Lager Kommissionierung entspricht die Travelling Salesman problem finden muß.

Das heißt, Sie haben N-Bestellungen, die darauf warten, abgeholt zu werden, und Sie möchten die besten Aufträge finden, um die zurückgelegte Entfernung und die von einem Kommissionierer besuchten Auswahlorte zu minimieren.

Ich bin kürzlich auf dieses Problem gestoßen. Wir punften und verwendeten eine Näherung, die für den durchschnittlichen Fall gut funktioniert, aber manchmal suboptimale Ergebnisse liefert.

1

Auch das Rucksackproblem (das NP-schwer ist) zeigt ziemlich häufig auf. Es ist eine verführerische Falle, um Dinge zu optimieren.

1

Ich stimmte zu, Software für den Vater eines Freundes zu schreiben, als ich ein Student des ersten Jahres war. Es war für die Ressourcenplanung. Ich habe es damals nicht bemerkt, aber es stellte sich heraus, dass es ein NP-vollständiges Problem war.

Glücklicherweise war es einfach akzeptabel, eine Lösung zu finden - sie musste nicht die optimale Lösung finden. Es machte Spaß, Heuristiken zu schreiben - eigentlich eine Reihe von ihnen -, die während des laufenden Programms geändert werden konnten und versuchten, das Problem zu lösen.

Ich hatte eine Lösung in einem Sommer gemacht, aber dann jedes Jahr an neuen Versionen gearbeitet. Meine großen Pläne, es zu verkaufen, fielen flach aus. Ich war ein besserer Entwickler als ein Vermarkter.

Es hat viel Spaß gemacht und mich früh über die reale Welt der Entwicklung gelehrt - (Endbenutzer, Anforderungserfassung, Tests, usw. - viele der Dinge, die Sie nicht in undergy CS bekommen)

Um Ihre Frage zu beantworten - es war für einen Lehrer, der Schüler für spezielle Unterweisung zu planen hatte. Er war Logopäde und Audiologe - aber es könnte auf jedem ähnlichen Gebiet angewendet werden. Er hatte Lehrer-, Klassen- und Schüleraktivitäten zur Verfügung und musste einige Male pro Woche mit Schülern zusammentreffen. Es ist das Rucksackproblem oder irgendeine Anzahl anderer ähnlicher/äquivalenter Planungsprobleme.

Es stellte sich heraus, dass es einfach in Ordnung war, eine Lösung zu bekommen - wir mussten nichts maximieren oder minimieren - wir mussten nur alle Studenten unterbringen.

Ich kann mich nur erinnern, nicht in der Lage zu sein, Testfälle zu lösen, die ich für Szenarien benutzt habe - all die Probleme, die er über die Jahre hinweg gelöst hat.

Ich konnte es nie vermarkten - hauptsächlich weil ich keine Ahnung hatte, was ich tat und ich nicht sicher war, wie ich meinen Markt/Käufer erreichen könnte.

1

Es ist erwähnenswert, dass es heuristische Approximationstechniken gibt, um "gut genug" Antworten für NP-vollständige Probleme zu erhalten, wie zum Beispiel Simulated Annealing und Compressed Annealing. Wenn Sie Ihr NP-vollständiges Problem auf das Problem Traveling Salesman reduzieren können, können Sie diese Ansätze verwenden. (Jedes NP-vollständige Problem kann auf ein beliebiges anderes NP-vollständiges Problem reduziert werden, aber tatsächlich ist das manchmal ein Schmerz in den Arsch.)

Jedenfalls gibt es Simulated-Annealing- und Compressed-Annealing-Implementierungen; Eine solche ist Djinni, die in C++ geschrieben ist und Python-Bindungen hat.

0

Ein anderes Beispiel ist, dass Unternehmen mit regionalen Distributionszentren, insbesondere solche, die direkt an den Kunden liefern (z. B. Netflix), sich um die Familie der NP-vollständigen Probleme sorgen müssen, die als facility location bekannt sind.

Tatsächlich ist die Idee, dass NP-vollständige Probleme in der realen Welt relevant sind, durch die Tatsache belegt, dass Approximationsalgorithmen für sie so häufig in Zeitschriften der operativen Forschung auftauchen.

0

Ich arbeitete ein Mapping-Programm vor ein paar Jahren, wie ein natives Google Maps. Ich habe kleine Marker auf die Karte gelegt, aber viele Marker waren an bestimmten Stellen dicht gedrängt. Mein Chef sagte: "Lass es mich machen, damit ich die Marker ein wenig wegziehen kann" (und es würde eine Linie oder Sprechblase-Zeiger-Ding vom Marker zum tatsächlichen Ort gehen).

Ich dachte, es war albern, den Benutzer dies zu tun, vor allem, da er 5 Minuten damit verbringen würde, es perfekt zu machen, und dann die Zoomstufe ändern, und dann wäre alles falsch.

Ich entschied mich zu versuchen, eine Funktion zu schreiben, um eine Möglichkeit zu finden, Etiketten so anzuordnen, dass die gesamte Bildschirmdistanz von jedem Etikett zu seiner Position minimiert wurde. Ich glaube, ich habe mich damals davon überzeugt, dass dies NP-vollständig ist, aber dass die Anzahl der Punkte klein genug sein könnte, um zumindest in vielen Fällen noch durchführbar zu sein. (Ich erinnere mich, dass wir viel zu viel Zeit im Unterricht auf NP-Vollständigkeitsbeweise und nicht genug auf alternativen Lösungen verbracht haben: Wenn Ihr Chef etwas getan haben will, können Sie nicht einfach "NP hart, geht nicht" sagen noch haben, um mit etwas.)

Dann Google maps kam und nur splatted alle Etiketten auf der jeweils anderen, die völlig saugt (und ich es verfluchen jeden Tag), aber ich kann nicht mithalten Mit ihren anderen Eigenschaften gab ich auf. :-(

Verwandte Themen