From bb63f218aa67a0567918aaf4b066b2b1b1b3a9a5 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Fri, 13 Jun 2025 19:10:24 +0300 Subject: [PATCH] feat: add countables --- assets/img/cantors-pairing-function.png | Bin 0 -> 55867 bytes layout.typ | 102 +--------------- main.typ | 153 ++++++++++++++++++------ requirements.typ | 1 - 4 files changed, 117 insertions(+), 139 deletions(-) create mode 100644 assets/img/cantors-pairing-function.png diff --git a/assets/img/cantors-pairing-function.png b/assets/img/cantors-pairing-function.png new file mode 100644 index 0000000000000000000000000000000000000000..58571ed89b16514cbcb6eed59f53b0ef3a43bcc5 GIT binary patch literal 55867 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 literal 0 HcmV?d00001 diff --git a/layout.typ b/layout.typ index 3c4c866..2764484 100644 --- a/layout.typ +++ b/layout.typ @@ -1,4 +1,3 @@ -#import "@preview/i-figured:0.2.4" #import "@preview/tablex:0.0.9": tablex #import "@preview/headcount:0.1.0": * @@ -14,7 +13,7 @@ set document(author: authors) set page( - columns: 1, + columns: 2, margin: ( left: 10mm, right: 10mm, @@ -62,13 +61,9 @@ // WARNING: remove before sending // outline(title: "TODOs", target: figure.where(kind: "todo")) /* --- Figure/Table config start --- */ - show heading: i-figured.reset-counters - show figure: i-figured.show-figure.with(numbering: "1.1.") set figure(numbering: dependent-numbering("1.1")) set figure(placement: none) - show figure.where(kind: "i-figured-table"): set block(breakable: true) - show figure.where(kind: "i-figured-table"): set figure.caption(position: top) show figure.where(kind: "attachment"): set figure.caption(position: top) show figure.where(kind: raw): set figure.caption(position: top) @@ -78,103 +73,9 @@ show figure.where(kind: image): set par(leading: 0.75em) show figure.caption: set text(size: 11pt) - show figure.caption: it => { - if it.kind == "i-figured-table" { - return align( - end, - emph(it.counter.display(it.numbering) + " tabula ") - + text(weight: "bold", it.body), - ) - } - if it.kind == "i-figured-image" { - return align( - start, - emph(it.counter.display(it.numbering) + " att. ") - + text(weight: "bold", it.body), - ) - } - if ( - it.kind - in ( - "i-figured-raw", - "i-figured-\"attachment\"", - ) - ) { - return align(end, it.counter.display() + ". pielikums. " + text(it.body)) - } - it - } - // disable default reference suppliments set ref(supplement: it => { }) - // Custom show rule for references - show ref: it => { - let el = it.element - - if el == none { - return it - } - - if el.func() == heading { - return link( - el.location(), - numbering(el.numbering, ..counter(heading).at(el.location())) - + " " - + el.body, - ) - } - - if el.func() == figure { - let kind = el.kind - - // Map for different kinds of supplements - let supplement_map = ( - i-figured-table: "tab.", - i-figured-image: "att.", - attachment: "pielikumu", - ) - - - // Get the supplement value properly - let supplement = if type(it.supplement) != function { - it.supplement - } else { - if kind in supplement_map { - supplement_map.at(kind) - } else { - "" - } - } - - let number = if kind == "attachment" { - ( - numbering(el.numbering, ..counter(figure.where(kind: kind)).at( - el.location(), - )) - + "." - ) // Only add dot for attachments - } else { - numbering(el.numbering, ..counter(figure.where(kind: kind)).at( - el.location(), - )) // No extra dot for tables and images - } - - // Create counter based on the kind - return link( - el.location(), - number - + if supplement != "" { - " " + supplement - } else { - "" - }, - ) - } - - // Default case for non-figure elements - it - } /* --- Figure/Table config end --- */ set list(marker: ([•], [--], [\*], [·])) @@ -184,6 +85,7 @@ outline(depth: 3, indent: indent, title: text(size: 14pt, "Saturs")) + pagebreak() body } diff --git a/main.typ b/main.typ index e62ba36..00f003d 100644 --- a/main.typ +++ b/main.typ @@ -6,11 +6,14 @@ #show: project.with(title: [Theory of Algorithms Cheatsheet], authors: ( "Kristofers Solo", )) -#pagebreak() + +#let teo(title: "Teorēma", ..args) = memo(title: title, ..args) + #let TM = $T M$ #let rej = $q_"rej"$ #let acc = $q_"acc"$ + = Tjūringa Mašīnas == Info Var būt 3 veida uzdevumi: stāvokļu, tekstuāls, vairāklenšu. @@ -36,7 +39,8 @@ Nosimulēt stāvēšanu uz vietas jeb $d=0$ var sādi: == Piemērs Vai ieejas virknē $a^n b^n c^n$, kur $n>0$ -#columns(2, [ + +#context [ $(q_1, a) -> (q_2, *, ->)$ \ $(q_1, b slash c) -> rej$ \ $(q_1, *) -> (q_1, *, ->)$ \ @@ -48,7 +52,6 @@ Vai ieejas virknē $a^n b^n c^n$, kur $n>0$ $(q_2, *) -> (q_2, *, ->)$ \ $(q_3, a) -> rej$ \ - #colbreak() $(q_3, b) -> (q_3, b, ->)$ \ $(q_3, c) -> (q_4, *, ->)$ \ $(q_3, *) -> (q_3, *, ->)$ \ @@ -59,7 +62,7 @@ Vai ieejas virknē $a^n b^n c^n$, kur $n>0$ $(q_5, a slash b slash c slash *) -> (q_5, a slash b slash c slash *, <-)$ \ $(q_5, \_) -> (q_1, \_, ->)$ \ -]) +] - Aizstāj $a$ ar $*$, $b$ ar $*$, $c$ ar $*$. - Kontrolē secību (pēc $a$ jāseko $a$ vai $b$, pēc $b$ jāseko $b$ vai $c$, pēc @@ -69,7 +72,7 @@ Vai ieejas virknē $a^n b^n c^n$, kur $n>0$ == Piemērs Vai ieejas virkne $x \# x$, kur $x in {0,1}^*$ -#columns(2, [ +#context [ $(q_1, 0, \_) -> (q_1, 0, 0, ->, ->)$ \ $(q_1, 1, \_) -> (q_1, 1, 1, ->, ->)$ \ $(q_1, \#, \_) -> (q_2, \#, \_, 0, <-)$ \ @@ -85,13 +88,14 @@ Vai ieejas virkne $x \# x$, kur $x in {0,1}^*$ $(q_3, 0 slash 1, \_) -> rej$ \ $(q_3, \_, 0 slash 1) -> rej$ \ $(q_3, \_, \_) -> acc$ \ -]) +] - Nokopē simbolus līdz $\#$ uz otras lentes. - Sasniedzot $\#$, uz otras lentes iet atpakaļ līdz pirmajam simbolam. - Salīdzina pirmās lentes simbolus pēc $\#$ ar otro lenti. -= Lietais $O$ un mazais $o$ +#set page(columns: 2) += Lielais $O$ un mazais $o$ == Info - Tiek dota funkcija un jānosaka vai tā atrisināma dotajā lielā $O$ vai mazā $o$ laikā. @@ -109,48 +113,121 @@ Vai ieejas virkne $x \# x$, kur $x in {0,1}^*$ + Ja rezultāts sanāk tuvu $0$, tad vienādojums būs patiess, jo funkcija aug lēnāk. -#columns( - 2, - [ - == Piemērs - $ 2n^4 + 6n^2 + 17 =^? O(n^4) $ +== Piemērs +$ 2n^4 + 6n^2 + 17 =^? O(n^4) $ - Izteiksme ir patiesa, tā kā kreisās puses izteiksmes augstākā pakāpe jeb kārta - ir $4$ un iekš $O$ tā arī ir $4$. +Izteiksme ir patiesa, tā kā kreisās puses izteiksmes augstākā pakāpe jeb kārta +ir $4$ un iekš $O$ tā arī ir $4$. - == Piemērs - $ 2n^4 + 6n^2 + 17 =^? O(n^3) $ +== Piemērs +$ 2n^4 + 6n^2 + 17 =^? O(n^3) $ - Izteiksme ir aplama, jo kreisajā pusē augstākā pakāpe ir $4$, kamēr labajā ir norādīta $3$, un $4$ pakāpes izteiksmi nevar izpildīt $O(n^3)$. +Izteiksme ir aplama, jo kreisajā pusē augstākā pakāpe ir $4$, kamēr labajā ir norādīta $3$, un $4$ pakāpes izteiksmi nevar izpildīt $O(n^3)$. - == Piemērs - $ n log^4 n =^? o(n^1.5) $ +== Piemērs +$ n log^4 n =^? o(n^1.5) $ - Ir zināms, ka mazajā $O$ notācijai, ja $lim_(x->oo)f(x)/g(x)$, kur $f(x)$ ir - funkcija un $g(x)$ ir $o$, tad vienādība izpildās. - Ievietojot vērtības $ lim_(n->oo) (n log^4 n)/n^1.5=0 $ - Tātad vienādojums ir - patiess. +Ir zināms, ka mazajā $O$ notācijai, ja $lim_(x->oo)f(x)/g(x)$, kur $f(x)$ ir +funkcija un $g(x)$ ir $o$, tad vienādība izpildās. +Ievietojot vērtības $ lim_(n->oo) (n log^4 n)/n^1.5=0 $ +Tātad vienādojums ir +patiess. - #colbreak() +#colbreak() - == Piemērs - $ 2^n n^2 =^? o(n^3) $ +== Piemērs +$ 2^n n^2 =^? o(n^3) $ - Pēc tās pašas aprakstītās īpašības, kā @small-o-example-3, sanāktu - $ lim_(n->oo) (2^n n^2)/3^n $ - un tā kā $3^n$ aug ātrāk kā $2^n$, šī robeža būs $0$ un sākotnējais - vienādojums būs patiess. +Pēc tās pašas aprakstītās īpašības, kā @small-o-example-3, sanāktu +$ lim_(n->oo) (2^n n^2)/3^n $ +un tā kā $3^n$ aug ātrāk kā $2^n$, šī robeža būs $0$ un sākotnējais +vienādojums būs patiess. - == Piemērs - $ n^3 + 17n + 4 in^? O(n^3) $ +== Piemērs +$ n^3 + 17n + 4 in^? O(n^3) $ - Jā, $n^3 + 17n + 4 <= n^3 + 17n^3 + 4n^3 = 22n^3$. +Jā, $n^3 + 17n + 4 <= n^3 + 17n^3 + 4n^3 = 22n^3$. - == Piemērs - $ n^4 + 17n + 4 in^? O(n^3) $ +== Piemērs +$ n^4 + 17n + 4 in^? O(n^3) $ - Nē $n^4 + 17n + 4 > n^4 = n dot n^3$ - ], +Nē $n^4 + 17n + 4 > n^4 = n dot n^3$ + += Sanumurējamība +== Info +- Bezgalīgas kopas $A$, $B$ ir vienāda izmēra, ja ir bijekcija ($1:1$ attiecība) + $F: A->B$. +- $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$. +#teo[$A$ ir sanumurējama ar atkārtojumiem tad un tikai tad, ja $A$ ir sanumurējama.] + +== Soļi +- Kopa ir sanumurējama, ja tajā eksistē viennozīmīga atbilstība (bijekcija) + starp kopas elementiem un naturāliem skaitļiem. + Citos vārdos sakot, katram kopas elementam var piešķirt unikālu naturālu + skaitli. +- Ja kopa ir galīga, tā ir triviāli sanumurējama, jo katram elementam var + piešķirt unikālu naturālu skaitli. +- Ja kopa ir bezgalīga, jāņem vērā divi varianti: + - Ja var izveidot bijekciju starp kopu un naturāliem skaitļiem, tad jāpierāda, + ka bijekcija nepastāv. + Var skaidri definēt funkciju, kas katram kopas elementam piešķir unikālu + naturālu skaitli un parādīt, ka tā apvieno visus elementus bez dublēšanās. + - Ja nevar atrast bijekciju starp kopu un naturāliem skaitļiem, tad jāpierāda, + ka bijekcija nepastāv. + Parasti tas tiek darīts, izmantojot pierādīšanas tehnikas, piemēram, + diagonālināciju vai pretrunu (sk. @diagonalization, @contradiction). +- Ja izdodas pierādīt, ka start kopu un naturāliem skaitļiem nav bijekcijas, tad + kopa ir nesaskaitāma. + +=== Diagonālinācija +Ietver paņēmienu, ka ir saraksts vai uzskaitījums ar visiem kopas elementiem un +tiek konstruēts jauns elementu, kas neatrodas šajā sarakstā. +Tas demonstrē, ka kopa ir nesaskaitāma, jo vienmēr var izveidot jaunu elementu, +kas nav iekļauts uzskaitē. + +=== Pretruna +Pieņem, ka kopa ir saskaitāma un tad rodas pretruna. +To var izdarīt, parādot, ka kaut kādas kopas īpašības vai kardinalitāte ir +pretrunā ar sanumurējamības pieņēmumu. + +== Piemērs +Vai visu veselo skaitļu kopa $ZZ={..., -1, 0, 1, ...}$ ir sanumurējama? \ +Vai ir $F:{F(1), F(2), ..., F(n), ...}=ZZ$? \ + + +$ F(1)=0, F(2)=-1, F(3)=1, F(4)=-2, ... $ + +Viens no veidiem, kā izveidot bijekciju pāra kopai, ir izmantot metodi, ko sauc +par Kantoro pārošanas funkciju. +Kantora pārošanas funkcija ir definēta sekojoši: +$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$ + +#figure( + 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 +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. + +Lai pierādītu, ka naturālo skaitļu pāru $(k_1, k_2)$ kopa ir saskaitāma, mēs +varam parādīt, ka funkcija $f(k_1, k_2)$ nodrošina bijekciju starp naturālo +skaitļu pāru kopu un naturālo skaitļu kopu. + +=== Injektivitāte +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 +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. + diff --git a/requirements.typ b/requirements.typ index 5f093a5..f662c51 100644 --- a/requirements.typ +++ b/requirements.typ @@ -2,5 +2,4 @@ #import "@preview/fletcher:0.5.7" #import "@preview/gentle-clues:1.2.0" #import "@preview/headcount:0.1.0" -#import "@preview/i-figured:0.2.4" #import "@preview/tablex:0.0.9"