From 16c21da5cd975a76563ee24c86cf5728c4f79a81 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sun, 15 Jun 2025 02:38:11 +0300 Subject: [PATCH] refactor: redraw images using fletcher --- LICENSE | 2 +- assets/img/3_sat_indset.png | Bin 27162 -> 0 bytes assets/img/circuit_sat.png | Bin 26746 -> 0 bytes assets/img/graph_complement.png | Bin 23210 -> 0 bytes main.typ | 176 +++++++++++++++++++++++--------- requirements.typ | 2 +- 6 files changed, 131 insertions(+), 49 deletions(-) delete mode 100644 assets/img/3_sat_indset.png delete mode 100644 assets/img/circuit_sat.png delete mode 100644 assets/img/graph_complement.png diff --git a/LICENSE b/LICENSE index 34034b4..1a68c57 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2025 Kristofers Solo +Copyright (c) 2025 Kristofers Solo, jorenchik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/assets/img/3_sat_indset.png b/assets/img/3_sat_indset.png deleted file mode 100644 index 0e6023cc6f73ba2f8dd6db6688e2cbeb90792794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27162 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 diff --git a/assets/img/circuit_sat.png b/assets/img/circuit_sat.png deleted file mode 100644 index 6d2c095c44981ce92c37000da0ac85918a285592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26746 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 diff --git a/assets/img/graph_complement.png b/assets/img/graph_complement.png deleted file mode 100644 index 18e74218bf43d1a2092a34aa9035fc7f35a83347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23210 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 diff --git a/main.typ b/main.typ index 5edde25..9ed48b6 100644 --- a/main.typ +++ b/main.typ @@ -1,5 +1,5 @@ #import "@preview/finite:0.5.0": automaton -#import "@preview/fletcher:0.5.7" as fletcher: diagram, edge, node +#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node #import "@preview/gentle-clues:1.2.0": * #import "@preview/tablex:0.0.9": tablex #import "layout.typ": indent-par, project @@ -15,6 +15,7 @@ #let TM = $"TM"$ #let qrej = $q_"rej"$ #let qacc = $q_"acc"$ +#let qnew = $q_"new"$ #let halt = $"HALTING"$ #let halt2 = $"HALTING"_2$ #let NP = $"NP"$ @@ -38,14 +39,14 @@ un iet virzienā $d space (<- "vai" ->)$. === Divas (vai vairākas fiksētas) lentes $(q, a_1, a_2) -> (q', b_1, b_2, d_1, d_2)$ -- $a_1$, $b_1$, $d_1$ pirmai lentei un $a_2$, $b_2$, $d_2$ otrai lentei. -Svarīga atšķirība ir ka vairlāklenšu #TM papildus $<-$ un $->$ virzieniem ir +Svarīga atšķirība ir ka vairāklenšu #TM papildus $<-$ un $->$ virzieniem ir $arrow.b$ (stāvēšana uz vietas). #footnote[Derīgs ar uzdevumiem, kur palīdz kopēšana/salīdzināšana.] === Stāvēšana uz vietas Nosimulēt stāvēšanu uz vietas jeb $d=0$ var šādi: -- $(q, a) -> (q_"new", a', ->)$ -- $(q_"new", a slash b slash c slash * ) -> (q_"new", a slash b slash c slash *, <-)$ +- $(q, a) -> (qnew, a', ->)$ +- $(qnew, a slash b slash c slash * ) -> (qnew, a slash b slash c slash *, <-)$ === Modelis, ko pamatā izmanto šajā kursā! @@ -245,9 +246,9 @@ jāparāda, ka varam konstruēt Tjūringa mašīnu, kas atrisina #halt2, izmanto #halt kā atrisinātu problēmu (jeb kā apakšprogrammu). Pieņemsim, ka mums ir Tjūringa mašīna $H$, kas atrisina #halt problēmu. -Konstruēsim jaunu Tjūringa mašīnu $H 2$, kas atrisina #halt2 problēmu: +Konstruēsim jaunu Tjūringa mašīnu $H_2$, kas atrisina #halt2 problēmu: -Tjūringa mašīna $H 2$ darbojas sekojoši: +Tjūringa mašīna $H_2$ darbojas sekojoši: - Doti ievades dati $M$, $x$ un $y$. - Palaiž $H$ ar ievaddatiem $(M, x)$. - Ja $H$ akceptē $(M, x)$, apstājas un akceptē. @@ -257,10 +258,10 @@ Tjūringa mašīna $H 2$ darbojas sekojoši: // Jorens:Nav "vai nu", bet "vai". Citādi paliek abi pozitīvi, kas nav // apskatīti. -Konstruējot $H 2$ šādā veidā, mēs simulējam $H$ darbību uz abām ievadēm $x$ un +Konstruējot $H_2$ šādā veidā, mēs simulējam $H$ darbību uz abām ievadēm $x$ un $y$: -- Ja $H$ akceptē $(M, x)$ vai $(M, y)$, $H 2$ akceptēs un apstāsies. -- Ja $H$ noraida gan $(M, x)$, gan $(M, y)$, $H 2$ noraidīs un apstāsies. +- Ja $H$ akceptē $(M, x)$ vai $(M, y)$, $H_2$ akceptēs un apstāsies. +- Ja $H$ noraida gan $(M, x)$, gan $(M, y)$, $H_2$ noraidīs un apstāsies. // Jorens: Tas jau ir nedaudz liekvārdīgi, izņēmu dažas lietas. @@ -268,7 +269,7 @@ _Tālākais teksts nav obligāts risinājumā._ Redukcijas analīze: - Ja $halt2(M, x, y) = 1$, tas nozīmē, ka Tjūringa mašīna $M$ apstājas vismaz - uz vienas no ievadēm $x$ vai $y$. Šajā gadījumā $H 2$ arī apstāsies un + uz vienas no ievadēm $x$ vai $y$. Šajā gadījumā $H_2$ arī apstāsies un akceptēs, jo tā veiksmīgi simulē $H$ uz abām ievadēm un akceptē, ja $H$ akceptē kādu no tām. Tādējādi #halt2 tiek reducēta uz #halt. - Ja $halt2(M, x, y) = 0$, tas nozīmē, ka Tjūringa mašīna $M$ neapstājas ne uz @@ -301,8 +302,8 @@ atrisinātu šo problēmu. - $F$ var definēt caur $M$ atbildēm uz dažādām ieejas virknēm $x$. Piemēram: -- $"ONE"(M) = 1$, ja $exists x: M(x) = 1$ -- $"INFINITE"(M) = 1$, ja $exists^infinity x: M(x) = 1$ +- $one(M) = 1$, ja $exists x: M(x) = 1$ +- $infinite(M) = 1$, ja $exists^oo x: M(x) = 1$ Citiem vārdiem, ja $forall x: M_1(x) = M_2(x)$, tad $F(M_1) = F(M_2)$. @@ -313,7 +314,7 @@ Citiem vārdiem, ja $forall x: M_1(x) = M_2(x)$, tad $F(M_1) = F(M_2)$. nevienai ieejas virknei $x$. Papildus Tjūringa mašīnas funkcionālam aprakstam, mums ir papildus informācija -par mašīnu, par tās struktūru etc. +par mašīnu, par tās struktūru utt. == Raisa teorēma @@ -708,7 +709,7 @@ Lai atrastu koda izpildes laiku: no $n$ (skat. @time_analysis_expressions). + Novērtē šīs funkcijas klasi izmantojot lielā-O notāciju. -===== Piemērs ($|a| =^? |b|$) +===== Piemērs ($abs(a) =^? abs(b)$) Vai ieejas virknē ir vienāds skaits $a$ un $b$? + Virzās no kreisās puses uz labo, aizstājot vienu $a$ un vienu $b$ ar $x$; @@ -731,7 +732,7 @@ Kopējais soļu skaits: $ "SPACE"(f(N)) = \ - = {L | L "var atrisināt ar Tjūringa" \ + = {L mid(|) L "var atrisināt ar Tjūringa" \ "mašīnu, kurai" S(N) <= C f(N)}. \ $ @@ -739,7 +740,7 @@ $ $ "NSPACE"(f(N)) = \ - = {L | L "ir determinēta" M, "visiem" x, L(x)=M(x), \ + = {L mid(|) L "ir determinēta" M, "visiem" x, L(x)=M(x), \ "un" M "izmanto " <= c f(N) "šūnas uz darba lentes"}. \ $ @@ -805,7 +806,7 @@ Ekvivalence ir pierādīta ar abpusēju pārveidojumu no pārbaudītāja uz nede == NP-pilnas probēmas un to redukcijas -=== Polinomiāla redukcija $(<=_("poly"))$ +=== Polinomiāla redukcija $(<=#sub("poly"))$ - $A <= B$ – A var atrisināt, noreducējot to uz B. - $A <=_("poly") B$, ja ir $O(n^c)$ laika algoritms (Tjūringa mašīna) $P$: @@ -816,7 +817,7 @@ Ekvivalence ir pierādīta ar abpusēju pārveidojumu no pārbaudītāja uz nede - A – NP-pilna, ja: - $A in "NP"$; - - Ja $B in NP$, tad $B <=_("poly") A$. + - Ja $B in NP$, tad $B <=#sub("poly") A$. === 3-SAT problēma @@ -825,10 +826,33 @@ būtu 1 (patiess). === CIRCUIT-SAT problēma -Dota funkcija $F(x_1, ..., x_n)$, kas sastāv no vārtiem (AND, OR, NOT). +Dota funkcija $F(x_1, ..., x_n)$, kas sastāv no vārtiem (`AND`, `OR`, `NOT`). #figure( - image("assets/img/circuit_sat.png", width: 50%), + diagram( + cell-size: 1mm, + node-stroke: 0.5pt, + node-shape: circle, + spacing: 1em, + node((0, 0), `OR`, name: , radius: 1em), + node((-1, 1), `AND`, name: , radius: 1em), + node((1, 1), `AND`, name: , radius: 1em), + node((-2, 2), $x_1$, stroke: none, name: , radius: 1em), + node((0, 2), `OR`, name: , radius: 1em), + node((1, 2), `NOT`, name: , radius: 1em), + node((-1, 3), $x_2$, stroke: none, name: , radius: 1em), + node((1, 3), $x_3$, stroke: none, name: , radius: 1em), + + edge((0, -1), ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + ), caption: "CIRCUIT-SAT visual", ) @@ -836,14 +860,14 @@ Vai var atrast mainīgo vērtības tā lai gala izvade būtu 1 (patiess). === CLIQUE problēma -$exists C subset.eq V: (|C| = k) and (forall (u, v in C): (u, v) in E)$ +$exists C subset.eq V: (abs(C) = k) and (forall (u, v in C): (u, v) in E)$ Vārdiski. Vai eksistē virsotņu kopa $S$ lielumā $k$, kurā katra virsotne ir savienota ar katru otro no kopas $S$. === IND-SET problēma -$exists S subset.eq V: (|S| = k) and (forall (u, v in S): (u, v) in.not E)$ +$exists S subset.eq V: (abs(S) = k) and (forall (u, v in S): (u, v) in.not E)$ Vārdiski. Vai grafā $G=(V, E)$ eksistē virsotņu kopa $S$ lielumā $k$, kurā katra no virsotnēm nav savienota ar nevienu citu virsotni no šīs @@ -853,7 +877,7 @@ kopas. Vai dotā lineāru nevienādību sistēma ar bināriem mainīgajiem ir atrisināma. -=== CIRCUIT-SAT ≤ₚ 3-SAT +=== CIRCUIT-SAT $<=#sub("p")$ 3-SAT - Katram starprezultātam (kas nav pirmajā ievadē, i.e., $x_1$, $x_2$, $dots$, $x_n$) ievieš jaunus mainīgos $y_i$. @@ -898,36 +922,97 @@ $ Analoģiski iekavām ar vienu elementu. Rezultātā ir 3-CNF formula, ko var izmantot ar 3-SAT algoritmu. -=== 3-SAT ≤ₚ IND-SET +=== 3-SAT $<=#sub("p")$ IND-SET Katrai iekavai no formulas veido $3$ virsotnes (grafa komponenti), kas apzīmē -mainīgo (ar NOT, ja ir negācija). Katra virsotne (literālis) no komponentes ir +mainīgo (ar `NOT`, ja ir negācija). Katra virsotne (literālis) no komponentes ir savā starpā savienota ar pārējām. Starp pretrunīgiem literāliem starp komponentēm pievieno šķautni. Piemērs formulai $(x or y or not z) and (not x or y or z)$: + +#let dot-node(pos, name) = node(pos, name: name, fill: black, radius: 2pt) #figure( - image("assets/img/3_sat_indset.png", width: 50%), - caption: "3-SAT -> INDSET visual", + diagram( + cell-size: 1mm, + node-stroke: 0pt, + spacing: 1em, + node-shape: circle, + // phantom location nodes + dot-node((0, 0), ), + dot-node((1, -1), ), + dot-node((1, 1), ), + dot-node((4, -1), ), + dot-node((4, 1), ), + dot-node((5, 0), ), + + // label nodes + node((rel: (-0.7em, 0em), to: ), $y$), + node((rel: (0em, 0.7em), to: ), $x$), + node((rel: (0em, 0.7em), to: ), $not x$), + node((rel: (0.7em, 0em), to: ), $z$), + node((rel: (0em, -0.7em), to: ), $not z$), + node((rel: (0em, -0.7em), to: ), $y$), + + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + edge(, ), + ), + caption: [3-SAT $->$ INDSET visual], ) -Tagad varam pielietot $"IND-SET"\(G, m\)$ ar izveidoto grafu un $m$ kā iekavu +Tagad varam pielietot $"IND-SET"(G, m)$ ar izveidoto grafu un $m$ kā iekavu skaitu originālajā formulā. -=== IND-SET ≤ₚ CLIQUE +=== IND-SET $<=#sub("p")$ CLIQUE - Veido grafa papildinājumu (komplementu) $G' = (V, E')$: -$E' := {(u, v) in V times V | (u, v) in.not E}$ +$ E' := {(u, v) in V times V mid(|) (u, v) in.not E} $ Vārdiski. Jauns grafs $G$, kurā ir visas virsotnes no $V$, bet visas šķautnes, kas ir $G$ nav $G'$ un pretēji -- visas šķautnes kā nav $G$ ir $G'$. -#figure( - image("assets/img/graph_complement.png", width: 50%), - caption: "Papildgrafa piemērs", +#figure(diagram( + cell-size: 1mm, + node-stroke: 0pt, + spacing: 1em, + node-shape: circle, + // phantom location nodes + dot-node((0, 0), ), + dot-node((-2, 1), ), + dot-node((0, 2), ), + + dot-node((0, 4), ), + dot-node((-2, 5), ), + dot-node((0, 6), ), + + // label nodes + node((rel: (0.7em, 0.7em), to: ), $B$), + node((rel: (-0.7em, 0em), to: ), $A$), + node((rel: (0.7em, 0.7em), to: ), $C$), + node((1, 1), text(green, $G$)), + + node((rel: (0.7em, 0.7em), to: ), $B$), + node((rel: (-0.7em, 0em), to: ), $A$), + node((rel: (0.7em, 0.7em), to: ), $C$), + node((1.6, 5), text(green, $G "papildinājums"$)), + + edge(, ), + edge(, , "--", stroke: yellow), + edge(, ), + edge(, , "--", stroke: yellow), + edge(, ), + edge(, , "--", stroke: yellow), +)), +caption: "Papildgrafa piemērs", ) Ir spēkā sakarība $"INDSET"(G, k) = "CLIQUE"(G, k)$. @@ -965,29 +1050,26 @@ Ir spēkā sakarība $"INDSET"(G, k) = "CLIQUE"(G, k)$. ] == Atvasinājumu tabula - #context [ #set text(size: 11pt) #show math.equation: set text(weight: 400, size: 11pt) #table( columns: 3, - inset: (top: .8em, bottom: .9em), // vert. padding - [*Funkcija*], [*Atvasinājums*], [*Piezīmes*], + [*Funkcija*], + [*Atvasinājums #footnote[Ja $x = g(x)$ (kompleksa funkcija), tad pie atvasinājuma piereizina $g(x)'$.]*], + [*Piezīmes*], - [$x^n$], [$n x^(n-1)$], [], - [$e^x$], [$e^x$], [], - [$a^x$], [$a^x ln(a)$], [$a > 0$], - [$ln(x)$], [$1 / x$], [], - [$1 / x$], [$-1 / x^2$], [], - [$1 / x^n$], [$-n / x^(n+1)$], [], - [$sqrt(x)$], [$1 / (2 sqrt(x))$], [], - [$1 / sqrt(x)$], [$-1 / (2 x^(3/2))$], [], + $ x^n $, $ n x^(n-1) $, "", + $ e^x $, $ e^x $, "", + $ a^x $, $ a^x ln(a) $, $ a > 0 $, + $ ln(x) $, $ 1 / x $, "", + $ 1 / x $, $ -1 / x^2 $, "", + $ 1 / x^n $, $ -n / x^(n+1) $, "", + $ sqrt(x) $, $ 1 / (2 sqrt(x)) $, "", + $ 1 / sqrt(x) $, $ -1 / (2 x^(3/2)) $, "", ) - - \* Ja $x = g(x)$ (kompleksa funkcija), tad pie atvasinājuma - piereizina $g(x)'$. ] == Noderīgas izteiksmes laika analīzē diff --git a/requirements.typ b/requirements.typ index f662c51..4d224b6 100644 --- a/requirements.typ +++ b/requirements.typ @@ -1,5 +1,5 @@ #import "@preview/finite:0.5.0" -#import "@preview/fletcher:0.5.7" +#import "@preview/fletcher:0.5.8" #import "@preview/gentle-clues:1.2.0" #import "@preview/headcount:0.1.0" #import "@preview/tablex:0.0.9"