Znalezienie płaszczyzny cięcia, która równomiernie dzieli wielościan

10

Powiedzmy, że mamy wielościan w standardowej formie:

ZAx=bx0

Czy są znane metody znalezienia hiperpłaszczyzny która dzieli wielościan w taki sposób, że liczba wierzchołków po każdej stronie hiperpłaszczyzny jest w przybliżeniu taka sama? (tj. algorytm minimalizujący absolutną różnicę liczności wierzchołków po obu stronach podziału).rex+re0=0

Czy są też jakieś znane wyniki dotyczące złożoności tego problemu?

Dodatek: Ograniczanie rodzajów cięć:

Oto wariant pierwotnego problemu z nadzieją, że łatwiej go rozwiązać niż oryginalny:

Czy istnieje sposób na wydajne obliczenie lub oszacowanie, dla której współrzędnej hiperpłaszczyzna w postaci dałaby najniższą bezwzględną różnicę liczności wierzchołków po obu stronach podziału? Przez „efektywny” rozumiem coś bardziej wydajnego niż wyczerpujące wyliczenie liczności wierzchołków dla wszystkich możliwych takich podziałów.d i x i + d 0 = 0jarejaxja+re0=0

Uwaga: po kilku dniach niewielkich postępów opublikowałem to pytanie również w MathOverflow .

Amelio Vazquez-Reina
źródło
Czy nie można udowodnić, że jest to trudny problem związany z NP?
Peter Shor,
Dzięki @Peter. Dowód byłby świetny. To powiedziawszy, zakładam, że problem jest trudny i myślę, że bardziej interesują mnie algorytmy heurystyczne lub aproksymacyjne. Motywem pomysłu ograniczenia rodzajów cięć było po części sprawdzenie, czy istnieją łatwiejsze warianty ogólnego problemu, dla którego znamy już rozwiązanie lub algorytm aproksymacyjny.
Amelio Vazquez-Reina
Co powiesz na coś w tym kierunku (nie jestem pewien, czy to działa) - Wiemy, że policzenie maksymalnej liczby dwustronnych dopasowań to # P-trudne. Wiemy również, że liniowy program znajdujący maksymalne dopasowanie dwustronne jest całkowicie niemodularny, a zatem każde narożne / podstawowe możliwe rozwiązanie jest integralne. W przypadku problemu z maksymalnym dwustronnym dopasowaniem znajdź wartość dopasowania. Skonstruuj program liniowy z takim ograniczeniem, że każde rozwiązanie musi mieć optymalną wartość. Zatem każdy punkt narożny jest dopasowany. Możliwość wielokrotnego dzielenia równomiernie oznacza, że ​​powinieneś być w stanie policzyć liczbę dopasowań.
blokujący
Nieważne. Trzeba też umieć policzyć liczbę wierzchołków dodanych przez płaszczyznę cięcia.
blokujący

Odpowiedzi:

-2

Nie pamiętam analitycznego sposobu, aby to zrobić!

Ale to klasyczny problem dla programowania genetycznego! Jeśli go znasz, możesz użyć znormalizowanych wektorów w środku wielościanu, które opisują płaszczyznę cięcia.

Zatem twoja populacja jest zbiorem znormalizowanych wektorów [x, y, z, ...] i jako funkcję dopasowania używasz różnicy między 2 podzielonymi objętościami!

Tak więc, jeśli różnica zmierza do zera, więcej „dopasowania” oznacza wektor / płaszczyznę!

Eduardo Pons
źródło
Przepraszam, czy możesz to powtórzyć bez użycia języka programowania genetycznego? Co to jest „populacja”? Co to jest „funkcja dopasowania”?
Jeffε