24 - Parciální rekurzivní funkce, časová a paměťová složitost (třídy složitosti, úplnost, SAT problém) Flashcards

1
Q

Hierarchie funkcí

A
  1. Všechny funkce
    1. Parciálně rekurzivní funkce - Vyčíslitelné funkce (parciální vyčíslitelné) ( primitivně rekurzivní + minimalizace, Občas zastaví, občas ne, ekvivalent TS)
    2. μ -rekurzivní funkce (totální vyčíslitelné) (V programování​ cyklus while:​ vždy skončí,ale nevím za jak dlouho,resp. nedokážu to odhanout ihned na počátku)
    3. Primitivně rekurzivní funkce (V programování ​cyklus for:​vždy skončí, dokážu ihned v počátku definovat počet opakování)
      1. Počáteční funkce
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Funkce definice (funkce, totální, parciální a striktně parciální funkce)

A

Funkce = jako funkci budeme označovat zobrazení f:N^m→N^n
Totální funkce = Definována pro celý definiční obor.
• Například +:
○ plus:N×N→N
○ plus(x,y)=x+y

totální je opak striktně parciální

Parciální funkce
• Nemusí být definována pro celý definiční obor (ale může).

Striktně parciální funkce
• Není definována pro celý definiční obor.
• Příklad /:
○ Nemůžeme dělit nulou.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Počáteční funkce

A

= stavební kameny vyšších funkcí -> Hiearchie vyčíslitelných funkcí je založena na dostatečně elementárních tzv. počátečních funkcích, které tvoří „stavební kameny“ vyšších funkcí.

Nulová funkce
• (ksí) zobrazuje prázdnou n-tici na 0
• ξ()=0

Funkce následníka σ:N→N
• (sigma) zobrazuje číslo na číslo o 1 větší
• σ(x)=x+1

Projekce π_k^n:Nn→N
• (pí) vybírá k-tou složku z n-tice
• např. π_2^3 (7,6,4)=6, speciální případ π_0^3 (7,6,4)=()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Primitivně rekurzivní funkce

A

Primitivně rekurzivní funkce jsou funkce tvořené z počátečních funkcí kombinací, kompozicí a primitivní rekurzí
• Každá primitivně rekurzivní funkce je totální funkce
• Většina prakticky použitelných funkcí v současných počítačích jsou primitivně rekurzivní funkce.
Alt.zápis: místo h≡plus∘(π_1^3×π_3^3) můžeme zapisovat h(x, y, z)= plus(x, z)=x+z

Kombinace f:Nk→Nm a g:Nk→Nn (x - řetězení)
• Výsledek je zřetězení výsledků f a g.
○ f×g:Nk→N(m+n)
○ Konvence: n-tici (x_1, x_2, …, x_n )∈N budeme oznacovat jako x ̅.
○ f×g(x ̅ ):(f(x ̅ ),g(x ̅ )), x∈Nk
○ Příklad: π_1^3×π_3^3 (4,12,8)=(4,8)

Kompozice f:Nk→Nm a g:Nm→Nn (g∘f, čteme jako “g po f”.)
• Provede funkci f a výsledek dá na vstup funkci g.
○ g∘f, čteme jako “g po f”.
• g∘f:Nk→Nn
• g∘f(x ̅ )=g(f(x ̅)),x∈Nk
• Příklad: σ∘ξ()=1, σ∘σ∘ξ()=2

Primitivní rekurze
• Umožňuje vytvořit funkci f:N(k+1)→Nm na základě funkcí g:Nk→Nm a h:N(k+m+1)→Nm
• f(x ̅,0)=g(x ̅ ) (g definuje konec rekurze pro hloubku 0)
• f(x ̅,y+1)=h(x ̅,y,f(x ̅,y)), x∈Nk (h definuje jak z výsledku nižší hloubky vytvořit výsledek vyšší hloubky)

Příklad:

Funkce násobení
Zřejme:
(a) Pro y = 0 platí x ∗ 0 = 0
(b) Pro y > 0 je výsledek x + mult(x, y − 1)

Takže funkci mult můžeme definovat následujícím předpisem:
mult(x, 0) = 0
mult(x, y + 1) = x + mult(x, y)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Parciálně rekurzivní funkce

A

Parciálně rekurzivní funkce
Parciálně rekurzivní funkce je funkce, kterou lze vytvořit z primitivně rekurzivních funkcí a minimalizace.
• Každá parciální rekurzivní funkce je Turingovsky vyčíslitelná.
• Každý TS lze převést na parciálně rekurzivní funkci.

Operátorem minimalizace se parciálně rekurzuvní funkce liší od primitivně rekurzivních funkcí - zavádí totiž do výpočtu funkce potenciálně nekonečný cyklus.!!!

Minimalizace
• Najde nejmenší y pro které g vrací 0 a všechny nižší hodnoty y mají definované výsledky v g.
• Pomocí techniky minimalizace vytvoříme funkci f:Nn→N na základě jiné funkce funkce g:N(n+1)→N, tak že definujeme f(x ̅ ) jako nejměnší hodnotu y z N, pro kterou g(x ̅,y)=0 a zároveň g(x ̅,z) je definována pro všechna nezáporná cená čísla menší než y.
1. g(x ̅,y)=0
2. g(x ̅,z) je definována pro ∀z

Notace: f(x ̅ )=μy[g(x ̅,y)=0]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Složitost - základní pojmy, church turingova teze

A

