Trovare un piano di taglio che divide uniformemente un poliedro


10

Supponiamo di avere un poliedro in forma standard:

UNX=BX0

Esistono metodi noti per trovare un iperpiano che divide il poliedro in modo tale che il numero di vertici su ciascun lato dell'iperpiano sia approssimativamente lo stesso? (ovvero un algoritmo che minimizza la differenza assoluta di cardinalità del vertice sui due lati della divisione).dX+d0=0

Inoltre, ci sono risultati noti relativi alla complessità di questo problema?

Addendum: limitazione dei tipi di tagli:

Ecco una variazione del problema originale con la speranza che sia più facile da risolvere rispetto a quello originale:

Esiste un modo per calcolare o stimare in modo efficiente per quale coordinata un iperpiano della forma d i x i + d 0 = 0 produrrebbe la differenza assoluta più bassa di cardinalità del vertice su entrambi i lati della divisione? Per efficiente intendo qualcosa di più efficiente dell'enorme elenco delle cardinalità dei vertici per tutte le possibili suddette divisioni.iodioXio+d0=0

Nota: dopo alcuni giorni di piccoli progressi, ho pubblicato anche questa domanda su MathOverflow .


Non si dovrebbe essere in grado di dimostrare che questo è un problema NP-difficile?
Peter Shor,

Grazie @Peter. Una prova sarebbe fantastica. Detto questo, presumo che il problema sia difficile e penso di essere più interessato agli algoritmi di euristica o di approssimazione. La motivazione alla base dell'idea di limitare i tipi di tagli era in parte per vedere se ci sono variazioni più facili del problema generale per le quali già conosciamo una soluzione o un algoritmo di approssimazione.
Amelio Vazquez-Reina

Che ne dici di qualcosa del genere (non sono sicuro che funzioni) - Sappiamo che contare il numero massimo di corrispondenze bipartite è # P-difficile. Sappiamo anche che un programma lineare per trovare la massima corrispondenza bipartita è totalmente unimodulare e quindi qualsiasi punto d'angolo / soluzione fattibile di base è integrale. Per un massimo problema di corrispondenza bipartita, trova il valore della corrispondenza. Costruisci un programma lineare con il vincolo che ogni soluzione deve avere il valore ottimale. Quindi ogni punto d'angolo corrisponde. Essere in grado di dividere ripetutamente uniformemente significa che dovresti essere in grado di contare il numero di abbinamenti.
Opta l'

Non importa. Si dovrebbe anche essere in grado di contare il numero di vertici aggiunti dal piano di taglio.
Opta l'

Risposte:


-2

Non ricordo il modo analitico di farlo!

Ma questo è un problema classico per la programmazione genetica! Se hai familiarità con esso, puoi utilizzare un vettore normalizzato al centro del poliedro che descrive il piano di taglio.

Quindi la tua popolazione è un insieme di [x, y, z, ...] vettori normalizzati e come funzione di adattamento usi la differenza tra i 2 volumi divisi!

Quindi, se la differenza tende a zero più "adattamento" è il tuo vettore / piano!


Scusa, potresti dirlo di nuovo senza usare un linguaggio di programmazione genetica? Che cos'è una "popolazione"? Che cos'è una "funzione di adattamento"?
Jeffε,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.