Zkouska 2010-02-04

jkt at 2010-02-04 18:30:50

Verze F:

  1. Rozhodnete, zda mnozina S={eWe obsahuje nejake prvocislo} S = \{ e | W_e \text{ obsahuje nejake prvocislo} \} je rekurzivni, sve rozhodnuti zduvodnete.

  2. Ukazte, ze mnozina S z predchoziho prikladu je rekurzivne spocetna.

  3. Ukazde, ze DSPACE(log2n)P DSPACE(\log_2 n) \subseteq P .

  4. Ukazte, ze nasledujici problem je polynomialne resitelny:

Omezeny soucet podmnoziny

Instance: Mnozina n prvku A, s kazdym prvkem aA a \in A asociovana velikost v(a){0,,n}v(a) \in \{0,\ldots,n\}, cislo B0 B \ge 0 .
Otazka: Existuje mnozina prvku AA A' \subseteq A , pro niz plati, ze aAv(a)=B \sum_{a \in A'} v(a) = B ?

  1. S pomoci nektereho problemu probiraneho na prednasce ukazte, ze nasledujici problem je NP-uplny:

Nejvetsi spolecny podgraf

Instance: Grafy G1=(V1,E1)G_1 = (V_1, E_1) a G2=(V2,E2)G_2 = (V_2, E_2), prirozene cislo k0k \ge 0.
Otazka: Existuji mnoziny hran E1E1E'_1 \subseteq E_1 a E2E2E'_2 \subseteq E_2, E1=E2k |E'_1| = |E'_2| \ge k, pro nez jsou grafy G1=(V1,E1)G'_1 = (V_1, E'_1) a G2=(V2,E2)G'_2 = (V_2, E'_2) izomorfni? (Izomorfni = "vypadaji stejne").

jkt at 2010-02-04 18:43:33