Church-Turingova teze říká, že každý algoritmus je implementovatelný jistým TS a můžzeme tedy složitost algoritmu chápat jako složitost TS (čas a prostor).

Složitost
Složitost je vyjádření použitých zdrojů jako funkce závisející na velikosti vstupu.
Určujeme:
• složitost nejhoršího případu (nejčastější)
• nejlepšího případu
• průměrného případu (vážený průměr dle pravděpodobnosti)

Časová složitost = Počet kroků výpočtu TS (cena kroků může být shodná nebo i rozdílná)
Paměťová (prostorová) složitost = Potřebný počet buněk pásky (nepočítáme vstup)

* Je-li prostorová složitost n pak časová složitost nemůže být nižší než n+1 (jednoduše by nebylo kdy toho tolik zapsat).
* Je-li jazyk přijímán vícepáskovým TS v čase t(n) je také přijímán jednopáskovým TS v čase t(n)^2.

Asymptotické omezení složitosti

Pro dostatečně velké vstupy se složitost stále více blíží k asymptotické složitosti (s tolerancí danou násobením nějakými konstantami)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Nedeterminismus a složitost

A

Nedeterministický TS lze simulovat deterministickým TS , ale jen za cenu exponenciálního nárůstu času.
Nedeterminismus nepřináší nic z pohledu vyčíslitelnosti, ale výrazně ovlivňuje složitost.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

P vs NP

A

Popis tříd P (polynomial) a NP (nondeterministic polynomial)
Třída složitosti P obsahuje všechny úlohy, jejichž řešení lze nalézt deterministickým Turingovým strojem v polynomiálním čase.

Pro třídu NP platí totéž s tím rozdílem, že úlohy jsou v polynomiálním čase řešitelné hypotetickým nedeterministickým Turingovým strojem, který dokáže současně testovat mnoho možností řešení. Jsou to tedy ty problémy, jejichž řešení lze ověřit v polynomiálním čase, ovšem nevíme, zda je lze také v polynomiálním čase nalézt.

P = NP ? (Otazka, zda jsou tridy slozitosti N a NP totozne) - existují úlohy, u kterých je jednodušší ověřit řešení, než je vyřešit?)
Problém P (polynomiální) versus NP (nedeterministicky polynomiální) je důležitý otevřený problém v teoretické informatice; označuje se tak otázka, zda jsou třídy složitosti P a NP totožné. Zjednodušeně řečeno jde o otázku, zda každý problém, u kterého dokáže počítač rychle ověřit správnost nabídnutého řešení, dokáže počítač také sám rychle vyřešit. Všeobecně se předpokládá, že platí P ≠ NP, tedy že existují úlohy, které je složitější vyřešit než ověřit platnost řešení. Důkaz však stále nebyl nalezen a tento problém je zařazený mezi sedm tzv. problémů tisíciletí.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Třídy složitosti

A

Časově konstruovatelná funkce f - časová složitost je závislá na vstupu
• Vícepáskový TS pro libovolný vstup w zastaví přesně po t(|w|) krocích (např. f(n)=n log⁡n, ne např. f(n)=c)

Prostorově konstruovatelná funkce s - prostorová složitost je závislá na vstupu
• Vícepáskový TS pro libovolný vstup w zastaví s využitím přesně s(|w|) buněk pásky (např. s(n)=n log⁡n, ne např. s(n)=c)

Nejběžněji používané třídy jsou P a NP. Potom máme ještě další třídy…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Redukce, úplnost

A

R-redukce
• Jazyk L1 je R-redukovatelný na L2 jestliže existuje funkce f třídy R taková, že w∈L_1⇔f(w)∈L_2 - značíme L_1 ≤_Rm L_2
• (tj. jde o převod jednoho problému na problém jiný převodní funkcí, která má složitost R)

Pokud je L1 P-redukovatelný na L2, který je ve třídě P, pak i L1 je ve třídě P.
Pokud je L1, který není ve třídě P, P-redukovatelný na L2, pak i L2 není ve třídě P.

Jazyk C-těžký (angl. C-hard) = všechny jazyky třídy C lze na tento jazyk redukovat
Jazyk C-úplný (angl. C-complete) = Jazyk L0 je C-úplný pokud je C-těžký a patří do třídy C

Např. NP-úplné (NP-complete, NPC) problémy jsou takové nedeterministicky polynomiální problémy, na které jsou polynomiálně redukovatelné všechny ostatní problémy z NP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

SAT problém

A

SAT představuje NP-úplný problém. To ve zkratce znamená, že není znám žádný efektivní algoritmus řešící všechny instance SAT problému v polynomiálním čase. Obecně se předpokládá, že takový algoritmus neexistuje (není to však dokázáno, viz Problém P versus NP). Dále může být široká škála přirozeně se vyskytujících problémů při rozhodování a optimalizacích transformována jako SAT problém.

Po lopatě: Máme Boolean expression a snažíme se přijít na to, jestli existuje ohodnocení takové, které nám vrátí true.
• SAT-problém je NP-úplný vzhledem k P-redukci
• První problém, jehož NP-úplnost vzhledem k P-redukci byla dokázána
• Lze zkonstruovat NTS, který přijímá SAT v P čase (každý konkrétní SAT-problém můžeme zakódovat jediným řetězcem)

Cookův teorém
Libovolný NP problém lze P-redukovat na SAT-problém.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cookův teorém

A

Cookův teorém

Libovolný NP problém lze P-redukovat na SAT-problém.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly