Finden einer Schnittebene, die ein Polyeder gleichmäßig aufteilt

10

Angenommen, wir haben ein Polyeder in Standardform:

Ax=bx0

Gibt es bekannte Methoden zum Auffinden einer Hyperebene , die das Polyeder so , dass die Anzahl der Eckpunkte auf jeder Seite der Hyperebene ungefähr gleich ist? (dh ein Algorithmus, der den absoluten Unterschied der Scheitelpunktkardinalitäten auf den beiden Seiten der Teilung minimiert).dx+d0=0

Gibt es auch bekannte Ergebnisse bezüglich der Komplexität dieses Problems?

Nachtrag: Einschränkung der Schnittarten:

Hier ist eine Variation des ursprünglichen Problems mit der Hoffnung, dass es einfacher zu lösen ist als das ursprüngliche:

Gibt es eine Möglichkeit, effizient zu berechnen oder zu schätzen, für welche Koordinate eine Hyperebene der Form die niedrigste absolute Differenz der Scheitelpunktkardinalitäten auf beiden Seiten der Teilung ergeben würde? Mit effizient meine ich etwas Effizienteres als die erschöpfende Aufzählung von Scheitelpunktkardinalitäten für alle möglichen derartigen Teilungen.idixi+d0=0

Hinweis: Nach einigen Tagen mit geringen Fortschritten habe ich diese Frage auch bei MathOverflow veröffentlicht .

Amelio Vazquez-Reina
quelle
Sollte man nicht beweisen können, dass dies ein NP-hartes Problem ist?
Peter Shor
Danke @Peter. Ein Beweis wäre großartig. Trotzdem gehe ich davon aus, dass das Problem schwierig ist, und ich glaube, ich interessiere mich mehr für Heuristiken oder Approximationsalgorithmen. Die Motivation hinter der Idee, die Arten von Schnitten einzuschränken, bestand teilweise darin, festzustellen, ob es einfachere Variationen des allgemeinen Problems gibt, für die wir bereits eine Lösung oder einen Näherungsalgorithmus kennen.
Amelio Vazquez-Reina
Wie wäre es mit etwas in dieser Richtung (nicht sicher, ob es funktioniert) - Wir wissen, dass es # P-schwer ist, die Anzahl der maximalen zweiteiligen Übereinstimmungen zu zählen. Wir wissen auch, dass ein lineares Programm zum Finden einer maximalen zweigliedrigen Übereinstimmung völlig unimodular ist und daher jeder Eckpunkt / jede realisierbare Grundlösung ein integraler Bestandteil ist. Ermitteln Sie für ein maximales zweiteiliges Übereinstimmungsproblem den Wert der Übereinstimmung. Erstellen Sie ein lineares Programm mit der Einschränkung, dass jede Lösung den optimalen Wert haben muss. Dann ist jeder Eckpunkt ein Matching. Wenn Sie wiederholt gleichmäßig teilen können, sollten Sie in der Lage sein, die Anzahl der Übereinstimmungen zu zählen.
Opt
Keine Ursache. Man müsste auch in der Lage sein, die Anzahl der durch die Schnittebene hinzugefügten Eckpunkte zu zählen.
Opt

Antworten:

-2

Ich kann mich nicht an die analytische Vorgehensweise erinnern!

Aber das ist ein klassisches Problem für die genetische Programmierung! Wenn Sie damit vertraut sind, können Sie normalisierte Vektoren in der Mitte des Polyeders verwenden, die die Schnittebene beschreiben.

Ihre Population besteht also aus einer Menge von [x, y, z, ...] normalisierten Vektoren, und als Anpassungsfunktion verwenden Sie die Differenz zwischen den beiden aufgeteilten Volumina!

Wenn also die Differenz gegen Null geht, ist mehr "Fit" Ihr Vektor / Ihre Ebene!

Eduardo Pons
quelle
Entschuldigung, können Sie das noch einmal sagen, ohne die genetische Programmiersprache zu verwenden? Was ist eine "Bevölkerung"? Was ist eine "Anpassungsfunktion"?
Jeffs