zvolit stejnou velikost skupiny čísel z posloupnosti náhodných čísel

hlasů
0

říkají, mám seznam 100 čísel, chci je rozdělit do 5 skupin, které mají součet v každé skupině je nejblíže k průměru čísel.

Nejjednodušším řešením je seřadit čísla sto a přijmout maximální počet a držet přidání těch nejmenších čísel, dokud částka přesahuje AVG.

samozřejmě, že se nebude přinášet nejlepší výsledky. Myslím, že bychom mohli použít BFS nebo DFS nebo nějaký jiný vyhledávač algo. jako A * získat co nejlepší výsledek.

nemá někdo mít jednoduché řešení tam venku? pseudo kód je dost dobrý. dík!

Položena 09/09/2010 v 05:06
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

To zní jako variace na problému batohu , a když jsem tě správně interpretovat, může to být násobkem problém batohu . Nemůžete přijít s jednoduchým problém? :)

Odpovězeno 09/09/2010 v 05:40
zdroj uživatelem

hlasů
0

Efektivní algoritmus (řešení), který může být použit je variace nejlépe hodí bin balícího algoritmu. Nicméně bychom museli být aplikování variantu, ve které máme konkrétně 5 různých skupin čísel, která chceme spíše než hledat pomocí nejmenšího počtu skupin.

Algoritmus začíná tím, že najde střední seznamu všech 100 čísel. Tento průměr bude použita jako maximální kapacity pro všechny 5 skupin (zásobnících) se snažíme, aby se vešly do čísel. pak najdeme největší číslo v našem seznamu 100 čísel, která nepřesahuje maximální kapacitu naší skupiny a přiřadit ji k naší první skupiny. (Můžeme najít to v log (n) času, protože můžeme použít self-kompenzovat strom binárního vyhledávání). Držíme dráha how naplněna naše současná skupina. pak najdeme vedle největší počet, který zapadá do naší aktuální skupině, dokud jsme buď dosaženo maximální kapacitu nebo nejsou žádné další čísla, která umožní tato skupina k dosažení maximální kapacity. V obou těchto případech jsme se přesunout na další skupinu a opakovat náš algoritmus s čísly vlevo v našem seznamu čísel. Poté, co jsme se přejít od skupiny musíme také sledovat aktuální součet této skupiny. Budeme pokračovat, dokud jsme dosáhli nejvyšší kapacitu pro všechny 5 skupinách. Pokud se vyskytnou nějaké čísla vlevo klademe je do skupin, které mají nejnižší celkovou částku (protože jsme sledovali z těchto částek, jak jsme jeli). To je ve skutečnosti hladový algoritmus s t Vstup (nlogn) čas běží vzhledem k povaze bin balení.

Odpovězeno 03/12/2019 v 02:31
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more