From b3c2afa365c28b74338262014c3af2897d18c724 Mon Sep 17 00:00:00 2001 From: Juan Marin Noguera Date: Tue, 4 Oct 2022 10:13:53 +0200 Subject: MC tema 7 --- mc/n7.lyx | 1822 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1822 insertions(+) create mode 100644 mc/n7.lyx (limited to 'mc/n7.lyx') diff --git a/mc/n7.lyx b/mc/n7.lyx new file mode 100644 index 0000000..9bfe853 --- /dev/null +++ b/mc/n7.lyx @@ -0,0 +1,1822 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\input{../defs} +\end_preamble +\use_default_options true +\begin_modules +algorithm2e +\end_modules +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Un problema es +\series bold +tratable +\series default + si se puede resolver de forma suficientemente eficiente, y es +\series bold +intratable +\series default + si se puede resolver pero no lo suficientemente rápido como para que la + solución sea práctica. +\end_layout + +\begin_layout Standard +Un +\series bold +camino hamiltoniano +\series default + en un grafo es un camino que pasa por todos los nodos exactamente una vez. + Una +\series bold + +\begin_inset Formula $k$ +\end_inset + +-clique +\series default + es un subgrafo completo de +\begin_inset Formula $k$ +\end_inset + + nodos. +\end_layout + +\begin_layout Section +La clase +\begin_inset Formula ${\cal P}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Un lenguaje es +\series bold +decidible en tiempo polinómico +\series default + si está en +\begin_inset Formula +\[ +{\cal P}\coloneqq\bigcup_{k}\text{TIME}(n^{k}). +\] + +\end_inset + +Los problemas en esta clase se consideran tratables, y el resto intratables. + Así, son intratables los problemas con orden de complejidad exponencial, + que suelen corresponder a búsqueda exhaustiva o por fuerza bruta del espacio + de búsqueda, y que solo se pueden resolver de forma general en casos sencillos. + Realmente, si un problema en +\begin_inset Formula $\text{TIME}(n^{k})$ +\end_inset + + es tratable depende de +\begin_inset Formula $k$ +\end_inset + + y de la aplicación particular, pero la distinción entre tiempo polinómico + y exponencial es útil en la práctica. +\end_layout + +\begin_layout Standard +\begin_inset Formula ${\cal P}$ +\end_inset + + no es afectada significativamente por las particularidades del modelo de + computación, y de hecho es igual para una +\begin_inset Formula $\text{MT}$ +\end_inset + +, una +\begin_inset Formula $k\text{-MT}$ +\end_inset + + y un ordenador típico (extendido para que sea Turing-completo). + Sin embargo, sí es afectada por la representación del problema, pues aunque + casi todas las representaciones son equivalentes a este respecto, no todas + lo son. +\end_layout + +\begin_layout Standard +Una representación es +\series bold +razonable +\series default + si permite codificar y decodificar objetos hacia una representación interna + en tiempo polinómico. +\begin_inset Foot +status open + +\begin_layout Plain Layout +Esto es así pese a que no hemos definido +\begin_inset Quotes cld +\end_inset + +representación interna +\begin_inset Quotes crd +\end_inset + + y en principio esta depende de la implementación del algoritmo. +\end_layout + +\end_inset + + Las formas que hemos usado para representar autómatas, grafos, etc. + son razonables, pero no lo es la representación unaria de números, pues + es exponencialmente más larga que una representación en base 2 o más. +\end_layout + +\begin_layout Standard +\begin_inset Float algorithm +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +Entrada{Cadena $a$ +\backslash +textvisiblespace{}$b$, donde $a,b +\backslash +in +\backslash +{0,1 +\backslash +}^*$ son números naturales representados empezando por el bit menos significativ +o.} +\end_layout + +\begin_layout Plain Layout + + +\backslash +Salida{Número $a+b$ con la misma representación.} +\end_layout + +\begin_layout Plain Layout + +avanzar hasta +\backslash +textvisiblespace{}, borrarlo y mover el resto a la cinta 2 +\backslash +; +\end_layout + +\begin_layout Plain Layout + +volver al principio +\backslash +; +\end_layout + +\begin_layout Plain Layout + +$c +\backslash +gets0$ +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +Mientras{no hay $B$ en ambas cintas}{ +\end_layout + +\begin_layout Plain Layout + + leer $a$ de cinta 1 y $b$ de 2 +\backslash +; +\end_layout + +\begin_layout Plain Layout + + escribir $a+b+c +\backslash +bmod 2$ en cinta 1 y B en 2 +\backslash +; +\end_layout + +\begin_layout Plain Layout + + hacer $c +\backslash +gets[a+b+c +\backslash +geq2]$ y avanzar +\backslash +; +\end_layout + +\begin_layout Plain Layout + +} +\end_layout + +\begin_layout Plain Layout + +volver al principio +\backslash +; +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "alg:suma" + +\end_inset + +Suma +\begin_inset Formula $O(n)$ +\end_inset + + en +\begin_inset Formula $\text{2-MT}$ +\end_inset + +. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Float algorithm +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +Entrada{Como en Algoritmo +\backslash +ref{alg:suma}.} +\end_layout + +\begin_layout Plain Layout + + +\backslash +Salida{$ +\backslash +max +\backslash +{a-b,0 +\backslash +}$.} +\end_layout + +\begin_layout Plain Layout + +avanzar hasta +\backslash +textvisiblespace{}, borrarlo y mover el resto a la cinta 2 +\backslash +; +\end_layout + +\begin_layout Plain Layout + +volver al principio +\backslash +; +\end_layout + +\begin_layout Plain Layout + +$c +\backslash +gets0$ +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +Mientras{no hay $B$ en ambas cintas}{ +\end_layout + +\begin_layout Plain Layout + + leer $a$ de cinta 1 y $b$ de 2 +\backslash +; +\end_layout + +\begin_layout Plain Layout + + escribir $a-b-c +\backslash +bmod 2$ en cinta 1 y B en 2 +\backslash +; +\end_layout + +\begin_layout Plain Layout + + hacer $c +\backslash +gets[a-b-c<0]$ y avanzar +\backslash +; +\end_layout + +\begin_layout Plain Layout + +} +\end_layout + +\begin_layout Plain Layout + + +\backslash +lSSi{$c=1$}{borrar toda la cinta 1 y escribir <<0>>} +\end_layout + +\begin_layout Plain Layout + +volver al principio +\backslash +; +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "alg:resta" + +\end_inset + +Resta saturada +\begin_inset Formula $O(n)$ +\end_inset + + en +\begin_inset Formula $\text{2-MT}$ +\end_inset + +. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Float algorithm +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +Entrada{Como en Algoritmo +\backslash +ref{alg:suma}.} +\end_layout + +\begin_layout Plain Layout + + +\backslash +Salida{$ab$.} +\end_layout + +\begin_layout Plain Layout + +tras el final de la cadena escribir +\backslash +textvisiblespace{} +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +Mientras{haya un símbolo no marcado antes del primer +\backslash +textvisiblespace{}}{ +\end_layout + +\begin_layout Plain Layout + + marcarlo y guardarlo en $c$ +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +lSSi{$c=1$}{copiar $b$ al final precedido por +\backslash +textvisiblespace} +\end_layout + +\begin_layout Plain Layout + + ir al primer caracter no marcado tras el segundo +\backslash +textvisiblespace{} +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +lSSi{$c=1$}{ejecutar el Algoritmo +\backslash +ref{alg:suma} para sumar} +\end_layout + +\begin_layout Plain Layout + + marcar el caracter actual +\backslash +; +\end_layout + +\begin_layout Plain Layout + +} +\end_layout + +\begin_layout Plain Layout + +borrar desde el principio hasta el segundo +\backslash +textvisiblespace{} desplazando a la izquierda +\backslash +; +\end_layout + +\begin_layout Plain Layout + +eliminar las marcas +\backslash +; +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "alg:producto" + +\end_inset + +Producto +\begin_inset Formula $O(n^{3})$ +\end_inset + + en +\begin_inset Formula $\text{MT}$ +\end_inset + +. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Float algorithm +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +Entrada{Números $a$ y $b$ separados por +\backslash +textvisiblespace{}, en binario con el bit menos significativo a la izquierda.} +\end_layout + +\begin_layout Plain Layout + + +\backslash +Salida{Resto y cociente de $b/a$ separados por +\backslash +textvisiblespace{}.} +\end_layout + +\begin_layout Plain Layout + +escribir << +\backslash +textvisiblespace{}>> al final de la cadena +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +Mientras{$b>a$}{ +\end_layout + +\begin_layout Plain Layout + + +\backslash +lMientras{haya un dígito de $a$ sin marcar}{marcar un dígito de $a$ y $b$ + más a la derecha que no esté marcado} +\end_layout + +\begin_layout Plain Layout + + +\backslash +Mientras{la parte marcada de $b$ es menor que la de $a$}{ +\end_layout + +\begin_layout Plain Layout + + marcar el dígito sin marcar de $b$ más a la derecha +\backslash +; +\end_layout + +\begin_layout Plain Layout + + insertar un 0 detrás del segundo +\backslash +textvisiblespace{} +\backslash +; +\end_layout + +\begin_layout Plain Layout + + } +\end_layout + +\begin_layout Plain Layout + + copiar la parte marcada de $b$, sin las marcas, al final +\backslash +; +\end_layout + +\begin_layout Plain Layout + + escribir +\backslash +textvisiblespace{} y hacer lo propio con $a$ +\backslash +; +\end_layout + +\begin_layout Plain Layout + + ejecutar el Algoritmo +\backslash +ref{alg:resta} para restar +\backslash +; +\end_layout + +\begin_layout Plain Layout + + mover el resultado sobre la parte marcada de $b$, de derecha a izquierda, + cambiando el primer caracter de $b$ por 0 si no se había reemplazado +\backslash +; +\end_layout + +\begin_layout Plain Layout + + ir al principio de $b$ +\backslash +; +\end_layout + +\begin_layout Plain Layout + + +\backslash +lMientras{$0$}{eliminar desplazando lo de detrás a la izquierda} +\end_layout + +\begin_layout Plain Layout + + insertar un 1 detrás del segundo +\backslash +textvisiblespace{} +\backslash +; +\end_layout + +\begin_layout Plain Layout + +} +\end_layout + +\begin_layout Plain Layout + +eliminar $a$ +\backslash +textvisiblespace{} desplazando lo de detrás a la izquierda +\backslash +; +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "alg:cociente" + +\end_inset + +Cociente entero +\begin_inset Formula $O(n^{3})$ +\end_inset + + en +\begin_inset Formula $\text{MT}$ +\end_inset + +, usando que comparar dos números claramente se puede hacer en +\begin_inset Formula $O(n^{2})$ +\end_inset + +. + Aunque esta comparación se hace en un bucle dentro de otro, a cada comparación + le corresponde la inserción de un dígito en el cociente y hay +\begin_inset Formula $O(n)$ +\end_inset + + de estas inserciones. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Float algorithm +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +Entrada{Gramática $G=(V, +\backslash +Sigma,{ +\backslash +cal R},S)$ en forma normal de Chomsky y cadena $w_1 +\backslash +cdots w_n +\backslash +in +\backslash +Sigma$.} +\end_layout + +\begin_layout Plain Layout + + +\backslash +Salida{Acepta si $w +\backslash +in L(G)$, rechaza en otro caso.} +\end_layout + +\begin_layout Plain Layout + + +\backslash +SSi{$w= +\backslash +lambda$}{ +\end_layout + +\begin_layout Plain Layout + + +\backslash +lSSi{$S +\backslash +to +\backslash +lambda +\backslash +in{ +\backslash +cal R}$}{aceptar} +\end_layout + +\begin_layout Plain Layout + + +\backslash +lEnOtroCaso{rechazar} +\end_layout + +\begin_layout Plain Layout + +} +\end_layout + +\begin_layout Plain Layout + +$T +\backslash +gets +\backslash +emptyset$ +\end_layout + +\begin_layout Plain Layout + + +\backslash +tcp*{{ +\backslash +rm Para $ +\backslash +{(i,j) +\backslash +}_{1 +\backslash +leq iy$ +\end_inset + +, de modo que si +\begin_inset Formula $\frac{x}{2}\geq y$ +\end_inset + +, +\begin_inset Formula $x\bmod y