Stránky: 1 2

↑↑ dogy:
Kdybychom věděli, že řešení existuje jen jedno, pak by se úloha nalezení jednoho konkrétního řešení o trochu zjednodušila – nutně by z toho totiž plynulo, že některé řádky a některé sloupce jsou stejné. To není nějaká moje úchylka na to zjistit kolik má úloha řešení :-).
Podle toho, co píšeš, nic takového předpokládat nemůžeme a úloha tedy může mít víc řešení.
Žádný postup mě ale zatím nenapadá, je to příliš rozsáhlá matice i na řešení hrubou silou.
Offline
Najprv si mozme vsimnut, ze informacia o suctoch je uplne zbytocna, ak mame informacie o poctoch 0,1,2. Preto sa mi zda, ze nema zmysel sa na to pozerat ako na sustavu rovnic, ale ako na kombinatoricky problem. Kedze niesom informatik, tak o tom vela neviem, ale vyzera to ako specialny pripad "exact cover problem" podobne ako napriklad SUDOKU. Knuth na to vymyslel (nedeterministicky) algoritmus s nazvom "Algorithm X" a aj implementaciu s nazvom "Dancing Links".
Tu su odkazy na wiki
http://en.wikipedia.org/wiki/Exact_cover
http://en.wikipedia.org/wiki/Algorithm_X
http://en.wikipedia.org/wiki/Dancing_Links
Ale ak aj mam nahodou pravdu, tak adaptacia toho algoritmu na tento konkretny problem moze byt pomerne dlhotrvajuca (a mozno aj neefektivna), tak neviem ci tu niekto ma dost zbytocneho casu.
Offline
Ahoj,
úlohu by bylo možné řešit přes toky v sítích:
Zdroj napojíme na všechny řádky, tyto hrany ohodnotíme součtem příslušných řádků a spotřebič napojíme na všechny sloupce a tyto hrany ohodnotíme součtem příslušných sloupců. Následně každý řádek napojíme na každý sloupec a ohodnotíme 2. Potom zřejmě řešení původního problému existuje právě když maximální tok nasytí všechny hrany vycházející ze zdroje. Plyne to z toho, že v případě celočíselného ohodnocení je maximální tok celočíselný.
Ale je to spíš práce pro stroj než pro člověka.
Edit: Ještě odkaz:
http://en.wikipedia.org/wiki/Maximum_flow_problem
http://en.wikipedia.org/wiki/Ford%E2%80 … _algorithm
Offline
↑ check_drummer:
vyborně děkuji za radu sice vůbec nevím o čem píšeš
takže se to musím naučit naučil jsem se programovat
tak to snad zvládnu i tohle, s Tebou je to konkrétni a k věci
a ne otázky kolik to ma řešení, které stejně k výsledku nevedli.
Jsem z toho dost rozhozený mohl bys napsat ještě trošku podrobnější
návod. děkuji
Offline
↑ dogy:
Ahoj,
musíš dávat zadání jasně a přesně. Když nejdřív napíšeš, že zadání existuje a je jediné a potom napíšeš, že nemusí být jediné, tak se, ač se to jedná, tím velmi mění i úvahy, jak dané(daná) řešení najít. To, že řekneš, že je řešení jediné je velmi cenná informace, na základě které lze učinit nějaké závěry při postupu hledání řešení. Např. máme-li soustavu Ax=o, kde A je matice, x neznámý vektor a o nulový vektor a řekneš, že je řešení jediné, pak aniž bych znal tvar A, tak vím, že x=o. (A také pak mj. vím, že A je regulární.)
Teď k tématu: Asi by bylo dobré si něco přečít obecně o teorii grafů (stačí základy kdekoli na internetu) a o tocích v sítích (opět stačí zaklady). Pak můžeme přisoupit k dalším krokům.
PS: Doufám, že ta má úvaha z předchozího příspěvku je správná.
Offline
Poznamky:
1° tento problem je tiez generalizacia problemu magickych stvorcov.
2° napriklad nahradit kazdu neznamu x, neznamou X=x-1, ich hodnoty su potom v tomto probleme: -1; 0; 1.Mozno to je potom symetrickejsie.
Offline
↑ check_drummer:
ahoj tak jsem se pstil do studia
zatim jsem pochopil, že
počet vrcholů je 400
počet hran je 760
ale pokavad přidám zdroj a spotřebič tak máme
počet hran 800
Offline
↑ dogy:
V tocích v sítích nemáš ohodnocené vrcholy, ale hrany.
Offline
↑ check_drummer:jak dlouho by počítač asi počítal ten můj příklad?
Offline
↑ dogy:
Tak pardon, algoritmy jsou cca složtosti V.E.E, tj. zhruba K.50.500.500 operaci, cca 1mil, takže řádově zlomek vteřiny nebo několik málo vteřin...
Offline
↑ check_drummer:
díval jsem se na algoritmus na wiikipedii, ale nevím jak tam vložit mé hodnoty.
Máš s tím nějaké zkušenosti a případně mi s tím poradit?
Offline
↑ dogy:
Ahoj. A o jaký konkrétně algoritmus jde? Můžeš sem prosím napsat odkaz?
Offline
Stránky: 1 2