Mam rodzinę problemów z programowaniem liniowym: maksymalizuj z zastrzeżeniem , . Elementy, , i są liczbami całkowitymi nieujemnymi, ściśle pozytywne. ( powinien być również integralny, ale będę się tym martwić później).
W mojej aplikacji często zdarza się, że współczynniki i są takie, że uproszczony algorytm jednoprzebiegowy zapewnia optymalne rozwiązanie dla każdego wyboru : algorytm jednoprzebiegowy określa elementy po kolei, wybierając każdy być największą możliwą wartością zgodną z już ustalonymi wartościami . W języku simpleks sekwencja wprowadzania zmiennych jest po prostu do i kończy się po kroki. To oszczędza dużo czasu w porównaniu do full-on simplex.
Ten algorytm działa, gdy kolumny i elementy zostały posortowane od „taniego” do „drogiego”. „Tania” zmienna to kolumna z ogólnie małymi wartościami, dla których odpowiedni element jest duży: dla tego elementu otrzymujesz dużą wydajność przy niewielkim zapotrzebowaniu na ograniczenie . Algorytm mówi więc „najpierw wykonaj proste czynności”.
Moje pytanie brzmi: jaką właściwość i zapewniłby nas, że ten uproszczony algorytm działa dla wszystkich ? Moje początkowe przypuszczenie było takie, że niezerowe elementy powinna rosnąć w każdym rzędzie, ale to nie jest poprawne.
Oto kilka przykładów : , , , . Dla wszystkich tych algorytm sekwencyjny zapewnia optymalne rozwiązanie dla wszystkich wartości (przez eksperymenty numeryczne). jest jedynym, dla którego działają również wszystkie permutacje kolumn. i są szczególnie zaskakujące, ponieważ wygląda drożej niż i droższe niż .
Byłbym niezmiernie wdzięczny za wszelkie wskazówki do literatury, za wszelkie podobne problemy lub sugestie. Musiały istnieć inne przypadki, w których niektóre zmienne można określić jako „tańsze” niż inne i można je bezpiecznie wykonać jako pierwsze. Po całej pracy nad programowaniem liniowym na przestrzeni lat wydaje się, że coś podobnego musiało się wydarzyć, ale nie udało mi się go znaleźć.
źródło
Dzięki sugestii prof. Spiveya w końcu udało mi się ustalić, co według mnie jest najnowocześniejsze: Ulrich Faigle, Alan J. Hoffman i Walter Kern, „Charakteryzacja nieujemnych macierzy chciwości pudełkowej”, SIAM J. Disc. Matematyka 9 (1996) s. 1-6. Macierz jest „zachłanna”, jeśli algorytm, który opisałem powyżej, zapewnia optymalne rozwiązanie dla wszystkichb . Macierz jest „pudełkowata”, jeśli algorytm zachłanny daje optymalne rozwiązanie z dodatkowym warunkiemx≤d dla wszystkich b i wszystkich d≥0 . Oczywiście chciwość w pudełku jest silniejszym warunkiem niż chciwość.
Zawsze zakładaj, żec1≥⋯≥cn>0 . Dowodzą tego Faigle, Hoffman i KernA jest chciwy, jeśli i tylko jeśli nie ma k×(k+1) (dla każdego k ) submatrix formularza ⎛⎝⎜⎜⎜⎜⎜r1r2⋮rks1s2⋱sk⎞⎠⎟⎟⎟⎟⎟ z każdym rj>0 i ∑i:si>0risi>1 . Podczas wyodrębniania podmacierzy dozwolone są dowolne permutacje wierszy, ale nie kolumn, oraz dowolne podzbiór wierszy i kolumn. Tak więc w szczególności zk=1 , niezerowe elementy w każdym rzędzie A musi nie zmniejszać się.
Niestety okazuje się, że w moim problemie matryce nie są chciwymi pudełkami, choć nadal uważam, że są chciwe. Na przykład w moimA1 powyżej warunek jest naruszony i ta matryca nie jest chciwa, chociaż jest chciwa. O ile mi wiadomo, nie ma żadnych wyników w identyfikacji chciwych matryc.
źródło
Najłatwiejszym przykładem czegoś takiego może być frakcyjny problem plecaka, w którym elementy mogą być frakcjonowane. ten problem (i jego podwójny LP) można rozwiązać, sortując przedmioty pod kątem zysku na wagę, wybierając najdłuższą sekwencję w tej kolejności, która jest możliwa, i dzieląc na części ostatni element.
źródło