mirror of
https://github.com/kristoferssolo/Theory-of-Algorithms-Cheatsheet.git
synced 2025-10-21 20:10:39 +00:00
0.2.0 version
This commit is contained in:
parent
26a502099d
commit
7eda2fb26e
68
main.typ
68
main.typ
@ -129,7 +129,7 @@ Vai ieejas virkne $x \# x$, kur $x in {0,1}^*$
|
|||||||
- Bezgalīgas kopas $A$, $B$ ir vienāda izmēra, ja ir bijekcija ($1:1$ attiecība)
|
- Bezgalīgas kopas $A$, $B$ ir vienāda izmēra, ja ir bijekcija ($1:1$ attiecība)
|
||||||
$F: A->B$.
|
$F: A->B$.
|
||||||
- $A$ ir sanumurējama ar atkārtojumiem, ja ir attēlojums $F:N->A$, kas par katru
|
- $A$ ir sanumurējama ar atkārtojumiem, ja ir attēlojums $F:N->A$, kas par katru
|
||||||
$a$ $E$ $A$ attēlo vismaz vienu $x$ $E$ $N$.
|
$a in A$ attēlo vismaz vienu $x in NN$.
|
||||||
#teo[$A$ ir sanumurējama ar atkārtojumiem tad un tikai tad, ja $A$ ir sanumurējama.]
|
#teo[$A$ ir sanumurējama ar atkārtojumiem tad un tikai tad, ja $A$ ir sanumurējama.]
|
||||||
|
|
||||||
== Sanumerātības pierādījums
|
== Sanumerātības pierādījums
|
||||||
@ -160,7 +160,7 @@ Vai ieejas virkne $x \# x$, kur $x in {0,1}^*$
|
|||||||
Divu lenšu #TM, kur viena ir klasiska darba lente (#DL) un otra ir izvada
|
Divu lenšu #TM, kur viena ir klasiska darba lente (#DL) un otra ir izvada
|
||||||
lente (#IL) (tikai rakstīšanai).
|
lente (#IL) (tikai rakstīšanai).
|
||||||
|
|
||||||
==== Piemērs $(a^k b^k mid(|) k>=0) "ir sanum.?"$
|
==== Piemērs $(a^k b^k mid(|) k>=0)$ alg. sanum.
|
||||||
Pamatot, ka kopa ${a^k b^k mid(|) k>=0}$ ir algoritmiski sanumurējama.
|
Pamatot, ka kopa ${a^k b^k mid(|) k>=0}$ ir algoritmiski sanumurējama.
|
||||||
|
|
||||||
+ Uzraksta uz izejas lentes tukšu vārdu.
|
+ Uzraksta uz izejas lentes tukšu vārdu.
|
||||||
@ -175,7 +175,8 @@ Pamatot, ka kopa ${a^k b^k mid(|) k>=0}$ ir algoritmiski sanumurējama.
|
|||||||
==== Piemērs (atkārt. pēc \# ir sanum\.?)
|
==== Piemērs (atkārt. pēc \# ir sanum\.?)
|
||||||
Pamatot, ka kopa ${x \# x mid(|) x in {a, b}^* }$ ir algoritmiski sanumurējama.
|
Pamatot, ka kopa ${x \# x mid(|) x in {a, b}^* }$ ir algoritmiski sanumurējama.
|
||||||
|
|
||||||
+ Uz darba lentes iet cauri visiem $x$.
|
+ Uz darba lentes iet cauri visiem $x$ (šeit būtu jāparāda/jāpaskaidro, kā to
|
||||||
|
izdara).
|
||||||
+ Katram $x$ uz izejas lentes uzraksta $x \# x$.
|
+ Katram $x$ uz izejas lentes uzraksta $x \# x$.
|
||||||
+ Uz izejas lentes uzraksta $\#\_$.
|
+ Uz izejas lentes uzraksta $\#\_$.
|
||||||
+ Uz darba lentes uzraksta $a$.
|
+ Uz darba lentes uzraksta $a$.
|
||||||
@ -185,10 +186,10 @@ Pamatot, ka kopa ${x \# x mid(|) x in {a, b}^* }$ ir algoritmiski sanumurējama.
|
|||||||
+ Uz #DL nomaina $x$ pret nākošo vārdu.
|
+ Uz #DL nomaina $x$ pret nākošo vārdu.
|
||||||
|
|
||||||
=== Diagonālinācija (pret sanumurējāmību) <diagonalization>
|
=== Diagonālinācija (pret sanumurējāmību) <diagonalization>
|
||||||
Paņēmiens -- ir saraksts (pieņem, ka ir iegūts saraksts) vai uzskaitījums ar
|
Ir saraksts (pieņem, ka ir iegūts saraksts) vai uzskaitījums ar visiem kopas
|
||||||
visiem kopas elementiem un tiek konstruēts jauns elements, kas neatrodas šajā
|
elementiem un tiek konstruēts jauns elements, kas neatrodas šajā sarakstā. Tas
|
||||||
sarakstā. Tas demonstrē, ka kopa ir nesanumurējama, jo vienmēr var izveidot
|
demonstrē, ka kopa ir nesanumurējama, jo vienmēr var izveidot jaunu elementu,
|
||||||
jaunu elementu, kas nav iekļauts uzskaitē (piemēram, reālos skaitļos).
|
kas nav iekļauts uzskaitē (piemēram, reālos skaitļos).
|
||||||
|
|
||||||
=== Pretruna (pret sanumurējāmību) <contradiction>
|
=== Pretruna (pret sanumurējāmību) <contradiction>
|
||||||
Pieņem, ka kopa ir saskaitāma un tad rodas pretruna. To var izdarīt, parādot,
|
Pieņem, ka kopa ir saskaitāma un tad rodas pretruna. To var izdarīt, parādot,
|
||||||
@ -196,43 +197,23 @@ ka kaut kādas kopas īpašības vai kardinalitāte ir pretrunā ar sanumurējam
|
|||||||
pieņēmumu.
|
pieņēmumu.
|
||||||
|
|
||||||
== Piemērs $(ZZ "sanumurētība")$
|
== Piemērs $(ZZ "sanumurētība")$
|
||||||
Vai visu veselo skaitļu kopa $ZZ={..., -1, 0, 1, ...}$ ir sanumurējama? \
|
Vai visu veselo skaitļu kopa $ZZ={..., -1, 0, 1, ...}$ ir sanumurējama?
|
||||||
Vai ir $F:{F(1), F(2), ..., F(n), ...}=ZZ$? \
|
Vai ir $F:{F(1), F(2), ..., F(n), ...}=ZZ$?
|
||||||
|
|
||||||
|
$F(n) = n/2 ", ja pāra un" -(n-1)/2 "ja nepāra"$.
|
||||||
|
|
||||||
$ F(1)=0, F(2)=-1, F(3)=1, F(4)=-2, ... $
|
Sākumā tiek iegūta nulle.
|
||||||
|
|
||||||
Viens no veidiem, kā izveidot bijekciju pāra kopai, ir izmantot metodi, ko sauc
|
Iterējot par $n$:
|
||||||
par Kantora pārošanas funkciju.
|
+ Funkcijas vērtības skaitļa modulis palielinās par 1, tiek iegūts pozitīvais
|
||||||
Kantora pārošanas funkcija ir definēta sekojoši:
|
skaitlis;
|
||||||
$f(k_1, k_2) := 1/2(k_1 + k_2)(k_1 + k_2 + 1) + k_2$, kur $k_1,k_2 in NN = {0, 1, 2, ...}$
|
+ Tiek iegūts negatīvais skaitlis;
|
||||||
|
|
||||||
#figure(
|
$F(1)=0, F(2)=1, F(3)=-1, F(4)=2, F(5)=-2...$
|
||||||
image("assets/img/cantors-pairing-function.png", width: 50%),
|
|
||||||
caption: "Cantor's pairing function",
|
|
||||||
)
|
|
||||||
|
|
||||||
Šī funkcija kā ievadi pieņem naturālo skaitļu pāri $(k_1, k_2)$ un to attēlo
|
Injekcija: ja $F(n_1) = F(n_2)$ no formulas seko, ka $n_1 = n_2$.
|
||||||
kā unikālu naturālo skaitli.
|
|
||||||
Tā nodrošina, ka katram pārim tiek piešķirts unikāls skaitlis un tiek aptverti
|
|
||||||
visi iespējamie pāri bez atkārtojumiem.
|
|
||||||
|
|
||||||
Pamatojam bijekciju, balsototies uz faktu, ka $"bijekcija" = "injekcija" and
|
Surjekcija: katram $z in ZZ$ eksistē $n in NN$, ka $F(n) = z$.
|
||||||
"surjekcija"$.
|
|
||||||
|
|
||||||
=== Injektivitāte<injectivity>
|
|
||||||
|
|
||||||
Pieņemsim, ka $f(k_1, k_2) = f(k_3, k_4)$, kur $(k_1, k_2)$ un $(k_3, k_4)$
|
|
||||||
ir atšķirīgi pāri no naturālo skaitļu kopas.
|
|
||||||
Vienkāršojot un nolīdzinot izteiksmes, varam parādīt, ka
|
|
||||||
$k_1 = k_3$ un $k_2 = k_4$.
|
|
||||||
Tātad funkcija $f$ ir injektīva.
|
|
||||||
|
|
||||||
=== Surjektivitāte<surjectivity>
|
|
||||||
Jebkuram naturālam skaitlim $n$ varam atrast pāri $(k_1, k_2)$, kas tiek
|
|
||||||
attēlots uz $n$, izmantojot Kantora pārošanas funkcijas apgriezto funkciju.
|
|
||||||
Pielietojot apgriezto funkciju uz $n$, varam atgūt sākotnējo pāri $(k_1, k_2)$.
|
|
||||||
Tādējādi funkcija $f$ ir surjektīva.
|
|
||||||
|
|
||||||
= Redukcijas
|
= Redukcijas
|
||||||
|
|
||||||
@ -388,7 +369,7 @@ nevar atrisināt.
|
|||||||
#context [
|
#context [
|
||||||
#set par(justify: false)
|
#set par(justify: false)
|
||||||
== Piemēri (prob. ir neatr)
|
== Piemēri (prob. ir neatr)
|
||||||
=== #halt / #acc
|
=== #halt <= #acc
|
||||||
- #underline("Teorēma"): Ja var atrisināt #acc, tad var atrisināt arī #halt
|
- #underline("Teorēma"): Ja var atrisināt #acc, tad var atrisināt arī #halt
|
||||||
- #underline("Pierādījums"): Attēlojums $R:M->M'$ ar īpašību $halt(M\#x) = acc(M'\#x)$.
|
- #underline("Pierādījums"): Attēlojums $R:M->M'$ ar īpašību $halt(M\#x) = acc(M'\#x)$.
|
||||||
- Tad $halt(M\#x)$ var atrisināt sekojoši:
|
- Tad $halt(M\#x)$ var atrisināt sekojoši:
|
||||||
@ -397,7 +378,7 @@ nevar atrisināt.
|
|||||||
- Ja $M$ akceptē/noraida, tad $M'$ akceptē (izdos $1$).
|
- Ja $M$ akceptē/noraida, tad $M'$ akceptē (izdos $1$).
|
||||||
- Ja $M$ neapstājas, $M'$ arī neapstājas.
|
- Ja $M$ neapstājas, $M'$ arī neapstājas.
|
||||||
|
|
||||||
=== #eqans/ #acc
|
=== #acc <= #eqans
|
||||||
- #underline("Zinām"): #acc nav atrisināma
|
- #underline("Zinām"): #acc nav atrisināma
|
||||||
- #underline("Pierādām"): Ja var atrisināt #eqans, tad var atrisināt arī #acc.
|
- #underline("Pierādām"): Ja var atrisināt #eqans, tad var atrisināt arī #acc.
|
||||||
- #underline("Secinām"): #eqans nevar atrisināt.
|
- #underline("Secinām"): #eqans nevar atrisināt.
|
||||||
@ -1025,12 +1006,7 @@ r > 1: sum_(i=0)^(n) a*r^i = a * (r^(n+1)-1)/(r-1) quad \
|
|||||||
r < 1: sum_(i=0)^(infinity) a*r^i = (a)/(1-r) \
|
r < 1: sum_(i=0)^(infinity) a*r^i = (a)/(1-r) \
|
||||||
|
|
||||||
// Logarithmic sum
|
// Logarithmic sum
|
||||||
sum_(i=1)^(n) log i = log(n!) approx \
|
sum_(i=1)^(n) log i = log(n!) approx n log n - n + O(log n) \
|
||||||
approx n log n - n + O(log n) \
|
|
||||||
|
|
||||||
// Useful approximation for factorial (Stirling)
|
|
||||||
"Stirling's approximation": \
|
|
||||||
n! approx sqrt(2 pi n) ( (n)/(e) )^n \
|
|
||||||
|
|
||||||
// Exponential sum (appears in brute-force algorithms)
|
// Exponential sum (appears in brute-force algorithms)
|
||||||
sum_(i=0)^(n) 2^i = 2^(n+1) - 1 \
|
sum_(i=0)^(n) 2^i = 2^(n+1) - 1 \
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user