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

Czy istnieje algorytm pozwalający na łatwy podział elementów wg wielkości?

Object Storage Arubacloud
0 głosów
100 wizyt
pytanie zadane 19 marca 2018 w Algorytmy przez TeslaX93 Gaduła (3,600 p.)

Z góry przepraszam za dość enigmatyczny tytuł (i niefachowy opis tego, co chcę uzyskać), ale nie wiedziałem jak to móc opisać jednym zdaniem. Jeżeli nie istnieje takowy algorytm, to prosiłbym o pomoc w nakierowaniu na możliwe rozwiązanie problemu :)

Otóż załóżmy, że mamy sobie obiekt (strukturę?) o z góry zadeklarowanej pojemności, która posiada w sobie informację o zawartości - może to przypominać na przykład dysk twardy. Obiekt wyglądałby mniej więcej tak (pseudokod):

Object pojemnik {
unsigned int pojemnosc = 20;
array zawartosc = { x1, x2, x3 }
}

Elementy tablicy zawartość to inne obiekty, które wyglądałyby na przykład tak:

Object elementPojemnika {
String nazwa = "x1";
unsigned int wielkosc = 4;
}

I wygląda to tak, że do obiektu Pojemnik nie możemy dołożyć więcej obiektów, niż wynosi jego wartość zadeklarowana w polu zawartosc - czyli  hipotetyczna funkcja dodajDoPojemnika(pojemnik,elementPojemnika) działałaby tylko jeżeli aktualna suma wielkości elementów pojemnika nie przekroczyłaby zadeklarowanej zawartości (w tym wypadku - obiekt Pojemnik mógłby pomieścić maksymalnie pięć elementów x1).

Pytanie brzmi - jeżeli mamy x pojemników o jednakowym rozmiarze y (czyli w wersji uproszczonej: jeżeli mamy x dysków twardych które mają jednakową pojemność y) oraz n elementów pojemnika o różnym rozmiarze (czyli w  wersji uproszczonej: n plików o różnych rozmiarach których chcemy umieścić na dyskach twardych), to czy istnieje taki algorytm, który umożliwiłby optymalne rozmieszczenie elementów pojemnika w pojemnikach tak, aby wykorzystać jak najmniej pojemników? (ponownie upraszczając: czy istnieje algorytm, który pozwoliłby tak poupychać pliki na dyskach twardych, aby zużyć jak najmniej dysków i aby na dyskach zostało jak najmniej wolnego miejsca?) Bo jedyne rozwiązanie jakie mi się nasuwa to bruteforce, który wrzucałby element do pojemnika, a potem by go wyrzucał jeżeli istniałby element, który ekonomiczniej zajmie wolne miejsce...

Z góry dzięki za przeczytanie i pomoc :) 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 561 wizyt
pytanie zadane 27 stycznia 2017 w Algorytmy przez Corvo Nowicjusz (180 p.)
0 głosów
1 odpowiedź 234 wizyt
0 głosów
0 odpowiedzi 139 wizyt
pytanie zadane 14 stycznia 2016 w Algorytmy przez Koms Początkujący (380 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...