Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]uporzadkowany rozkład wartości do pewnej wartości
Forum PHP.pl > Forum > Przedszkole
STI-ScorpioN
Witam.
Od dawna bawię się php, mysql itd, robię badziewia dla znajomych i co nieco dla strony internetowej firmy w której pracuje, bardziej pisanie skryptów itp traktuje jak hobby w wolnym czasie, ale szef zapytał się mnie ostatnio czy nie miał bym chęci napisać coś takiego:

Powiedzmy sobie, że mamy:

Zbiory: 200, 200, 200, 200 ,200, 200, 170.
Wartości: 34, 33, 56, 84, 12, 84, 33, 21, 11, 64, 10, 100, 77.

teraz czy jest może jakiś gotowy system coś ala sortowanie które wykona mi coś takiego, żeby wartości zostały tak dodawane by nie przekroczyły zbiorów, ale tak by wykorzystać zbiór do maksimum, czyli przykładowo:

34 + 64 + 100 = 198 ( zbiór nr 1 o wartości 200 wypełniony - reszta = 2 )
33 + 56 + 84 + 11 + 10 = 194 ( zbiór nr 2 o wartości 200 wypełniony - reszta = 6 )
33 + 21 + 77 = 131 ( zbiór nr 3 o wartości 170 wypełniony - reszta 39 )

Zbiory nie ruszone: 200, 200 ,200, 200.

i w ten sposób wszystkie wartości zostały uwzględnione, a zbiory zostały wykorzystane z jak najmniejszą resztą.

Jeżeli macie wiedzę na temat jakiejś funkcji lub kombinacji funkcji, która takie coś by wykonała to będę wdzięczny za pomoc, jeżeli nie będę musiał zawitać na jakieś forum matematyczne smile.gif.

Pozdrawiam i z góry dziękuję za odpowiedź.
AlexDeLarge
Algorytm taki jest dość nietrywialny.
http://pl.wikipedia.org/wiki/Problem_plecakowy
U Ciebie szukałbym pod hasłem "multiple knapsack problem".

Zdrówka życzę.
STI-ScorpioN
Na początek dziękuję za skierowanie mnie w dobrym kierunku, nieco o tym poczytałem i coś urodziłem.
Napisałem takie małe co nieco, dla mnie działa tak jak ma działać, nie jest to mistrzostwo świata, ale lepiej nie umiem smile.gif

Pochwale się smile.gif http://kzpl.kampno.pl/optima/optima.php

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.