Třídicí algoritmus pro disková pole

mr x

Re:Třídicí algoritmus pro disková pole
« Odpověď #45 kdy: 14. 12. 2014, 13:55:45 »
Ad 1) Odpovědí na problém z otázky ale není "set A se vejde do bucketu B", odpovědí je "pro set A je nejmenší počet bucketů B".
Pořád si asi nerozumíme. Bavíme se o DVOU problémech - "decision varianta" (odověď ANO-NE) a "zjištění optima" (odpověď: dej a,b,c do X a d,e do Y). První problém by teda snad měl být NP-complete a druhý těžší než NP-complete.

To, na co teď reaguješ, byla otázka na to, jaktože postup pro *verifikaci* u prvního (který musí existovat, protože je NP-complete) nemůžu použít pro řešení druhého.

Myslim ze aby problem byl NP, tak overeni reseni musi byt P.

Dejme tomu ze mam funkci "f(O, B)", ktere predam objekty a batohy a ona me rekne jak je tam mam naskladat aby se tam vesly, nebo rekne ze se tam nevejdou. Kdyz rekne ze se tam vejdou, a da me nejaky reseni, tak overit ze se tam fakt vejdou je otazka jednoduchyho P algoritmu - proste je tam zkusim naskladat jak me rika a uvidim.

Kdyz ale budu mit druhou funkci "g(O)" ktera me rekne minimalni pocet batohu, tak overeni je slozitejsi. Napr bych mohl opakovane volat funkci f:

f(O, 1 batoh)
f(O, 2 batohy)
...

problem je ze funkce f neni P, takze overeni by nebylo P.


tm

Re:Třídicí algoritmus pro disková pole
« Odpověď #46 kdy: 14. 12. 2014, 14:37:28 »
Ad 1) Odpovědí na problém z otázky ale není "set A se vejde do bucketu B", odpovědí je "pro set A je nejmenší počet bucketů B".
Pořád si asi nerozumíme. Bavíme se o DVOU problémech - "decision varianta" (odověď ANO-NE) a "zjištění optima" (odpověď: dej a,b,c do X a d,e do Y). První problém by teda snad měl být NP-complete a druhý těžší než NP-complete.

To, na co teď reaguješ, byla otázka na to, jaktože postup pro *verifikaci* u prvního (který musí existovat, protože je NP-complete) nemůžu použít pro řešení druhého.

Nie, to by nešlo. Ten optimalizačný algoritmus dostane predmety a ako výsledok vráti - tieto predmety viem umiestniť do 4 batohov, a to tak a tak. Váš polynomiálny verifikátor vie zistiť, či sa tie predmety naozaj dajú tak poukladať, ale už s ním neviete zistiť, či by sa tie predmety nejako nevošli aj do 3 batohov.

Tu je dôležité, že ten algoritmus vracia nie len počet, ale aj presné rozdelenie jednotlivých predmetov (predmet A ide do batohu č.3, atď) - ak by algoritmus vrátil len počet, polynomiálne to verifikovať neviete.

Ak by bol počet batohov súčasťou vstupu pre algoritmus ("umiestni tieto predmety do maximálne štyroch batohov"), tak to stále nejde - viete overiť pozitívne riešenie, nie však riešenie negatívne. Teda ak algoritmus povie "dá sa to takto", viete overiť, či je to pravda. Ale ak algoritmus vráti "nedá sa to", neviete polynomiálne overiť, či sa to naozaj nedá.

RDa

  • *****
  • 3 059
    • Zobrazit profil
    • E-mail
Re:Třídicí algoritmus pro disková pole
« Odpověď #47 kdy: 14. 12. 2014, 14:50:25 »
Muze puvodni tazatel nahodit vzorovy vstup? Tj konkretni X0-XN a Y. Mozna z duvodu budouci kompatibility spise X0..N + Y0..N

Re:Třídicí algoritmus pro disková pole
« Odpověď #48 kdy: 14. 12. 2014, 15:22:54 »
ak by algoritmus vrátil len počet, polynomiálne to verifikovať neviete.
No prave! Decision varianta mi rekne "ANO, do 5ti bucketu se to vejde" - jak muzu odpoved polynomialne overit, aniz bych to (nepolynomialne) vyresil?

Re:Třídicí algoritmus pro disková pole
« Odpověď #49 kdy: 14. 12. 2014, 15:34:30 »
No prave! Decision varianta mi rekne "ANO, do 5ti bucketu se to vejde" - jak muzu odpoved polynomialne overit, aniz bych to (nepolynomialne) vyresil?
Navic mi tam jeste neni jasna jedna vec, ale to je dany mou neznalosti:

