Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 10. 05. 2013 17:51

Akcope
Příspěvky: 109
Reputace:   
 

Hladový algoritmus (Zavazadlový problém)

Ahoj, jak bych měl obecněji řešit problém batohu?

Máme např. batoh, který unese 5 kg. Vstupní množina obsahuje předměty s hmotnostmi 4, 3 a 2 kg. A máme najít optimální řešení.

Když vezmeme vždy největší možný prvek - v tomto případě 4kg, nedospějeme k optimálnímu řešení (což je evidentně 3 a 2 kg).

Jak získat obecný algoritmus, kterým vždy dostaneme optimální řešení? Předem díky za odpověď.

Offline

  • (téma jako vyřešené označil(a) Akcope)

#2 10. 05. 2013 19:52

check_drummer
Příspěvky: 5559
Reputace:   106 
 

Re: Hladový algoritmus (Zavazadlový problém)

↑ Akcope:
Ahoj, není to náhodou NP-úplný problém? Obecný algoritmus může být "výzkoušet všechny možnosti" - s případnými drobnými vylepšeními - jako: není nutné přidávat, pokud již je batoh přeplněn, apod.


"Máte úhel beta." "No to nemám."

Offline

 

#3 10. 05. 2013 20:43

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: Hladový algoritmus (Zavazadlový problém)

viz http://kam.mff.cuni.cz/~perm/programova … slidy7.pdf

↑ check_drummer: pokud jsou všechny údaje celočíselný, tak to NP-úplný není

Offline

 

#4 10. 05. 2013 22:41

Akcope
Příspěvky: 109
Reputace:   
 

Re: Hladový algoritmus (Zavazadlový problém)

↑ Stýv:
Díky :)

Offline

 

#5 11. 05. 2013 20:23 — Editoval check_drummer (11. 05. 2013 20:29)

check_drummer
Příspěvky: 5559
Reputace:   106 
 

Re: Hladový algoritmus (Zavazadlový problém)

↑ Stýv:
Ahoj, to je známý trik. :-) Jedná se o tzv. pseudopolynomiální algoritmus (aspoň tuším, že se mu tak říká), který však je NP: na vstupu úlohy je totiž číslo m, které lze tedy vyjádřit pomocí log(m) "bitů". Tedy vstup má velikost log(m) - a nikoli m (plus hmotnosti předmětů a jejich ceny, to ponechme stranou) - ovšem doba běhu algoritmu má velikost m (opět krát výraz závislý na počtu předmětů, opět ponechme stranou), tedy je exponenciální vzhledem k velikosti vstupu (log(m)).

Ještě přidávám odkaz.


"Máte úhel beta." "No to nemám."

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson