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

optymalizacja - minimalna liczba koszy

VPS Starter Arubacloud
+1 głos
151 wizyt
pytanie zadane 21 września 2020 w Matematyka, fizyka, logika przez spectral Nowicjusz (160 p.)

Cześć,

proszę o pomoc w znalezieniu algorytmu, który pozwoli mi rozwiązać następujące zadanie: 

Mamy zbiór A zawierający rożnego rodzaju klocków ( o rozmiarach od 1.0 do 10.0 - 'kwant' to 0.1). Mam również kosze, których pojemność wynosi 10. Zadanie polega na tym, aby umieścić wszystkie klocki w jak najmniejszej ilości koszów.

Przykładowe dane:
A = [1.3, 2.9, 2.8, 4.5, 6.9, 10.0]

Na ten moment mam algorytm, który po kolei sprawdza liczby w zbierze A i sprawdza ich sumy. W ten sposób otrzymuję 4 koszy: [1.3, 2.9, 2.8] [4.5] [6.9] [10.0].

Nie jest to optymalne rozwiązania, lepszym jest chociażby: [10.0] [6.9, 2.9] [1.3, 4.5, 2.8].

Czy mógłbym Was prosić o pomoc w opracowaniu jakiegoś algorytmu?

 

1 odpowiedź

+1 głos
odpowiedź 21 września 2020 przez mokrowski Mędrzec (156,260 p.)
wybrane 21 września 2020 przez spectral
komentarz 21 września 2020 przez Whistleroosh Maniak (57,360 p.)
To nie jest przypadkiem problem NP-trudny? Wtedy plecak mało zdziała
komentarz 21 września 2020 przez spectral Nowicjusz (160 p.)
To rozwiązuje mój problem.

Rozwiązuję ten problem dla zadanego zbioru w następujący sposób:

-  obliczam skład pierwszego kosza na podstawie zbioru [1.3, 2.9, 2.8, 4.5, 6.9, 10.0]: 1.3;2.9;2.8;4.5 (suma 11.5) -> mamy 1 kosz

-  obliczam skład drugiego kosza na podstawie zbioru [6.9, 10.0]: 6.9 (suma 6.9) -> mamy 2 kosz

-  obliczam skład drugiego kosza na podstawie zbioru [10.0]: 10.0 (suma 10.0) -> mamy 3 kosz
komentarz 21 września 2020 przez Whistleroosh Maniak (57,360 p.)
Jak dokładnie obliczasz skład każdego kosza? Korzystasz z tego plecaka?
komentarz 21 września 2020 przez spectral Nowicjusz (160 p.)

Tak, mój skrypt bazuje na podstawie tego rozwiązania: http://rosettacode.org/wiki/Knapsack_problem/0-1#PHP

Wykonuję ten algorytm na zbiorze pomniejszonym o już użyte elementy. Nie jest to może najwydajniejszy sposób, ale dla mnie wystarczający.

Podobne pytania

0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 14 lutego 2018 w C i C++ przez Kurczak Użytkownik (940 p.)
0 głosów
0 odpowiedzi 391 wizyt
pytanie zadane 12 stycznia 2018 w C i C++ przez marcin_kub Obywatel (1,420 p.)
0 głosów
1 odpowiedź 870 wizyt
pytanie zadane 2 grudnia 2017 w Python przez nastrand Nowicjusz (150 p.)

93,020 zapytań

141,985 odpowiedzi

321,284 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...