Jestlize mi algoritmus A1 da odpoved, ktera "obsahuje vic informaci", tak je pro me snadnejsi odpoved overit. Zatimco kdyz mi algoritmus A2 da jenom odpoved ANO-NE, tak je to tezsi overit. A pritom podle toho, co tady bylo napsaný, by A2 měl mít *menší* složitost než A1.

Prostě já osobně jsem se do toho teda nějak zamotal a není mi to vůbec jasný.


Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re:Třídicí algoritmus pro disková pole
« Odpověď #50 kdy: 14. 12. 2014, 16:22:15 »
Cyr:
Citace
Jakkoliv implementujete algoritmus - vždy musí odpovídat na "pro set A  je nejmenší počet bucketů B" a nic jiného. Pro ověření správnosti odpovědi "pro set A je nejmenší počet bucketů B" nemůžete použít algoritmus ve třídě složitosti P. To je celý problém a důvod, proč to je  NP-hard a ne NP.
A to zas prrrr. :-) Součástí odpovědi je vždy "certifikát", proč tomu tak je a ověřuje se ten certifikát. Vždyť u decision problému by čistá odpověď ANO (kterou získáš "v čase NP") přeci také nelze ověřit "v čase P". To by to nebyl NP, ale P problém. To, co jde ověřit v čase P je certifikát (např. to jde definovat pomocí DTS s orákulem, kdy orákulum nejdřív "uhádne" certifikát a pak jej v P ověří). V případě decision problému je daným certifikátem rozložení do kyblíků.

A problém je v tom, že pro odpověď NE evidetně neexistuje stroj, který by to v čase NP spočítal, tedy není možno vytvořit "certifikát", který by šel v P čase ověřit. Tedy decision problém je v třídě NP, ale není v třídě co-NP. Proto také asi nefunguje Mirkův postup, kdy to ověřím pro 1 až k. Protože pro ty 1-(k-1) neexistují certifikáty ověřující NE u decision problému.

Mirek:
Citace
Tohle je podle me zcestna uvaha. Problem bude imho v tom, ze polynomialni algoritmus porad nema zadny presne dany limit, ktery bys mohl detekovat - cili zrejme dalsi [rypnuti]krasna ukazka informaticky-teoretickeho zaveru s obrovskym teoretickym dopadem a nulovou praktickou vyuzitelnosti ;) [/rypnuti]
A zas prrrr. :-) Pokud dokážu, že je ten program v NP, tak musím dokázat existenci polynomu, který zhora omezuje nejdelší možný běh pro odpověď ANO. Takže (pominu-li hustokrutý důkazy typu: "polynom existuje ale neznám ho" :-) který se v algoritmech skoro nevyskytují) znám horní hranici doby běhu. Takže to opravdu omezit můžu. Zpravidla je totiž ten algoritmus nějaké prohledávání stromu a ten certifikát je kterou cestou se mám dát v grafu. A hloubka grafu jde zpravidla odhadnout snadno.

Problém bude v tom, že to počítání nejde asi v polynomiálním čase udělat - jen nevím proč. Představuju si to tak, že každý druhý pole na pásce vyhradím na počítání počtu kroků. Čili každej originální krok se skládá z max 4*O(n) kroků (dojdu na konec počítadla, zapíšu další čárku, 2* kvůli zdvojeným polím, 2*cesta tam a zpět), čili zůstávám v polynomiální složitosti.

U výše uvedeného postupu nevidím, co je certifikátem toho řešení. Ale definice NP nevyžadují explicitně existenci certifikátu. Ta by měla jen vyplývat z toho řešení pomocí NTS v polynomiálním čase. Někde tam asi problém bude, ale kde?

Re:Třídicí algoritmus pro disková pole
« Odpověď #51 kdy: 14. 12. 2014, 18:33:00 »
Takže (pominu-li
To jsem měl namysli - že tenhle postup nemusí fungovat obecně, protože je myslitelná situace, kdy vím, že je něco polynom, ale nevím, jakého tvaru. Pokud konkrétní polynom znám, tak to jde, to je jasný.

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re:Třídicí algoritmus pro disková pole
« Odpověď #52 kdy: 14. 12. 2014, 22:06:19 »
Tak to jo :-)

Ale důkazy, že je něco polynomiální, se v podstatě vždy dělají konstrukcí algoritmu, takže polynom je znám.