Třídicí algoritmus pro disková pole

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re:Třídicí algoritmus pro disková pole
« Odpověď #15 kdy: 12. 12. 2014, 16:00:48 »
Problém je zcela jistě NP-úplný, takže to nelze řešit přesně.

Doporučoval bych problém rozdělit na X problémů baťohů, s postupnou aplikaci dynamického programování na jednotlivé "batohy" s tím, že bych z batohu už "nevytahoval předměty", jejichž velikost je x*větší než velikost volného místa (čímž se vyloučí některá optimální řešení, ale velmi zkrátí doba výpočtu).


Karel (jiný)

Re:Třídicí algoritmus pro disková pole
« Odpověď #16 kdy: 12. 12. 2014, 18:06:31 »
Jasně. Ale rozhodující je, jakou část prostoru vážně projdeš a jaká se odřízne. Pokud budeš permutace generovat postupně, budeš tímpádem procházet strom a můžeš jedním krokem odříznout obrouvskou část prostoru.


Tak pokud hledáte optimum, tak neuříznete skoro nic. Že se nějaká permutace zdá býti dobrá na začátku, ještě neznamená, že bude dobrá na konci. Tenhle problém jsme měli v semestrálce na VŠ a byly tam speciálně připravené desítky zadání, na kterých se pak ukazovaly takovéhle chyby. Nevím, zda to dám z hlavy správně, ale zkusím:

X1 = 40
X2 = 40
X3 = 20
X4 = 75
X5 = 55
X6 = 55

Velikost úložiště je 100.

Na začátku stromu dám U1 = X1 + X2 + X3, plně využité. Pokud zbytek stromu uříznu, tak skončím s tím, že X4, X5 i X6 budou mít úložiště vlastní. Celkem 4 úložiště. Přitom stačí 3 (X1 + X5, X2 + X6, X3 + X4), z nichž ale ani jedno nebude plné. Fakt, že se mi ten první "baťoh" podaří krásně na 100% vyplnit, ještě nic neznamená, řezat nesmím. A teď opačné cvičení - na všech permutacích zjistit prostor. Zjistíte, že jich polovina bude 4 a méně. Pokud tedy jako první netrefíte právě to optimální, tak oříznete jen necelou polovinu listů.

Nenechte se zmást hledáním do hloubky, to sice obecně řeže, ale vy se v něm budete pohybovat hodně hluboko a řezat jen zbytky. A pak dospějete ke zjištění, že díky algoritmu to není O(2^n), ale "jen" O(2^(n/2)) = O(2^n)

Kolemjdoucí

Re:Třídicí algoritmus pro disková pole
« Odpověď #17 kdy: 12. 12. 2014, 18:31:34 »
Naivní algoritmus dle selského rozumu, zato snadno implementovatelný:

- Seřadit VM podle velikosti sestupně, tedy od největšího k nejmenšímu. Projít všechny VM v pořadí od největšího po nejmenší a pro každé VM udělat následující:
- Projít všechny již založené hosty v pořadí od 1 do N a pokusit se umístit VM do prvního kde to lze.
- Pokud nelze umístit, založit nový host N + 1 a umístit VM do něj.

Cyr

Re:Třídicí algoritmus pro disková pole
« Odpověď #18 kdy: 12. 12. 2014, 21:35:06 »
Problém není NP-úplný, ani není ve třídě NP - je složitější.

Pokud by byl ve třídě NP, pak existuje polynomiální algoritmus, který ověří správnost řešení.

Kolemjdoucí

Re:Třídicí algoritmus pro disková pole
« Odpověď #19 kdy: 12. 12. 2014, 21:50:58 »
Problém není NP-úplný, ani není ve třídě NP - je složitější.

Pokud by byl ve třídě NP, pak existuje polynomiální algoritmus, který ověří správnost řešení.

A jak víte že neexisuje polynomiální algoritmus který ověří správnost řešení?


Re:Třídicí algoritmus pro disková pole
« Odpověď #20 kdy: 12. 12. 2014, 21:51:21 »
Že se nějaká permutace zdá býti dobrá na začátku, ještě neznamená, že bude dobrá na konci.
Rezani se ale pouziva k tomu, aby se neprohledavala *spatna* reseni, o dobrych to nic nerika. Ja jsem rikal rezat vetve, ktere zarucene *nemuzou* vest k *lepsimu* reseni, nez jake uz mam. Napr. pokud uz jsem nasel reseni s peti buckety a soucasne prochazena vetev jich uz ted potrebuje pet a jeste jsem neumistil vsechno, tak dal proste pokracovat nemusim, protoze vsechna reseni v danem podstromu uz budou zarucene HORSI nez to uz nalezene. Takze zadne dalsi permutace v danem podstromu uz proste neprochazim.

Nakolik je prorezavani efektivni je dany typem tech dat - pro kazdy set bude jinak uspesne.

Re:Třídicí algoritmus pro disková pole
« Odpověď #21 kdy: 12. 12. 2014, 22:11:09 »
A jak víte že neexisuje polynomiální algoritmus který ověří správnost řešení?
Ja nevim, skoly nemam, ale overit, ze v kazdem bucketu je soucet velikosti mensi nez velikost bucketu a ze v bucketech jsou fakt vsechny prvky, ktere jsem na zacatku mel, mi neprijde jako polynomialne neresitelny ;)

