Mam kilka uwag, które są zbyt długie na komentarze. Oto podsumowanie.
Każdy algorytm, który dokładnie rozwiązuje twój problem, może być użyty do dokładnego rozwiązania programów liniowych (tj. „Silne programowanie liniowe”, które jest stosowane w rozwiązaniu Sariela i obecnie nie ma algorytmu wielomianowego czasu).
Naturalną kontynuacją jest, jeśli przybliżone rozwiązania (tj. „Słabe programowanie liniowe”) mogą zapewnić rozwiązanie. Chociaż odpowiedź brzmi „tak”, wydaje się, że warunek zatrzymania tej procedury wymaga wielkości, które według mojej najlepszej wiedzy nie mogą być obliczone w czasie wielomianowym. (tzn. algorytm znajduje coś dobrego, ale poświadczenie tego jest trudne.) Moją główną sugestią tutaj jest stworzenie sensownej definicji „ϵ-optymalne rozwiązanie ”dla twojego problemu, w którym to przypadku takie podejście jest wykonalne. (Strategia ta skutecznie wyrzuca małe powierzchnie wielościanu).
Ogólnie rzecz biorąc, zastanawiając się nad twoim obecnym stwierdzeniem problemu, ciągle zastanawiałem się nad wydajnością. Ale jest w tym rozsądna intuicja: przedmioty, które rzucamy - wierzchołki, twarze itp. - są dyskretne i wykładniczo obfite.
(1.) Załóżmy, że mamy algorytm, który dokładnie rozwiązuje twój problem. Zauważ, że każdy odsłonięty punkt dowolnej powierzchni zawierającej podany punkt środkowy będzie dokładnym rozwiązaniem oryginalnego programu liniowego. Postępuj więc w następujący sposób. Dodaj nowe ograniczenie liniowe, mówiąc, że pierwotna wartość celu musi być równa wartości optymalnej (którą obecnie znamy), i ustaw nowy cel, mówiąc, aby zmaksymalizować pierwszą współrzędną rozwiązania. Powtórz tę procedurę jeden raz dla każdego wymiaru, za każdym razem dodając ograniczenie i wybierając nową współrzędną, aby zmaksymalizować. Ten proces za każdym razem zmniejszy wymiar rozwiązania; koniecznie, kiedy proces się zakończy, mamy 0-wymiarowy zestaw afiniczny, co oznacza pojedynczy punkt. Tak więc zO(d) iteracje algorytmu rozwiązywania punktu środkowego (i tylko zwiększając opis problemu o wielkość wielomianową w dza każdym razem), silne programowanie liniowe jest rozwiązywane. To pokazuje, że chociaż rozwiązanie Sariela wymaga silnego programowania liniowego, dokładne rozwiązanie twojego pytania nie może tego uniknąć. ( Edycja : zwróć uwagę, że mój dowód zakłada na wejściu zwarty wielościan (polytop); w przeciwnym razie będzie musiał nieco ciężej pracować, aby znaleźć wierzchołki.)
(2.) Oto schemat iteracyjny, wykorzystujący w pełni wypukły solver wypukły w każdej iteracji, którego rozwiązania będą zbieżne do łagodnego pojęcia rozwiązania punktu środkowego. Wybierz pozytywną, ale malejącą sekwencję parametrów kary{λi}∞i=1↓0; uzasadnione jest, aby spadały one geometrycznie, tjλi=2−i. Teraz dla każdegoi, w przybliżeniu zminimalizuj funkcję wypukłą
⟨c,x⟩−λi∑j=1mln(⟨aj,x⟩−b),
gdzie ⟨c,x⟩ jest twoim pierwotnym celem, oraz j zakresy ponad moryginalne ograniczenia, teraz umieszczone w celu poprzez bariery logarytmiczne (uwaga, jest to standard). Teraz, jeśli myślimy o minimalizującej powierzchni (największego wymiaru) waszego wielościanu, zauważcie, że dla wystarczająco małejλi i tolerancja τdo wypukłej czarnej skrzynki optycznej, twoje przybliżone optymalne będzie blisko tej twarzy, jednak bariery odepchną ją jak najdalej od innych ograniczeń. Powiedział inny sposób, jakλi zmniejsza się, pierwotny cel liniowy ostatecznie zdominuje niektóre wybredne bariery, które utrzymywały cię przed właściwą twarzą, ale nie wpłyną na bariery, które utrzymują cię z innych granic, w szczególności granic twarzy docelowej.
W idealnym świecie usiądziemy i analitycznie ustalimy idealną wartość λlub przynajmniej czas zatrzymania, abyś nie musiał rozwiązywać, no cóż, nieskończenie wielu problemów. Niestety wydaje się to trudne. Jednym z pomysłów jest, powiedzmy, określenie najmniejszej szerokości dowolnej powierzchni mającej wymiar większy niż 0; jest to dobrze zdefiniowany problem minimalizacji z dodatnim optimum, ponieważ istnieje ostatecznie wiele powierzchni (i szerokość jest obliczana względem każdej z nich). Dzięki temu możemy ustawićλwystarczająco mały, aby wpływ barier był niewielki w środku każdej twarzy. Niestety może być wykładniczo wiele twarzy, więc obliczenie tej liczby jest nonsensem.
Wszystkie warunki zatrzymania, jakie mogłem wymyślić, miały tego rodzaju trudności obliczeniowe. (Co więcej, wielu można ponownie wykorzystać do przekształcenia tego w silny liniowy program do rozwiązywania problemów).
Z tego powodu zalecam zbudowanie pojęcia ``ϵ-zamknij optymalny punkt środkowy '' i rozwiąż go, wybierając λ i tolerancję wypukłej czarnej skrzynki τodpowiednio. Myślę, że jest to rozsądny wybór, ponieważ możesz naprawdę nie przejmować się twarzami o największej szerokościϵ.
(Kilka uwag końcowych.) Wydaje się, że kluczowe znaczenie ma pojęcie „punktu środkowego”; Komentarz Sasho wskazuje, że środek ciężkości (środek masy?) Jest niezwykle trudnym problemem, podczas gdy znalezienie, powiedzmy, największej wpisanej piłki jest łatwe. Bariery logarytmiczne, które zasugerowałem powyżej, na ogół nie będą spójne z żadnym z tych pojęć punktu środkowego. Z drugiej strony, dla barier i piłki, możesz wyznaczyć dolną granicę odległości od twojego środka ciężkości do względnej granicy twarzy; może to jest dla ciebie bardziej przydatne?
Wreszcie, na podstawie twojego opisu, uważam, że miałeś na myśli, że „twarz docelowa” ma mieć możliwie największy wymiar? Jest to dobrze zdefiniowane, jednak istnieją również powierzchnie rozwiązania dla wszystkich możliwych mniejszych wymiarów. W każdym razie zarówno podejście Sariela, jak i podejście barierowe powyżej będą działać z twarzą o największym wymiarze.