Autor Zpráva
Xman
Profil *
Zdravim,

zajimalo by me, jak pomoci PHP co nejefektivneji vytvorit deleni s co nejmensim zbytkem. Mam ruzne dlouhe plechy a z nich krajim potrebne mensi rozmery. Jak vytvorit, aby materialove zbytky byly co nejmensi?

Diky,

Xman.
Tasartir
Profil
Tohle mi zní jako domácí úkol z matiky :D
Samozřejmě nejdřív potřebuješ rozměry plechů a tvary, které se z nich vyřezávají, a základní matematické poznatky.
kubiseg
Profil
proc PHP?
Alphard
Profil
neznám podrobnosti, ale vypadá to na problémový (až neřešitelný typ) zadání
je to podobné hodně známým úlohám jako obchodní cestující, krabice v batohu, faktorizace součinu prvočísel apod.

Ilustrujme si vše na příkladě známého problému obchodního cestujícího: obchodní cestující má navštívit několik měst, ale nechce se mu strávit na cestách moc času. Přesněji tedy musí navštívit všechna města, vrátit se domů (tj. do města, ze kterého vyjel) a přitom urazit co nejkratší vzdálenost. Problém je zde tedy nalezení takové posloupnosti měst, kde cesta mezi nimi bude nejkratší možná. Pokud máme nějakou posloupnost, můžeme velmi rychle určit celkovou délku trasy (umět určit rychle tzv. cenu řešení je velmi důležité, jak uvidíme níže). Zaručeně nejlepší řešení umíme nalézt pouze tak, že probereme všechny možnosti (posloupnosti) a z nich vybereme tu nejlepší. Ohodnocení řešení (vzdálenost) umíme spočítat rychle. Problém je pouze v počtu řešení. Počet všech permutací pro n měst je tedy n!=1*2*3*.*n. Pro 5 měst dostáváme 120 možností, což je počítačem snadno zvládnutelné. Již pro 20 měst však dostáváme 2432902008176640000, což by počítač ohodnocující miliardu permutací za vteřinu počítal přes 77 let. I jen malým zvýšením tohoto počtu se dostáváme za hranice času předpokládané existence vesmíru.
Musíme se tedy spokojit s tím, že optimální řešení nenalezneme.

http://archiv.computerworld.cz/cwarchiv.nsf/clanky/BC0EBD10703E4A6AC12 569B00056DCE0?OpenDocument

takže záleží na zadání :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0