K tomu rovnou reseni:

  1. Rovnou z Riceovy vety (snad se ani nemuselo ukazovat, ze to neni trivialni trida funkci).

  2. ja to psal jak odukaz prevodu z K, coz bylo spatne.

  3. Snadno, viz odhad, ze TS v case nin^i popise max. nin^i pasky, takze DSPACE(ni)DTIME(ni)\rightarrow DSPACE(n^i) \subseteq DTIME(n^i) a zaroven iN:log2nni\exists i \in \mathbb{N}: \log_2 n \le n^i; slo by ukazat i presneji pres odhad poctu konfiguraci: pocet konfiguraciQ×Σ×log2n \text{pocet konfiguraci} \le |Q| \times |\Sigma| \times \log_2 n, coz projdem nejhur v case 2c×log2n2^{c' \times \log_2 n}.

b := array [0..B] of Bool; // vyznam "uz jsme na vaze [index]"
b[0] := True;
b[zbytek] := false;

for a in A:
  for i := B to 0:
    if i + v(a) <= B && b[i]:
      b[ i + v(a)] := true;
  if b[B]:
    return Nalezeno;
return Nelze

To jiste probehne v O(nB), jiste B<=n2 B <= n^2 -> je to v O(n^3). Je to korektni -- kazdou vec pouzijeme nejvys jednou, pokud dojdem na pozadovanou vahu, vrati OK, pokud nedojdem umre.

  1. Po cca. hodinovem premysleni :( jsem to dokazal uplnost za tri minuty prevodem z HK (+diskuse, ze je to z NP) -- chci ukazat, ze v G=(V,E) je HK <=> G1, G2 maji izomorfni podgraf. Polozim tedy G1 = G, G2 = kruznice nad |V| vrcholy. Tecka :).

Opet Kucerova poznamka, kterou jiz najdete ve foru ze vcerejska. Navic pry byl dnes stejny zapoctovy test jako vcera.

lukas.hermann at 2010-02-05 12:23:27

Doplním řešení úlohy č. 2:

Stačí si definici té množiny přepsat jako: S={e,(p)(prime(p)φe(p))}={e,(p)(s)(prime(p)φe,s(p))}S=\{e, (\exists p)(prime(p) \land \varphi_e(p)\downarrow)\}=\{e, (\exists p)(\exists s)(prime(p) \land \varphi_{e,s}(p)\downarrow)\}.

Platí, že S je rekurzivně spočetná právě tehdy, když ex. PRP P(e,p,s)P(e, p, s) takový, že S={e,(p)(s)P(e,p,s)}S=\{e, (\exists p)(\exists s)P(e, p, s)\}. Stačí tedy říct (nemuselo se to dokazovat), že P(e,p,s)=(prime(p)φe,s(p))P(e, p, s)=(prime(p) \land \varphi_{e,s}(p)\downarrow) je PRP (první se dá odvodit a to druhé plyne z definice).

Ještě k úloze č. 4:

Pokud se někomu (jako třeba mně) nechtělo vymýšlet s algoritmem, stačilo ukázat, že se dá úloha polynomiálně převést na Batoh(s, c, B) (s(a):=v(a), c(a):=v(a)) a že úloha má řešení právě tehdy, když Batoh vrátí předměty o ceně přesně B. Jelikož Batoh má složitost O(nVlog2(B+V))O(nV \log_2(B+V)) a jelikož BVn2B\le V\le n^2, pak celá úloha má složitost O(n3logn)O(n^3 \log n).

Betlista at 2010-02-05 20:09:31

jkt wrote:K tomu rovnou reseni:

  1. Rovnou z Riceovy vety (snad se ani nemuselo ukazovat, ze to neni trivialni trida funkci).

Jo, to říkal Kučera po zkoušce a stejně nevím jak. Bylo mi to jasné i na zkoušce, že tam bude něco na Rice'ovu větu a vycházelo to jedině na tohle, ale stejně - "ani obraz ani zvuk" :-/

jkt wrote:3) Snadno, viz odhad, ze TS v case nin^i popise max. nin^i pasky, takze DSPACE(ni)DTIME(ni)\rightarrow DSPACE(n^i) \subseteq DTIME(n^i) a zaroven iN:log2nni\exists i \in \mathbb{N}: \log_2 n \le n^i;

Tak přesně tohle jsem napsal i já, ale nebylo to dobře, podle lemmatu 12.2 je to přesně naopak, tedy DTIME(f(n))DSPACE(f(n))DTIME(f(n)) \subseteq DSPACE(f(n))

jkt wrote:slo by ukazat i presneji pres odhad poctu konfiguraci: pocet konfiguraciQ×Σ×log2n \text{pocet konfiguraci} \le |Q| \times |\Sigma| \times \log_2 n, coz projdem nejhur v case 2c×log2n2^{c' \times \log_2 n}.

To bude asi lepší přístup ;-)

jkt wrote: 4)

b := array [0..B] of Bool; // vyznam "uz jsme na vaze [index]"
b[0] := True;
b[zbytek] := false;

for a in A:
  for i := B to 0:
    if i + v(a) <= B && b[i]:
      b[ i + v(a)] := true;
  if b[B]:
    return Nalezeno;
return Nelze

To jiste probehne v O(nB), jiste B<=n2 B <= n^2 -> je to v O(n^3). Je to korektni -- kazdou vec pouzijeme nejvys jednou, pokud dojdem na pozadovanou vahu, vrati OK, pokud nedojdem umre.

Wow, tak toto je geniálne a mňa to nenapadlo, potom som sa do toho zaplietol a už som to nedal...

jkt wrote: 5) Po cca. hodinovem premysleni :( jsem to dokazal uplnost za tri minuty prevodem z HK (+diskuse, ze je to z NP) -- chci ukazat, ze v G=(V,E) je HK <=> G1, G2 maji izomorfni podgraf. Polozim tedy G1 = G, G2 = kruznice nad |V| vrcholy. Tecka :).

Aké jednoduché ;-)