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 page(
|
||||
columns: 2,
|
||||
columns: 1,
|
||||
margin: (
|
||||
left: 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/gentle-clues:1.2.0": *
|
||||
#import "layout.typ": indent-par, project
|
||||
@ -5,3 +6,87 @@
|
||||
#show: project.with(title: [Theory of Algorithms Cheatsheet], authors: (
|
||||
"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/gentle-clues:1.2.0"
|
||||
#import "@preview/headcount:0.1.0"
|
||||
#import "@preview/i-figured:0.2.4"
|
||||
#import "@preview/tablex:0.0.9"
|
||||
#import "@preview/headcount:0.1.0"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user