Jenda

Re:Tridici algoritmus
« Odpověď #22 kdy: 12. 12. 2014, 22:22:05 »
Klasickej baťoh to není. Pokud by postupoval postupně po jednotlivých batozích, tak imho nutně nedostane optimální řešení.

Vzhledem k tomu, že ten problém je (odhaduju) určitě NP-úplný, bude rozdíl mezi tímhle stupidním řešením a optimálním algoritmem prakticky stejně zanedbatelný, takže bych si s tím vůbec hlavu nelámal ;)
Dělali jsme to tím dynamickým programováním podobně jak je to na Wikipedii, ale formální důkaz se mi vymýšlet nechce.

Je NP-úplný, ale jak si taky můžeš na Wikipedii přečíst, existuje algoritmus polynomiální v GCD(velikosti virtuálů). Takže pokud toho máš třeba 20 TB a budeš to počítat v GB, máš polynom a vstup velký 20000.

Jenda

Re:Tridici algoritmus
« Odpověď #23 kdy: 12. 12. 2014, 22:24:13 »

Cyr

Re:Třídicí algoritmus pro disková pole
« Odpověď #24 kdy: 12. 12. 2014, 22:26:09 »
A jak víte že neexisuje polynomiální algoritmus který ověří správnost řešení?
Ja nevim, skoly nemam, ale overit, ze v kazdem bucketu je soucet velikosti mensi nez velikost bucketu a ze v bucketech jsou fakt vsechny prvky, ktere jsem na zacatku mel, mi neprijde jako polynomialne neresitelny ;)
Tím ověřujete jinou úlohu.

Kolemjdoucí

Re:Třídicí algoritmus pro disková pole
« Odpověď #25 kdy: 12. 12. 2014, 22:27:10 »
A jak víte že neexisuje polynomiální algoritmus který ověří správnost řešení?
Ja nevim, skoly nemam, ale overit, ze v kazdem bucketu je soucet velikosti mensi nez velikost bucketu a ze v bucketech jsou fakt vsechny prvky, ktere jsem na zacatku mel, mi neprijde jako polynomialne neresitelny ;)

Nedovoluji si soudit zda by se to zlepšilo tím kdybyste měl školy, ale pro jistotu si zopakujme zadání:

Citace
Chci virtualni stroje poskladat vedle sebe tak, aby idealne vyplnily vsechna uloziste (zbylo co nejmin volneho mista na kazdem ulozisti) a pritom zbylo co nejvic volneho mista na konci, idealne aby se mi nejake uloziste uplne uvolnilo.

To je přeci něco úplně jiného než o čem píšete!

/.

Re:Třídicí algoritmus pro disková pole
« Odpověď #26 kdy: 12. 12. 2014, 22:35:07 »
!!! HINT HINT HINT !!!

podivejte se do kalendare. zacala lovecka sezona. tak ne ze sem nekdo pastne reseni.

Re:Třídicí algoritmus pro disková pole
« Odpověď #27 kdy: 12. 12. 2014, 23:07:56 »
To je přeci něco úplně jiného než o čem píšete!
Nevim, asi je nejaka pozdni hodina a neco mi nedochazi, ale je pak teda tohle spatne?

http://www2.informatik.hu-berlin.de/alcox/lehre/lvws1011/coalg/bin_packing.pdf - "The Bin Packing problem is NP-complete."

A tohle?

https://people.cs.umass.edu/~barring/cs311/disc/11.html - ukol 1)

Nebo se tady bavime o nejakem jinem problemu, ktery na ty popsane neni redukovatelny?

Cyr

Re:Třídicí algoritmus pro disková pole
« Odpověď #28 kdy: 12. 12. 2014, 23:38:27 »
Ad zdroje:

Zdroj 1: http://www2.informatik.hu-berlin.de/alcox/lehre/lvws1011/coalg/bin_packing.pdf
Theorem dokazuje převod NP-úplné úlohy na bin packing problém. Tj. dokazuje, že minimalizační bin packing je alespoň NP, ale nedokazuje, že je není složitější.

Zdroj 2: https://people.cs.umass.edu/~barring/cs311/disc/11.html - ukol 1)
Opět - "decision version of BIN-PACKING is NP-complete", nám jde ale o minimalizační úlohu. Decision problém je "lze naskládat věci do maximálně N binů?" Zde se polynomiální ověření přímo nabízí. Stačí spočítat počet košů.

Tohle je ale problém, kterej tu autor řeší a verdikt zní: "Bin packing is strongly NP-HARD": http://link.springer.com/chapter/10.1007/3-540-29297-7_18

Kolemjdoucí

Re:Třídicí algoritmus pro disková pole
« Odpověď #29 kdy: 13. 12. 2014, 00:37:28 »
To je přeci něco úplně jiného než o čem píšete!
Nevim, asi je nejaka pozdni hodina a neco mi nedochazi, ale je pak teda tohle spatne?

Odkazované dokumenty řeší jiný problém. Tam stačí splnit toto:

Citace
Chci virtualni stroje poskladat vedle sebe tak, aby idealne vyplnily vsechna uloziste

ale už vůbec neřeší druhou část zadání:

Citace
a pritom zbylo co nejvic volneho mista na konci