mirror of
https://github.com/kristoferssolo/Theory-of-Algorithms-Cheatsheet.git
synced 2025-10-21 20:10:39 +00:00
feat: add TM
This commit is contained in:
parent
ac415766a8
commit
4c93fb2963
@ -14,7 +14,7 @@
|
|||||||
set document(author: authors)
|
set document(author: authors)
|
||||||
|
|
||||||
set page(
|
set page(
|
||||||
columns: 2,
|
columns: 1,
|
||||||
margin: (
|
margin: (
|
||||||
left: 10mm,
|
left: 10mm,
|
||||||
right: 10mm,
|
right: 10mm,
|
||||||
|
|||||||
85
main.typ
85
main.typ
@ -1,3 +1,4 @@
|
|||||||
|
#import "@preview/finite:0.5.0": automaton
|
||||||
#import "@preview/fletcher:0.5.7" as fletcher: diagram, edge, node
|
#import "@preview/fletcher:0.5.7" as fletcher: diagram, edge, node
|
||||||
#import "@preview/gentle-clues:1.2.0": *
|
#import "@preview/gentle-clues:1.2.0": *
|
||||||
#import "layout.typ": indent-par, project
|
#import "layout.typ": indent-par, project
|
||||||
@ -5,3 +6,87 @@
|
|||||||
#show: project.with(title: [Theory of Algorithms Cheatsheet], authors: (
|
#show: project.with(title: [Theory of Algorithms Cheatsheet], authors: (
|
||||||
"Kristofers Solo",
|
"Kristofers Solo",
|
||||||
))
|
))
|
||||||
|
#pagebreak()
|
||||||
|
#let TM = $T M$
|
||||||
|
#let rej = $q_"rej"$
|
||||||
|
#let acc = $q_"acc"$
|
||||||
|
|
||||||
|
= Tjūringa Mašīnas
|
||||||
|
== Informācija
|
||||||
|
Var būt 3 veida uzdevumi: stāvokļu, tekstuāls, vairāklenšu.
|
||||||
|
|
||||||
|
=== Viena lente
|
||||||
|
$(q, a) -> (q', a', d)$ -- stāvoklī $q$ redzot $a$, ieraksta $a'$
|
||||||
|
un iet virzienā $d space (<- "vai" ->)$.
|
||||||
|
|
||||||
|
=== Divas 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.
|
||||||
|
|
||||||
|
=== Stāvēšana uz vietas
|
||||||
|
Nosimulēt stāvēšanu uz vietas jeb $d=0$ var sādi:
|
||||||
|
- $(q, a) -> (q_"new", a', ->)$
|
||||||
|
- $(q_"new", a slash b slash c slash * ) -> (q_"new", a slash b slash c slash *, <-)$
|
||||||
|
|
||||||
|
== Soļi
|
||||||
|
+ Izdomāt, kā aizstājot simbolus ar $*$ var pārbaudīt virknes derību.
|
||||||
|
+ Atcerēties par secību -- aiz $a$ var sekot tikai $b slash c$, aiz $b$ var sekot tikai $c$, utt.
|
||||||
|
+ Doties katrā no virzieniem var doties arī līdz galam jeb tukšumam $\_$.
|
||||||
|
+ Vairāklenšu $TM$ pārraksta pirmo daļu līdz $\#$ uz otras lentes un salīdzina.
|
||||||
|
|
||||||
|
== Piemērs
|
||||||
|
Vai ieejas virknē $a^n b^n c^n$, kur $n>0$
|
||||||
|
#columns(2, [
|
||||||
|
$(q_1, a) -> (q_2, *, ->)$ \
|
||||||
|
$(q_1, b slash c) -> rej$ \
|
||||||
|
$(q_1, *) -> (q_1, *, ->)$ \
|
||||||
|
$(q_1, \_) -> acc$ \
|
||||||
|
|
||||||
|
$(q_2, a) -> (q_2, a, ->)$ \
|
||||||
|
$(q_2, b) -> (q_3, *, ->)$ \
|
||||||
|
$(q_2, c) -> rej$ \
|
||||||
|
$(q_2, *) -> (q_2, *, ->)$ \
|
||||||
|
|
||||||
|
$(q_3, a) -> rej$ \
|
||||||
|
#colbreak()
|
||||||
|
$(q_3, b) -> (q_3, b, ->)$ \
|
||||||
|
$(q_3, c) -> (q_4, *, ->)$ \
|
||||||
|
$(q_3, *) -> (q_3, *, ->)$ \
|
||||||
|
|
||||||
|
$(q_4, a slash b) -> rej$ \
|
||||||
|
$(q_4, c) -> (q_4, c, ->)$ \
|
||||||
|
$(q_4, \_) -> (q_5, \_, <-)$ \
|
||||||
|
|
||||||
|
$(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
|
||||||
|
$c$ var sekot tikai $c$).
|
||||||
|
- Ja kādu simbolu nevar atrast, noraida.
|
||||||
|
|
||||||
|
== Piemērs
|
||||||
|
Vai ieejas virkne $x \# x$, kur $x in {0,1}^*$
|
||||||
|
|
||||||
|
#columns(2, [
|
||||||
|
$(q_1, 0, \_) -> (q_1, 0, 0, ->, ->)$ \
|
||||||
|
$(q_1, 1, \_) -> (q_1, 1, 1, ->, ->)$ \
|
||||||
|
$(q_1, \#, \_) -> (q_2, \#, \_, 0, <-)$ \
|
||||||
|
|
||||||
|
$(q_2, 0, 0) -> (q_2, 0, 0, <-)$ \
|
||||||
|
$(q_2, 1, 1) -> (q_2, 1, 0, <-)$ \
|
||||||
|
$(q_2, \#, \_) -> (q_3, \#, \_, ->, ->)$ \
|
||||||
|
|
||||||
|
$(q_3, 0, 0) -> (q_3, 0, 0, ->, ->)$ \
|
||||||
|
$(q_3, 0, 1) -> rej$ \
|
||||||
|
$(q_3, 1, 0) -> rej$ \
|
||||||
|
$(q_3, 1, 1) -> (q_3, 1, 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.
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
|
#import "@preview/finite:0.5.0"
|
||||||
#import "@preview/fletcher:0.5.7"
|
#import "@preview/fletcher:0.5.7"
|
||||||
#import "@preview/gentle-clues:1.2.0"
|
#import "@preview/gentle-clues:1.2.0"
|
||||||
|
#import "@preview/headcount:0.1.0"
|
||||||
#import "@preview/i-figured:0.2.4"
|
#import "@preview/i-figured:0.2.4"
|
||||||
#import "@preview/tablex:0.0.9"
|
#import "@preview/tablex:0.0.9"
|
||||||
#import "@preview/headcount:0.1.0"
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user