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

optymalizacja - minimalna liczba koszy

Object Storage Arubacloud
+1 głos
122 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 (155,460 p.)
wybrane 21 września 2020 przez spectral
komentarz 21 września 2020 przez Whistleroosh Maniak (56,980 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 (56,980 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ź 321 wizyt
pytanie zadane 14 lutego 2018 w C i C++ przez Kurczak Użytkownik (940 p.)
0 głosów
0 odpowiedzi 303 wizyt
pytanie zadane 12 stycznia 2018 w C i C++ przez marcin_kub Obywatel (1,420 p.)
0 głosów
1 odpowiedź 773 wizyt
pytanie zadane 2 grudnia 2017 w Python przez nastrand Nowicjusz (150 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...