{"id":3679,"date":"2012-03-07T06:23:32","date_gmt":"2012-03-07T05:23:32","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=3679"},"modified":"2023-05-16T08:32:10","modified_gmt":"2023-05-16T06:32:10","slug":"das-p-np-problem-teil-3-pnp","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2012\/03\/das-p-np-problem-teil-3-pnp.htm","title":{"rendered":"Das P-NP-Problem, Teil 3: P=NP?"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2012\/03\/das-p-np-problem-teil-3-pnp.htm#comments'>1 Kommentare.<\/a>)<\/small> <\/div>\n<p><strong><em>Executive summary: Die Fragen vom letzten Mal sind sich alle irgendwie \u00e4hnlich: Wenn man f\u00fcr eine davon einen effizienten L\u00f6sungsweg gefunden hat, kann man den auf die anderen \u00fcbertragen. Wird man je einen finden?<\/em><\/strong><\/p>\n\n\n\n<p>Hier zur Erinnerung noch einmal der Ausschnitt aus den Komplexit\u00e4tsklassen <a href=\"https:\/\/www.herr-rau.de\/wordpress\/2012\/03\/das-p-np-problem-teil-2-p-und-np.htm\">vom letzten Mal<\/a>:<br><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3678\" title=\"komplexitaet_klassen\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/komplexitaet_klassen.jpg\" alt=\"\" width=\"550\" height=\"308\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/komplexitaet_klassen.jpg 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/komplexitaet_klassen-150x84.jpg 150w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In P, da liegen die relativ einfachen Aufgaben.<\/li>\n\n\n\n<li>In NP (aber au\u00dferhalb von P), da liegen die schweren Aufgaben, bei denen sich die L\u00f6sung wenigstens leicht \u00fcberpr\u00fcfen l\u00e4sst. Die Zeichnung geht davon aus, dass P eine echte Teilmenge von NP ist, was nicht unbedingt stimmen muss.<\/li>\n\n\n\n<li>In EXPTIME (aber au\u00dferhalb von NP), da liegen die schweren Aufgaben, bei denen sich die L\u00f6sung auch nur schwer \u00fcberpr\u00fcfen l\u00e4sst.<\/li>\n<\/ol>\n\n\n\n<p><strong>Der Handlungsreisende<\/strong><\/p>\n\n\n\n<p>Viele der Aufgaben aus (2) spielen in der Praxis eine gro\u00dfe Rolle. Ein Beispiel daf\u00fcr ist das Problem des Handlungsreisenden (Travelling Salesman). Das geht von einer Reihe von Orten aus, die zum Teil durch Stra\u00dfen miteinander verbunden sind, etwa so:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/komplexitaet_graph.jpg\" alt=\"\" title=\"komplexitaet_graph\"\/><\/figure>\n\n\n\n<p>Die Buchstaben stehen f\u00fcr die Ortsnamen, die Verbindungen dazwischen sind die Stra\u00dfen. Das Ziel des Handlungsreisenden ist es, alle Orte zu besuchen, und zwar derart, dass er insgesamt m\u00f6glichst wenig Entfernung zur\u00fccklegt und am Schluss wieder an seinem Ausgangspunkt ankommt. Die Aufgabe f\u00fcr ein Programm lautet etwa: Nenne mir eine solche Rundreise (wenn es sie denn gibt), die h\u00f6chstens die L\u00e4nge 9 hat. <em>Wenn<\/em> man erst einmal die L\u00f6sung hat, kann man recht einfach \u00fcberpr\u00fcfen, ob sie stimmt. Einfach hei\u00dft: in h\u00f6chstens polynomieller Zeit. In diesem Beispielgraphen ist das sowieso sehr leicht. <em>Dass<\/em> es eine L\u00f6sung gibt, ist auch klar: zur Not probiert man einfach alle m\u00f6glichen Kombinationen aus und schaut, ob eine geeignete dabei ist. Allerdings steigt der Aufwand daf\u00fcr exponentiell mit der Anzahl an Orten und Verbindungen, wenn man eine allgemeine L\u00f6sungsweg hat. (N\u00e4herungsweise L\u00f6sungen gibt es sehr gute f\u00fcr dieses Problem.)<\/p>\n\n\n\n<p><strong>Die Freundesclique<\/strong><\/p>\n\n\n\n<p>Ein weiteres Beispiel f\u00fcr ein Problem aus (2) ist das Cliquenproblem. Da geht es um einen Haufen von Sch\u00fclern, die sich m\u00f6gen k\u00f6nnen oder nicht. Eine Clique ist dabei eine Gruppe von Sch\u00fclern, von denen jeder jeden anderen in der Clique mag. Die Aufgabe dazu hei\u00dft: Nenne mir eine solche Clique (wenn es sie denn gibt), in der mindestens vier Sch\u00fcler sind. Hier ist so ein Haufen von Sch\u00fclern:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/komplexitaet_graph.jpg\" alt=\"\" title=\"komplexitaet_graph\"\/><\/figure>\n\n\n\n<p>Die Buchstaben stehen f\u00fcr die Sch\u00fcler (Anna, Bernd, Charlie, Denise&#8230;), die Verbindungen bedeuten, dass die sich m\u00f6gen. Bei einer Handvoll Sch\u00fcler geht das schnell, aber sobal die Zahlen gr\u00f6\u00dfer werden, wird das aufwendiger: der Aufwand steigt n\u00e4mlich exponentiell.<br>Die Antwort lautet \u00fcbrigens: ja, es gibt eine 4er-Clique, n\u00e4mlich {A, C, D, F}.<\/p>\n\n\n\n<p><strong>Logikr\u00e4tsel<\/strong><\/p>\n\n\n\n<p>Auch Logikr\u00e4tsel liegen in diesem Bereich. Damit meine ich beliebige Aufgaben wie<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>(x oder y) und (nicht (z) oder x)<\/p>\n<\/blockquote>\n\n\n\n<p>Dabei sind x, y, z jeweils wahr oder falsch, und die Frage ist: gibt es eine M\u00f6glichkeit, dass diese logische Formel insgesamt wahr ist? Man kann das immer durch Ausprobieren aller M\u00f6glichkeiten \u00fcberpr\u00fcfen, aber bei n Variablen gibt es 2<sup>n<\/sup> M\u00f6glichkeiten, der Aufwand steigt exponentiell, und das ist nicht praktikabel.<br>Im Beispiel geht das noch, da kann man die 2<sup>3<\/sup>=8 M\u00f6glichkeiten ausprobieren, und ja, es sind sogar 5 richtige dabei.<\/p>\n\n\n\n<p><strong>Zerlegung in Primfaktoren<\/strong><\/p>\n\n\n\n<p>Ein viertes Beispiel f\u00fcr ein Problem aus (2) ist die Primfaktorenzerlegung. Bei manchen Verschl\u00fcsselungstechniken nutzt man gerade das aus, dass diese Aufgabe so schwer ist &#8211; w\u00e4re sie es nicht, w\u00e4re das nicht sicher. (Zugegeben, ich k\u00fcrze hier etwas ab &#8211; die NP-Probleme sind n\u00e4mlich eigentlich Entscheidungsprobleme.)<\/p>\n\n\n\n<p><strong>\u00c4hnlichkeit all dieser Aufgaben<\/strong><\/p>\n\n\n\n<p>Der Knackpunkt ist jetzt der, dass die verschiedene Aufgaben in (2) sich \u00e4hnlicher sind, als man meint, und das in zweierlei Hinsicht.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Erst mal hat man f\u00fcr keine davon allgemeinen L\u00f6sungen in polynomieller Zeit gefunden, sondern nur welche mit exponentiellem Aufwand. Das hei\u00dft aber nicht, dass es keine schnelleren L\u00f6sungen gibt! Vielleicht findet man ja noch welche.<\/li>\n\n\n\n<li>Zweitens sind sie sich so \u00e4hnlich, dass, wenn man f\u00fcr eines davon eine solche effizientere L\u00f6sung gefunden hat, diese L\u00f6sung auch f\u00fcr alle anderen gilt. Und das ist das eigentlich Interessante an diesen Aufgaben, aber dazu werde ich kurz etwas ausholen.<\/li>\n\n\n\n<li>Wenn man sicher sein wollte, dass es keine solche effiziente L\u00f6sung gibt, dann m\u00fcsste man beweisen, dass es Probleme gibt, die in NP liegen, aber nicht in P &#8211; anders gesagt, dass P ungleich NP. Das ist das P=NP-Problem. Und das konnte noch keiner beweisen oder widerlegen. Wer&#8217;s tut, dem winken eine Million Dollar. So viel ist f\u00fcr die L\u00f6sung eines der <a href=\"http:\/\/de.wikipedia.org\/wiki\/Millennium-Probleme\">Millenium-Probleme<\/a> ausgesetzt. Man geht davon aus, dass P tats\u00e4chlich ungleich NP ist, dass man also nie eine effiziente L\u00f6sung finden wird.<\/li>\n<\/ul>\n\n\n\n<p>&#8212; Wer jetzt noch dabei ist, vertr\u00e4gt ein paar Definitionen:<\/p>\n\n\n\n<p><strong>Zur\u00fcckf\u00fchren auf einen anderen Aufgabentyp (Reduktion)<\/strong><\/p>\n\n\n\n<p>Nehmen wir an, ich w\u00e4re bereits in der Lage, zwei beliebige Zahlen miteinander zu multiplizieren.<br>Dann bin ich auch in der Lage, Quadratzahlen zu berechnen.<br>Denn das Quadrieren einer Zahl l\u00e4sst sich auf das Multiplizieren zweier Zahlen reduzieren. (Ich muss nur zus\u00e4tzlich darauf achten, dass die beiden Faktoren gleich sind.)<br>Wenn der zus\u00e4tzliche Aufwand bei der Reduktion vertretbar, also h\u00f6chstens polynomiell ist, hei\u00dft das polynomielle Reduktion.<\/p>\n\n\n\n<p><small>Genau genommen gilt das f\u00fcr die Reduktion und P und NP nur f\u00fcr formale Sprachen und Entscheidungsprobleme und nicht f\u00fcr meine meist salopp formulierten Aufgaben. Aber ich lasse das jetzt alles mal so stehen.<\/small><\/p>\n\n\n\n<p>Wenn ich Problem A auf Problem B in vertretbarer Zeit zur\u00fcckf\u00fchren kann, und ich eine vertretbar schnelle L\u00f6sung f\u00fcr Problem B habe, dann kann ich auch Problem A in vertretbarer Zeit l\u00f6sen.<\/p>\n\n\n\n<p><strong>NP-schwer\/NP-hart<\/strong><\/p>\n\n\n\n<p>Ein Problem ist NP-schwer, wenn ich jedes Problem aus NP in polynomieller Zeit darauf zur\u00fcckf\u00fchren kann, insbesondere nat\u00fcrlich die besonders schwierigen. Ein NP-schweres Problem kann also selber in NP (aber gleichzeitig nie in P) liegen. Es kann aber noch schwerer sein, also zum Beispiel echt in EXPTIME liegen.<\/p>\n\n\n\n<p><strong>NP-vollst\u00e4ndig<\/strong><\/p>\n\n\n\n<p>Ein Problem ist NP-vollst\u00e4ndig, wenn es erstens in NP liegt, also wenn die L\u00f6sung in polynomieller Zeit auf Richtigkeit \u00fcberpr\u00fcft werden kann.<br>Und zweitens muss jedes andere Problem in NP (also insbesondere die schwierigen davon) mit polynomiellem Aufwand darauf zur\u00fcckf\u00fchrbar sein. Ein NP-vollst\u00e4ndiges Problem liegt also in NP und ist NP-schwer.<br>Alle Aufgaben oben sind NP-vollst\u00e4ndig.<\/p>\n\n\n\n<p><strong>Beweise<\/strong><\/p>\n\n\n\n<p>Dass ein Problem NP-vollst\u00e4ndig ist, erforderte zuerst einmal viel Beweisaufwand. Aber wenn man erst einmal ein solches Problem gefunden hat, dann l\u00e4sst sich das mit weniger Aufwand f\u00fcr weitere beweisen. Wenn ich das Problem des Handlungsreisenden polynomiell reduzieren kann auf das Problem des ungerichteten Hamilton-Kreises, und wenn ich wei\u00df, dass das NP-vollst\u00e4ndig ist, dann ist auch der Handlungsreisende NP-vollst\u00e4ndig.<br>Und das mit dem Hamilton-Kreis wei\u00df ich, weil man den auf einen gerichteten Hamilton-Kreis polynomiell reduzieren kann, von dem man wei\u00df, dass er NP-vollst\u00e4ndig ist.<br>Und das wei\u00df man, weil man den auf das Problem 3KNF-SAT polynomiell reduzieren kann, von dem man wei\u00df, dass es NP-vollst\u00e4ndig ist.<br>Und das wei\u00df man, weil man es auf das Problem SAT polynomiell reduzieren kann, von dem man wei\u00df, dass es NP-vollst\u00e4ndig ist.<br>Und das wei\u00df man &#8211; weil es mal bewiesen wurde.<\/p>\n\n\n\n<p><strong>Zusammenfassung<\/strong><\/p>\n\n\n\n<p>Jedes NP-vollst\u00e4ndige Problem auf jedes andere NP-vollst\u00e4ndige Problem polynomiell reduzieren. Das hei\u00dft, wenn man f\u00fcr ein Problem in NP einen effizienten (polynomiellen, nicht exponentiellen) L\u00f6sungsweg gefunden hat, dann kann man pl\u00f6tzlich alle Probleme in NP in polynomieller Zeit l\u00f6sen, weil zur urspr\u00fcnglichen L\u00f6sung dann allenfalls noch polynomieller Reduktionsaufwand hinzukommt.<\/p>\n\n\n\n<p>Deswegen w\u00e4re es so wichtig, zu wissen, ob P=NP oder nicht. Wenn nicht, dann ist klar, dass es nie eine effiziente L\u00f6sung f\u00fcr irgendein NP-vollst\u00e4ndiges Problem geben wird. (F\u00fcr Spezialf\u00e4lle und N\u00e4herungen nat\u00fcrlich schon.) Davon geht man aus, dass also P ungleich NP. Aber bewiesen ist es halt noch nicht.<\/p>\n\n\n\n<p><strong>Beispiel<\/strong><\/p>\n\n\n\n<p>Dazu ein Beispiel aus dem Staatsexamen Informatik, Fr\u00fchjahr 2007, Theoretische Informatik, Thema 2, Aufgabe 4:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Das Partyveranstaltungsproblem ist das folgende. Gegeben ist eine Menge B von Bekannten und eine Menge H \u2286 B \u00d7 B von (Paaren von) Bekannten, die sich nicht leiden k\u00f6nnen. Es ist festzustellen, ob eine Auswahl U \u2286 B von k Bekannten (|U| = k) existiert (die G\u00e4steliste), sodass in dieser keine zwei Bekannten enthalten sind, die sich nicht leiden k\u00f6nnen. Man zeige, dass das Partyveranstaltungsproblem NP-vollst\u00e4ndig ist.<\/p>\n<\/blockquote>\n\n\n\n<p>Dass das Partyproblem NP-vollst\u00e4ndig ist, beweist man so:<br>Man beweist erstens, dass es in NP ist und zweitens, dass es in polynomieller Zeit auf ein NP-hartes Problem zur\u00fcckgef\u00fchrt werden kann &#8211; zum Beispiel auf ein bereits bekanntes anderes NP-vollst\u00e4ndiges Problem. Dann ist es selber NP-vollst\u00e4ndig. Und da gibt es eines, das hei\u00dft Independent Set-Problem und ist eigentlich das gleiche wie das Party-Problem.<\/p>\n\n\n\n<p><strong>Fu\u00dfnote<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Wissenschaftler des Queen Mary and Westfield College der Universit\u00e4t London fanden heraus, dass Hummeln bei der Nahrungssuche in der Lage sind, das Problem des Handlungsreisenden besser und effizienter zu l\u00f6sen, als dies mit den bislang bekannten mathematischen Computerverfahren m\u00f6glich ist. Wie Hummeln diese Ergebnisse erzielen k\u00f6nnen, ist dabei noch nicht gekl\u00e4rt.<\/p>\n<\/blockquote>\n\n\n\n<p>(<a href=\"http:\/\/de.wikipedia.org\/wiki\/Problem_des_Handlungsreisenden\">Wikipedia zum Handlungsreisenden<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(1 Kommentare.) Executive summary: Die Fragen vom letzten Mal sind sich alle irgendwie \u00e4hnlich: Wenn man f\u00fcr eine davon einen effizienten L\u00f6sungsweg gefunden hat, kann man den auf die anderen \u00fcbertragen. Wird man je einen finden? Hier zur Erinnerung noch einmal der Ausschnitt aus den Komplexit\u00e4tsklassen vom letzten Mal: Der Handlungsreisende Viele der Aufgaben aus [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3682,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[227],"class_list":["post-3679","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-informatik"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/komplexitaet_graph.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3679"}],"version-history":[{"count":2,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3679\/revisions"}],"predecessor-version":[{"id":56689,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3679\/revisions\/56689"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/3682"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3679"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3679"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}