• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podział na dwie równe części - programowanie liniowe?

Mały hosting, OGROMNE możliwości
0 głosów
474 wizyt
pytanie zadane 25 kwietnia 2018 w Matematyka, fizyka, logika przez littlerunaway Obywatel (1,790 p.)
Zmarł bogaty arystokrata a jego spadek trzeba rozdzielić pomiędzy dwóch synów. W skład spadku wchodzą:

 A Caillebotte picture: 25000$
 A bust of Diocletian: 5000$
 A Yuan dinasty chinese vase: 20000$
 A 911 Porsche: 40000$
 Three blood diamonds: 12000$ each
 A Louis XV sofa: 3000$
 Two very fluffy rare breed cats: 3000$ each (the will asserts that they may not be separated)
 A sculpture dated 200 A.D.: 10000$
 A sailing boat: 15000$
 A Harley Davidson motorbike: 10000$
 A piece of furniture that once belonged to Newton: 13000$.

Wszystkie te przedmioty muszą być podzielone na dwie części. Jaki podział minimalizuje różnicę między wartościami dwóch części?

Jak sformułować taki program przy użyciu programowania liniowego? Mam z tym duży problem bo wszystkie problemy z którymi miałam styczność wcześniej opierały się jedynie na minimalizacji kosztów/maksymalizacji przychodów.
1
komentarz 25 kwietnia 2018 przez NowyUrzydgownig Mądrala (5,090 p.)
Prostee. Dzielisz wszystko na dwa i masz ile po równo każdy ma dostać.
komentarz 25 kwietnia 2018 przez littlerunaway Obywatel (1,790 p.)
Nie no, dzięki

2 odpowiedzi

+1 głos
odpowiedź 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
wybrane 5 maja 2018 przez littlerunaway
 
Najlepsza
W tym zadaniu funkcja celu może mieć postać:

A * x1 + B * x2 + C * x3 + D * x4 + .... + K * x11  =  A * y1 + B * y2 + C * y3 + D * y4 + ..... + K * y11

gdzie: A, B, C, D .... K są stałymi, oznaczającymi kolejne pozycje (wartości) spadku. (Np. A = 25000, B = 5000, C = 20000)

Lewa i prawa strona równania oznaczają odpowiednio: składniki spadku pierwszego i drugiego syna.

warunki można określić następująco:

x1 = 0 lub 1;      y1 = 0 lub 1;     x1 != y1;

x2 = 0 lub 1;      y2 = 0 lub 1;     x2 != y2;

x3 = 0 lub 1;      y3 = 0 lub 1;     x3 != y3;

...................................................

x11 = 0 lub 1;      y11 = 0 lub 1;     x11 != y11;

Jeśli któryś współczynnik: x lub y przyjmuje wartość 0, oznacza to, że danego składnika (czynnika) w "worku" syna nie ma.

Mają funkcję celu oraz tak sformuowane warunki można już stosunkowo łatwo, numerycznie znaleźć wartości wszystkich współczynników x i y, dla których nastąpi równy podział majątku (lub najbardziej zbliżony do równego).
0 głosów
odpowiedź 25 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
1. Wprowadź cały spadek - wszystkie rzeczy (wartości) do kontenera.

2. Zrób sortowanie od najmniejszej wartości - do największej.

3. Utwórz dwie zmienne A i B reprezentujące dwóch synów, gdzie będą sumowane spadki w ich "workach".

4. Z kontenera pobieraj kolejno parami wartości, poczynając od największych, i rozdzielaj między dwa zbiory A i B. Każdorazowo sprawdzaj jaka jest sumaryczna wartość każdego z nich. Jeśli, któraś będzie wyższa, to z pary pobranych wartości przydziel mniejszą. Tak postępuj do końca (do wyczerpania wszystkich rzeczy).
komentarz 25 kwietnia 2018 przez littlerunaway Obywatel (1,790 p.)
Ale nie jest to chyba zdefiniowanie problemu przy użyciu programowania liniowego? To co podałeś jest algorytmem zachłannym.

Podobne pytania

0 głosów
1 odpowiedź 896 wizyt
pytanie zadane 30 stycznia 2018 w C i C++ przez Krystek102 Bywalec (2,440 p.)
0 głosów
2 odpowiedzi 2,611 wizyt
pytanie zadane 4 listopada 2015 w HTML i CSS przez grze848 Początkujący (480 p.)
0 głosów
1 odpowiedź 292 wizyt

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...