<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Resúmenes UNED</title>
	<atom:link href="http://resumenesuned.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://resumenesuned.wordpress.com</link>
	<description>Resúmenes de algunas asignaturas de la UNED</description>
	<lastBuildDate>Tue, 20 Oct 2009 18:41:39 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='resumenesuned.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Resúmenes UNED</title>
		<link>http://resumenesuned.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://resumenesuned.wordpress.com/osd.xml" title="Resúmenes UNED" />
	<atom:link rel='hub' href='http://resumenesuned.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Tema 2 &#8211; Autómatas de Pila y Lenguajes Independientes del Contexto</title>
		<link>http://resumenesuned.wordpress.com/2009/10/20/tema-2/</link>
		<comments>http://resumenesuned.wordpress.com/2009/10/20/tema-2/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 15:34:29 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Teoría de Autómatas I]]></category>
		<category><![CDATA[autómatas de pila]]></category>
		<category><![CDATA[autómatas de pila deterministas]]></category>
		<category><![CDATA[forma normal de Chomsky]]></category>
		<category><![CDATA[gramáticas independientes del contexto]]></category>
		<category><![CDATA[lema de bombeo]]></category>
		<category><![CDATA[lenguajes independientes del contexto]]></category>
		<category><![CDATA[lenguajes independientes del contexto determinista]]></category>
		<category><![CDATA[preanálisis]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=208</guid>
		<description><![CDATA[Autómatas de Pila La única diferencia entre un autómata finito indeterminista y uno de pila es que el segundo posee una memoria en forma de pila en la que puede almacenar información para recuperarla más tarde. De modo que los lenguajes aceptados por los autómatas de pila incluyen los lenguajes regulares. Un autómata de pila [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=208&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Autómatas de Pila</h2>
<p>La única diferencia entre un autómata finito indeterminista y uno de pila es que el segundo posee una memoria en forma de pila en la que puede almacenar información para recuperarla más tarde. De modo que los lenguajes aceptados por los autómatas de pila incluyen los lenguajes regulares. Un autómata de pila se define por la séxtupla <strong>(S, Σ, Γ, T, ι, F)</strong> en la que:</p>
<ul>
<li><strong>S</strong> es una colección de estados finitos.</li>
<li><strong>Σ </strong>es el alfabeto de la máquina.</li>
<li><strong>Γ</strong> es la colección finita de símbolos de pila. Como convención utilizaremos el símbolo <strong>#</strong> como indicador de pila vacía.</li>
<li><strong>T</strong> es una colección finita de transiciones. Una transición se define como <strong>(p, x, s; q, y)</strong> y significa que estando el autómata en el estado <strong>p</strong>, si lee <strong>x</strong> de la entrada y <strong>s</strong> está en la cima de la pila, se extrae <strong>s</strong>, se inserta <strong>y</strong> en la cima y se pasa al estado <strong>q</strong>.</li>
<li><strong>ι</strong> (un elemento de <strong>S</strong>) es el estado inicial.</li>
<li><strong>F</strong> (un subconjunto de <strong>S</strong>) es la colección de estados de aceptación.</li>
</ul>
<p><span id="more-208"></span><strong>Teorema 2.1:</strong> Para cada autómata de pila que acepte cadenas sin vaciar su pila, existe otro autómata de pila que acepta el mismo lenguaje pero vacía su pila antes de llegar a un estado de aceptación.</p>
<h2>Gramáticas Independientes del Contexto</h2>
<p>Las gramáticas independientes del contexto se diferencian de las gramáticas regulares en que el lado derecho de las reglas de reescritura no tiene restricciones.</p>
<p><strong>Lenguaje independiente del contexto:</strong> Son los lenguajes generados por las gramáticas independientes del contexto.</p>
<p><strong>Teorema 2.2:</strong> Para cada gramática G independiente del contexto, existe un autómata de pila M tal que L(G)=L(M).</p>
<p><strong>Teorema 2.3:</strong> Para cada autómata de pila M, existe una gramática G independiente del contexto tal que L(M)=L(G).</p>
<p><strong>Forma Normal de Chomsky:</strong> Decimos que una gramática tiene la forma normal de Chomsky si para todas sus reglas de reescritura su lado izquierdo está formado por un no terminal y su lado derecho está formado por un terminal o dos no terminales. Una gramática de este tipo no puede generar la cadena vacía.</p>
<p><strong>Teorema 2.4:</strong> Si L es un lenguaje independiente del contexto que no tiene la cadena vacía, entonces existe una gramática G independiente del contexto tal que L(G)=L y G tiene la forma normal de Chomsky.</p>
<h2>Límites de los Autómatas de Pila</h2>
<p><strong>Teorema 2.5:</strong> Si L es un lenguaje independiente de contexto que contiene un número infinito de cadenas, entonces debe existir en L una cadena de la forma <em>svuwt</em> donde <em>s</em>, <em>v</em>, <em>u</em>, <em>w</em> y <em>t</em> son subcadenas, por lo menos <em>v</em> o <em>w</em> es no vacía y <em>sv<sup>n</sup>uw<sup>n</sup>t </em>está en L para cada n ∈ N<sup>+</sup>. Este teorema es también conocido como el <strong>lema de bombeo</strong>.</p>
<p><strong>Autómata de Pila Determinista:</strong> Es un autómata de pila en el cual es aplicable una, y sólo una transición en cualquier instante. Los lenguajes aceptados por estos autómatas se denominan <strong>lenguajes independientes del contexto determinista</strong>.</p>
<p><strong>Teorema 2.6:</strong> Existe un lenguaje independiente del contexto que no es el lenguaje aceptado por ningún autómata de pila determinista.</p>
<p><strong>Principio de Preanálisis:</strong> Técnica que consiste en observar los símbolos siguientes sin leerlos. Es utilizado para la construcción de analizadores sintácticos.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=208&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/10/20/tema-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>
	</item>
		<item>
		<title>Capítulo 5 &#8211; Regiones Críticas Condicionales</title>
		<link>http://resumenesuned.wordpress.com/2009/10/20/capitulo-5-regiones-criticas-condicionales/</link>
		<comments>http://resumenesuned.wordpress.com/2009/10/20/capitulo-5-regiones-criticas-condicionales/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 14:26:16 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Programación Concurrente]]></category>
		<category><![CDATA[condición de sincronización]]></category>
		<category><![CDATA[exclusión mutua]]></category>
		<category><![CDATA[Pascal-fc]]></category>
		<category><![CDATA[problema de la comida de filósofos]]></category>
		<category><![CDATA[problema de los lectores y escritores]]></category>
		<category><![CDATA[problema del productor consumidor]]></category>
		<category><![CDATA[regiones críticas condicionales]]></category>
		<category><![CDATA[sección crítica]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=346</guid>
		<description><![CDATA[Definición de Región Crítica Condicional En Pascal-fc podemos declarar una región crítica condicional (RCC) de la siguiente forma: resource SC: i, j; → Lo que significa que se declara la RCC SC compuesta por las variables i y j. Estas dos variables no podrán pertenecer a otra RCC distinta a SC. Así las variables que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=346&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Definición de Región Crítica Condicional</h2>
<p>En Pascal-fc podemos declarar una región crítica condicional (RCC) de la siguiente forma:</p>
<ul>
<li><strong>resource <em>SC</em>: <em>i</em>, <em>j</em>;</strong> <strong>→</strong> Lo que significa que se declara la RCC <strong>SC</strong> compuesta por las variables <strong>i</strong> y <strong>j</strong>. Estas dos variables no podrán pertenecer a otra RCC distinta a <strong>SC</strong>.</li>
</ul>
<p>Así las variables que componen una RCC solo podrán ser referenciadas dentro de la construcción <strong>region</strong>. De esta forma resolvemos el problema de la exclusión mutua.</p>
<p><span id="more-346"></span>De manera similar a los semáforos, cada RCC tendrá una cola, denominada <strong>cola principal</strong>, en la que se insertarán los procesos que queden bloqueados al intentar ingresar ella cuando está siendo ocupada. Los procesos se irán desbloqueando automáticamente a medida que se desocupe la RCC.</p>
<p>A diferencia de los semáforos, las RCC utilizan un mecanismo distinto para resolver la condición de sincronización. Esto se hace de la siguiente forma:</p>
<ul>
<li><strong>region <em>SC </em>when <em>condición</em> do → </strong>Así primero que nada un proceso deberá conseguir el acceso en exclusión mutua a la RCC <strong>SC</strong>. De no lograrlo se insertará en la cola principal. Después de haber conseguido el acceso a la RCC comprueba <strong>condición</strong> que de evaluarse como verdadera permitirá el ingreso en la RCC. Si <strong>condición</strong> se evalúa como falsa se inserta el proceso en la <strong>cola de eventos</strong>.</li>
</ul>
<p>La diferencia entre la cola principal y la cola de eventos reside en la prioridad. Cuando un proceso abandona una RCC se intenta desbloquear primero los procesos de la cola de eventos. Si la condición de ninguno se evalúa como verdadera se procede a desbloquear un proceso de la cola principal.</p>
<h2>Resolución de Problemas usando Regiones Críticas Condicionales</h2>
<h3>El Problema del Productor/Consumidor</h3>
<p>Definimos la RCC utilizada de la siguiente forma: <strong>resource buffer: cola, frente, recurso, elementos;</strong> donde:</p>
<ul>
<li><strong>cola</strong> se inicializa a 0 y representa la posición de lectura del buffer.</li>
<li><strong>frente</strong> se inicializa a 0 y representa la posición de escritura del buffer.</li>
<li><strong>recurso</strong> es el buffer de N posiciones.</li>
<li><strong>elementos</strong> se inicializa a 0 y es el contador de elementos en el buffer.</li>
</ul>
<p style="text-align:center;"><img class="alignnone size-full wp-image-351" title="RCC - productores_consumidores - productor" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-productores_consumidores-productor.png?w=313&#038;h=238" alt="RCC - productores_consumidores - productor" width="313" height="238" /><img class="alignnone size-full wp-image-352" title="RCC - productores_consumidores - consumidor" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-productores_consumidores-consumidor.png?w=313&#038;h=238" alt="RCC - productores_consumidores - consumidor" width="313" height="238" /></p>
<h3 style="text-align:left;">El Problema de Lectores y Escritores: Prioridad  Lectura</h3>
<p>Para esta solución inicializamos los datos de la siguiente forma:</p>
<ul>
<li><strong>resource datos: nl;</strong></li>
<li><strong>nl</strong> se inicializa a 0 y representa el número de lectores en la sección crítica.</li>
</ul>
<p style="text-align:center;"><img class="alignnone size-full wp-image-354" title="RCC - lectores_escritores - lector" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores-lector.png?w=166&#038;h=202" alt="RCC - lectores_escritores - lector" width="166" height="202" /><img class="alignnone size-full wp-image-355" title="RCC - lectores_escritores - escritor" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores-escritor.png?w=247&#038;h=141" alt="RCC - lectores_escritores - escritor" width="247" height="141" /></p>
<h3 style="text-align:left;">El Problema de Lectores y Escritores: Prioridad Escritura</h3>
<p>Los datos se inicializan de la siguiente manera:</p>
<ul>
<li><strong>resource datos: nl, escribiendo, nee;</strong></li>
<li><strong>nl</strong> y <strong>nee</strong> se inicializan a 0 y representan el número de lectores en la sección crítica y el número de escritores esperando a ocupar el recurso.</li>
<li><strong>escribiendo</strong> se inicializa a false e indica si hay algún escritor utilizando el recurso.</li>
</ul>
<p style="text-align:center;"><img class="alignnone size-full wp-image-357" title="RCC - lectores_escritores2 - lector" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores2-lector.png?w=415&#038;h=200" alt="RCC - lectores_escritores2 - lector" width="415" height="200" /><img class="alignnone size-full wp-image-358" title="RCC - lectores_escritores2 - escritor" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores2-escritor.png?w=402&#038;h=302" alt="RCC - lectores_escritores2 - escritor" width="402" height="302" /></p>
<h3 style="text-align:left;">El Problema de la Comida de Filósofos</h3>
<p>Inicializamos los datos de la siguiente forma:</p>
<ul>
<li><strong>resource cubiertos: libre;</strong></li>
<li><strong>libre: array[0..N-1] of boolean; → </strong>Inicializados todos los índices a true. Indica si cierto cubierto esta libre para ser ocupado.</li>
<li><strong>i</strong> es un valor entre 0 y N-1 que identifica cada filósofo según su posición en la mesa.</li>
</ul>
<p style="text-align:center;"><img class="alignnone size-full wp-image-360" title="RCC - filosofos" src="http://resumenesuned.files.wordpress.com/2009/10/rcc-filosofos.png?w=487&#038;h=342" alt="RCC - filosofos" width="487" height="342" /></p>
<h2 style="text-align:left;">Inconvenientes del Mecanismo de Regiones Críticas Condicionales</h2>
<ol>
<li>Las RCCs pueden estar dispersas por todo el código por lo que una modificación en las configuraciones de la sección crítica obliga a revisar todo el código.</li>
<li>No proveen de un control sobre qué operaciones pueden realizarse sobre los recursos en la sección crítica.</li>
<li>Son más costosas de implementar que los semáforos.</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/346/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/346/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/346/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=346&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/10/20/capitulo-5-regiones-criticas-condicionales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-productores_consumidores-productor.png" medium="image">
			<media:title type="html">RCC - productores_consumidores - productor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-productores_consumidores-consumidor.png" medium="image">
			<media:title type="html">RCC - productores_consumidores - consumidor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores-lector.png" medium="image">
			<media:title type="html">RCC - lectores_escritores - lector</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores-escritor.png" medium="image">
			<media:title type="html">RCC - lectores_escritores - escritor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores2-lector.png" medium="image">
			<media:title type="html">RCC - lectores_escritores2 - lector</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-lectores_escritores2-escritor.png" medium="image">
			<media:title type="html">RCC - lectores_escritores2 - escritor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/rcc-filosofos.png" medium="image">
			<media:title type="html">RCC - filosofos</media:title>
		</media:content>
	</item>
		<item>
		<title>Capítulo 4 &#8211; Semáforos</title>
		<link>http://resumenesuned.wordpress.com/2009/10/13/capitulo-4-semaforos/</link>
		<comments>http://resumenesuned.wordpress.com/2009/10/13/capitulo-4-semaforos/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 23:34:26 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Programación Concurrente]]></category>
		<category><![CDATA[Pascal-fc]]></category>
		<category><![CDATA[problema de la comida de filósofos]]></category>
		<category><![CDATA[problema de los lectores y escritores]]></category>
		<category><![CDATA[problema del productor consumidor]]></category>
		<category><![CDATA[semáforos]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=314</guid>
		<description><![CDATA[Definición de Semáforo Los semáforos pueden realizar tres operaciones: wait, signal y initial. Estas operaciones son atómicas, de modo que sólo un proceso podrá estar ejecutándolas sobre un semáforo en determinado momento. wait(s): Decrementa el valor del semáforo s. Si s es 0 bloquea el proceso que realiza la llamada. Es importante saber que, según [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=314&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Definición de Semáforo</h2>
<p>Los semáforos pueden realizar tres operaciones: <strong>wait</strong>, <strong>signal</strong> y <strong>initial</strong>. Estas operaciones son atómicas, de modo que sólo un proceso podrá estar ejecutándolas sobre un semáforo en determinado momento.</p>
<ul>
<li><strong>wait(s):</strong> Decrementa el valor del semáforo <strong>s</strong>. Si <strong>s</strong> es 0 bloquea el proceso que realiza la llamada. Es importante saber que, según la implementación, cuando un proceso realiza esta llamada puede, decrementar <strong>s</strong> sin importar su valor o decrementarlo sólo si es mayor que 0. Así <strong>s</strong> podrá tener valores negativos o no según como se haya implementado.</li>
<li><strong>signal(s):</strong> Si hay algún proceso bloqueado lo desbloquea y si <strong>s</strong> permite valores negativos lo incrementa. Si no hay procesos bloqueados solamente incrementará el valor de <strong>s</strong>.</li>
<li><strong>initial(s, v):</strong> Inicializa el valor de <strong>s</strong> a <strong>v</strong>. Esta operación es específica de Pascal-fc, donde la implementación de los semáforos no permite valores negativos.</li>
</ul>
<p>Se asume que los procesos bloqueados se insertan en una cola FIFO (First In First Out), así el primero en ser bloqueado es el primero que se desbloquea.<br />
<span id="more-314"></span></p>
<h2>Resolución de Problemas Usando Semáforos</h2>
<h3>El Problema del Productor/Consumidor</h3>
<p>La siguiente solución contempla el caso de un buffer finito de tipo<em> array [0..N-1]</em>. Las variables <em>frente</em> y <em>cola</em> son enteros inicializados a 0. Por otra parte los semáforos <em>vacios</em>, <em>llenos</em> y <em>mutex</em> se inicializarán a N, 0 y 0 respectivamente.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-326" title="semaforos - productores_consumidores- productor" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-productores_consumidores-productor.png?w=242&#038;h=241" alt="semaforos - productores_consumidores- productor" width="242" height="241" /><img class="alignnone size-full wp-image-325" title="semaforos - productores_consumidores- consumidor" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-productores_consumidores-consumidor.png?w=211&#038;h=241" alt="semaforos - productores_consumidores- consumidor" width="211" height="241" /></p>
<h3 style="text-align:left;">El Problema de los Lectores y Escritores: Prioridad Lectura</h3>
<p>Esta solución hace que el primer lector que intente acceder al recurso intente bloquear a los escritores mediante wait(wrt). Así cuando no haya más escritores en la sección crítica bloqueará a todos los escritores hasta que el último lector desocupe el recurso mediante signal(wrt).</p>
<p>Los semáforos <em>mutex</em> y <em>wrt</em> se inicializarán a 1 mientras la variable <em>nl</em> (número de lectores) se inicializará a 0.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-327" title="semaforos - lectores_escritores - lector" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores-lector.png?w=227&#038;h=318" alt="semaforos - lectores_escritores - lector" width="227" height="318" /><img class="alignnone size-full wp-image-328" title="semaforos - lectores_escritores - escritor" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores-escritor.png?w=179&#038;h=197" alt="semaforos - lectores_escritores - escritor" width="179" height="197" /></p>
<h3 style="text-align:left;">El Problema de los Lectores y Escritores: Prioridad Escritura</h3>
<p>Esta solución se caracteriza por el <strong>desbloqueo encadenado</strong> en el protocolo de entrada de los lectores. Así cuando un lector va a entrar en la sección crítica desbloquea a otro si hay alguno esperando.</p>
<p>Los semáforos <em>mutex</em>, <em>lector</em> y <em>escritor</em> se inicializan a 1, 0 y 0 respectivamente. Además las variables <em>nle</em> (número de lectores en espera), <em>nl</em> (número de lectores en la sección crítica), y <em>nee</em> (número de escritores en espera) de inicializarán a 0. Finalmente, la variable booleana <em>escribiendo</em> tendrá el valor inicial false.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-337" title="semaforos - lectores_escritores2 - lector" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores2-lector2.png?w=337&#038;h=464" alt="semaforos - lectores_escritores2 - lector" width="337" height="464" /><img class="alignnone size-full wp-image-334" title="semaforos - lectores_escritores2 - escritor" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores2-escritor.png?w=287&#038;h=464" alt="semaforos - lectores_escritores2 - escritor" width="287" height="464" /></p>
<h3 style="text-align:left;">El Problema de la Comida de Filósofos</h3>
<p>La mejor de las soluciones presentadas en el libro diferencia a los filósofos sentados en posiciones pares e impares. De este modo si un filósofo para empezar a comer primero toma su palillo derecho, los dos filósofos a su lado tomarán primero su  palillo izquierdo.</p>
<p>Para la siguiente solución definimos <em>palillo</em> como <em>array[0..N] of semaphore</em> siendo <em>N</em> los sitios de la mesa. Todos los semáforos del array se inicializarán a 1.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-338" title="semaforos - filosofos - par" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-filosofos-par.png?w=292&#038;h=224" alt="semaforos - filosofos - par" width="292" height="224" /><img class="alignnone size-full wp-image-339" title="semaforos - filosofos - impar" src="http://resumenesuned.files.wordpress.com/2009/10/semaforos-filosofos-impar.png?w=307&#038;h=224" alt="semaforos - filosofos - impar" width="307" height="224" /></p>
<h2 style="text-align:left;">Inconvenientes del Mecanismo de los Semáforos</h2>
<ol>
<li>Es un mecanismo de bajo nivel por lo que su uso puede fácilmente llevar a errores.</li>
<li>No se pueden restringir las operaciones sobre los recursos.</li>
<li>El programador puede olvidar incluir todas las sentencias referentes a los objetos compartidos en las secciones críticas.</li>
<li>Es dificil reconocer la finalidad de una sentencia wait o signal ya que ambas son utilizadas para tratar la exclusión mutua y la condición de sincronización.</li>
<li>Los programas con semáforos son difíciles de mantener.</li>
</ol>
<p style="text-align:left;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=314&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/10/13/capitulo-4-semaforos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-productores_consumidores-productor.png" medium="image">
			<media:title type="html">semaforos - productores_consumidores- productor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-productores_consumidores-consumidor.png" medium="image">
			<media:title type="html">semaforos - productores_consumidores- consumidor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores-lector.png" medium="image">
			<media:title type="html">semaforos - lectores_escritores - lector</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores-escritor.png" medium="image">
			<media:title type="html">semaforos - lectores_escritores - escritor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores2-lector2.png" medium="image">
			<media:title type="html">semaforos - lectores_escritores2 - lector</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-lectores_escritores2-escritor.png" medium="image">
			<media:title type="html">semaforos - lectores_escritores2 - escritor</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-filosofos-par.png" medium="image">
			<media:title type="html">semaforos - filosofos - par</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/semaforos-filosofos-impar.png" medium="image">
			<media:title type="html">semaforos - filosofos - impar</media:title>
		</media:content>
	</item>
		<item>
		<title>Tema 8.5 &#8211; Máquinas de Turing con Restricciones</title>
		<link>http://resumenesuned.wordpress.com/2009/10/09/tema-8-5-maquinas-de-turing-con-restricciones/</link>
		<comments>http://resumenesuned.wordpress.com/2009/10/09/tema-8-5-maquinas-de-turing-con-restricciones/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 15:45:40 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Teoría de Autómatas II]]></category>
		<category><![CDATA[lenguajes independientes del contexto]]></category>
		<category><![CDATA[lenguajes recursivamente enumerables]]></category>
		<category><![CDATA[máquina de Turing]]></category>
		<category><![CDATA[máquinas con pilas múltiples]]></category>
		<category><![CDATA[máquinas contadoras]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=269</guid>
		<description><![CDATA[Presentaremos a continuación una serie de variaciones de la MT básica que, a diferencia del capítulo 8.4, presentan diversas limitaciones pero, como en las variaciones introducidas anteriormente, siguen generando lenguajes recursivamente enumerables. Máquinas de Turing con Cintas Semi-infinitas A diferencia de la MT básica, cuya cinta es infinita hacia la izquierda y la derecha, este [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=269&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Presentaremos a continuación una serie de variaciones de la MT básica que, a diferencia del capítulo 8.4, presentan diversas limitaciones pero, como en las variaciones introducidas anteriormente, siguen generando lenguajes recursivamente enumerables.</p>
<h3>Máquinas de Turing con Cintas Semi-infinitas</h3>
<p>A diferencia de la MT básica, cuya cinta es infinita hacia la izquierda y la derecha, este tipo de MT es infinita hacia la derecha pero tiene un límite a la izquierda (se puede hacer un símil con el conjunto de los números naturales). La posición inicial de la cabeza es en el extremo izquierdo de la cinta, por lo que no hay casillas a la izquierda de la cabeza. Además les pondremos una restricción más a estas MTs: no pueden escribir espacios en blanco.</p>
<p><strong><span id="more-269"></span>Teorema 8.12:</strong> Todo lenguaje aceptado por una MT M<sub>2</sub> es aceptado por una MT M<sub>1</sub> con las siguientes restricciones:</p>
<ul>
<li>La cabeza de M<sub>1</sub> nunca se mueve a la izquierda de su posición inicial.</li>
<li>M<sub>1</sub> nunca escribe espacios en blanco.</li>
</ul>
<p>La demostración es bastante simple, sólo tenemos que convertir una MT sin restricciones en una con restricciones.</p>
<p><strong>MT básica → MT Con Restricciones:</strong> La MT con restricciones tendrá las siguientes características:</p>
<ul>
<li>Tendrá un símbolo adicional <strong>B&#8217;</strong> que cumpla las funciones del espacio en blanco. Así cumpliremos la segunda restricción.</li>
<li>Para cumplir la primera restricción, poseerá dos pistas. La primera es usada para la casilla en la que se encuentra inicialmente la cabeza y las que están a su derecha y la segunda pista se utilizará para las casillas a la izquierda de la casilla inicial y deberá tener una marca en el principio de ésta para no sobrepasarla.<br />
Además, siendo <strong>M<sub>2</sub></strong> la MT básica con <strong>M<sub>2</sub> = </strong><strong>(Q<sub>2</sub>, </strong><strong>Σ, </strong><strong>Γ<sub>2</sub></strong><strong><strong>,</strong> </strong><strong>δ<sub>2</sub>, </strong><strong>q<sub>2</sub>, </strong><strong>B,</strong><strong> F<sub>2</sub>)</strong>, tendremos <strong>M<sub>1</sub></strong> como la MT con restricciones de modo que <strong>M<sub>1</sub></strong><strong> = (Q<sub>1</sub>, Σ x {B}, Γ<sub>1</sub>, δ<sub>1</sub>, q<sub>0</sub>, [B, B], F<sub>1</sub>)</strong> donde:</p>
<ul>
<li><strong>Q<sub>1</sub></strong> son los estados de <strong>M<sub>1</sub></strong> que son <strong>{q<sub>0</sub> ,q<sub>1</sub>} ∪ (Q<sub>1</sub> x {S, I})</strong>.</li>
<li><strong>Γ<sub>1</sub></strong> son los pares de <strong>Γ<sub>2</sub></strong>, o lo que es lo mismo, <strong>Γ<sub>2</sub> x</strong><strong> Γ<sub>2</sub>.</strong></li>
<li><strong>δ<sub>1</sub></strong> es la función de transición de <strong>M<sub>2</sub></strong> modificada para que una vez pasada la marca de principio de cinta, la cabeza se mueva en el sentido contrario al de <strong>M<sub>2</sub></strong> y lea de la pista que no estaba leyendo.</li>
<li><strong>F<sub>1</sub></strong> es el conjunto de estados de aceptación <strong>F<sub>2</sub> x {S,I}</strong>.</li>
</ul>
</li>
</ul>
<h3>Máquinas con Pilas Múltiples</h3>
<p>Una máquina con <strong>k</strong> pilas es una autómata de pila determinista que maneja <strong>k</strong> pilas. En vez de recibir la entrada mediante una cinta, la obtiene mediante una fuente de entrada. Un movimiento de estas máquinas se determina mediante:</p>
<ul>
<li>La <strong>UC</strong> que se encuentra en un estado de un conjunto finito de posibles estados.</li>
<li>El símbolo leído de la entrada.</li>
<li>Los símbolos leídos de la cima de las pilas.</li>
</ul>
<p>En un movimiento una máquina con pilas múltiples puede:</p>
<ul>
<li>Pasar a un nuevo estado.</li>
<li>Sustituir el símbolo de la cima de cada pila por una cadena formada por cero o más símbolos de pila.</li>
</ul>
<p>Las funciones de transición de este tipo de máquinas son como <strong>δ(q, a, X<sub>1</sub>, X<sub>2</sub>, &#8230;, X<sub>k</sub>) = (p, γ<sub>1</sub>, γ<sub>2</sub>, &#8230;, γ<sub>k</sub>)</strong> lo que significa que estando en el estado <strong>q</strong>, si lee <strong>a</strong> de la entrada y para <strong>1&lt;i&lt;k</strong>, con <strong>X<sub>i</sub></strong> en la cima de la pila <strong>i</strong>, la máquina pasará al estado <strong>p</strong> y reemplazará <strong>X<sub>i</sub></strong> con <strong>γ<sub>i</sub>.</strong></p>
<p>Decimos que una máquina como esta acepta si accede a un estado final.</p>
<p>Como una consideración final asumimos que hay un símbolo especial <strong>$</strong> al final de la entrada (no forma parte de ella) denominado <strong>marcador del final</strong>.</p>
<p><strong>Teorema 8.13:</strong> Si un lenguaje L es aceptado por una MT, entonces es aceptado por una MT con dos pilas.</p>
<p><strong>MT con Dos Pilas → MT Básica:</strong> Simulamos la cinta infinita de la MT básica <strong>M</strong> mediante las dos pilas de modo que una se usa como las casillas a la izquierda de la posición inicial de la cabeza y la otra para las casillas a la derecha. Además no se incluirán los espacios en blanco también se omiten en las descripciones instantáneas. De este modo la MT con dos pilas se comportará de la siguiente manera:</p>
<ol>
<li>Primero pone un marcador de pila vacía en cada pila.</li>
<li>Para la entrada <strong>w$</strong> copia <strong>w</strong> en la primera pila (<strong>P<sub>1</sub></strong>).</li>
<li>Extrae uno a uno los símbolos de <strong>P<sub>1</sub></strong> para insertarlos en la segunda pila (<strong>P<sub>2</sub></strong>). De este modo se puede leer en orden la entrada.</li>
<li>Pasa al estado inicial (simulado) de <strong>M</strong>.</li>
<li>Si en un movimiento <strong>M</strong> reemplaza <strong>X</strong> por <strong>Y</strong> y mueve la cabeza a la derecha, entonces apila <strong>Y</strong> en <strong>P<sub>1</sub></strong> y desapila <strong>X</strong> de <strong>P<sub>2</sub></strong>. Habrá dos excepciones para esta regla:
<ol>
<li>Si <strong>P<sub>2</sub></strong> tiene sólo la marca de pila vacía, entonces esta pila no se modifica.</li>
<li>Si <strong>Y = B</strong> y <strong>P<sub>1</sub></strong> está vacía entonces permanecerá vacía.</li>
</ol>
</li>
<li>Si en un movimiento <strong>M</strong> reemplaza <strong>X</strong> por <strong>Y</strong> y mueve la cabeza a la izquierda, desapila la cima de <strong>P<sub>1</sub></strong>, llamémoslo <strong>Z</strong>, desapila <strong>X</strong> de <strong>P<sub>2</sub></strong> y apila <strong>ZY</strong> en la misma. Como excepción, si <strong>Z</strong> es el marcador de pila vacía, entonces se desapila <strong>X</strong> y luego se apila <strong>BY</strong> en <strong>P<sub>2</sub>.</strong></li>
<li>La MT con dos pilas aceptará cuando el nuevo estado de <strong>M</strong> sea de aceptación. Si no acepta, simulará el siguiente movimiento volviendo al paso 5.</li>
</ol>
<h3>Máquinas Contadoras</h3>
<p>Podemos definir una máquina contadora de dos formas:</p>
<ul>
<li>Una máquina con pilas pero en vez de pilas contiene contadores de enteros positivos. La máquina sólo podrá diferenciar entre el cero y cualquier otro número (no ve diferencia entre 5 y 6). De esta forma un movimiento depende del estado de la <strong>UC</strong>, el símbolo leído de la entrada y del valor de los contadores (cero o no). En un movimiento podrá cambiar de estado y sumar o restar 1 a cualquiera de sus contadores (no se puede restar 1 a cero).</li>
<li>Una máquina con pilas múltiples con las siguientes restricciones:
<ul>
<li>Sólo hay dos símbolos de pila: <strong>Z<sub>0</sub></strong> (marcador de pila vacía o fondo de pila) y <strong>X</strong>.</li>
<li>En cada pila está inicialmente <strong>Z<sub>0</sub></strong>.</li>
<li><strong>Z<sub>0</sub></strong> sólo podrá ser reemplazado por <strong>X<sup>i</sup>Z<sub>0</sub></strong> para <strong>i ≥ 0</strong>.</li>
<li><strong>X</strong> sólo podrá ser reemplazado por <strong>X<sup>i</sup></strong> para <strong>i ≥ 0</strong>.</li>
</ul>
</li>
</ul>
<p>Ambas especificaciones son equivalentes en potencial reconocedor de lenguajes pero nos interesa más la primera.</p>
<h3>Potencia de las Máquinas Contadoras</h3>
<p>Observaciones sobre las máquinas contadoras:</p>
<ul>
<li>Todo lenguaje aceptado (o generado) por las máquinas contadoras, con al menos dos contadores, son <strong>recursivamente enumerables</strong> (RE).</li>
<li>Todo lenguaje aceptado por una máquina contadora con un contador es <strong>independiente del contexto</strong>.</li>
</ul>
<p><strong>Teorema 8.14:</strong> Todo lenguaje RE es aceptado por una MT con tres contadores.</p>
<p><strong>MT con Dos Pilas → MT con 3 Contadores:</strong> En este caso utilizaremos dos contadores para representar el contenido de las dos pilas y un contador adicional para realizar las operaciones necesarias. Para representar el contenido de las pilas mediante contadores utilizaremos las siguientes reglas:</p>
<ul>
<li>Si tenemos <strong>r-1</strong> símbolos utilizados por la máquina con pilas podemos representar cada uno como un número entero entre 1 y r-1.  y el contenido de alguna de estas es <strong>X<sub>1</sub>,X<sub>2</sub>,&#8230;,X<sub>n</sub></strong> entonces representamos esa pila con un contador cuyo contenido es <strong>X<sub>n</sub>r<sup>n-1</sup> + X<sub>n-1</sub>r<sup>n-2</sup> + &#8230; + X<sub>2</sub>r + X<sub>1</sub></strong>.</li>
<li>Para desapilar un elemento dividimos el número del contador por <strong>r</strong> y el residuo es el símbolo desapilado.</li>
<li>Para apilar un elemento multiplicamos el número del contador por <strong>r</strong> y sumamos el elemento a apilar.</li>
<li>Para reemplazar <strong>X</strong> por <strong>Y</strong> en la cima de la pila, si <strong>Y &gt; X</strong> sumamos <strong>Y &#8211; X</strong> y si <strong>Y &lt; X</strong> sumamos <strong>X &#8211; Y</strong>.</li>
</ul>
<p>Las operaciones de multiplicación y división se realizan mediante el contador adicional:</p>
<ul>
<li><strong>Multiplicación:</strong> Para multiplicar un contador con <strong>i</strong> por <strong>r</strong> simplemente vamos decrementando <strong>i</strong> en una unidad hasta cero y por cada decremento de <strong>i</strong> incrementamos el contador adicional <strong>r</strong> unidades (tiene que empezar en cero). Finalmente cuando el contador que contenía <strong>i</strong> llegue a cero tendremos <strong>ir</strong> en el contador adicional. Solo nos queda mover el contenido del contador adicional al original.</li>
<li><strong>División</strong>: Para dividir <strong>i</strong> por <strong>r</strong> decrementaremos <strong>r</strong> unidades al contador con <strong>i</strong> y sumaremos 1 al contador adicional por cada decremento de <strong>r</strong> unidades. Finalmente cuando el contenido al contador con <strong>i</strong> no se le pueda restar <strong>r</strong> tendremos el resultado en el contador adicional y el resto será el contenido de <strong>i</strong>. Finalmente decrementamos el contador original hast que quede en 0 y movemos a él el contenido del contador adicional.</li>
</ul>
<p><strong>Teorema 8.15:</strong> Todo lenguaje RE es aceptado por una máquina con 2 contadores.</p>
<p><strong>MT con 3 contadores → MT con 2 contadores:</strong> Tenemos tres contadores, con <strong>i</strong>, <strong>j</strong> y <strong>k</strong> en cada contador. Estos tres contadores se pueden expresar en uno que contenga <strong>m=2<sup>i</sup>3<sup>j</sup>5<sup>k</sup></strong>. Las operaciones en los tres contadores se hacen de la siguiente forma:</p>
<ul>
<li>Para incrementar un contador determinado se multiplica el contador con <strong>m</strong> por 2 si el contador a incrementar es <strong>i</strong>, 3 para <strong>j</strong> y 5 para <strong>k</strong>.</li>
<li>Para decrementar un contador determinado se divide <strong>m</strong> por 2, 3 o 5 como en el caso anterior.</li>
<li>Para realizar las operaciones se utiliza un contador adicional y se procede como en la demostración del teorema anterior.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/269/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=269&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/10/09/tema-8-5-maquinas-de-turing-con-restricciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>
	</item>
		<item>
		<title>Capítulo 3 &#8211; Primeras Aproximaciones a la Solución de los Problemas de la Programación Concurrente</title>
		<link>http://resumenesuned.wordpress.com/2009/10/07/capitulo-3-primeras-aproximaciones-a-la-solucion-de-los-problemas-de-la-programacion-concurrente/</link>
		<comments>http://resumenesuned.wordpress.com/2009/10/07/capitulo-3-primeras-aproximaciones-a-la-solucion-de-los-problemas-de-la-programacion-concurrente/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 16:08:12 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Programación Concurrente]]></category>
		<category><![CDATA[algoritmo de Dekker]]></category>
		<category><![CDATA[algoritmo de Peterson]]></category>
		<category><![CDATA[algoritmo incorrecto de Hyman]]></category>
		<category><![CDATA[condición de sincronización]]></category>
		<category><![CDATA[espera ocupada]]></category>
		<category><![CDATA[exclusión mutua]]></category>
		<category><![CDATA[sección crítica]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=187</guid>
		<description><![CDATA[Tipos de Sincronización y su Solución Los dos tipos de sincronización necesarios entre procesos concurrentes son la exclusión mutua y la condición de sincronización definidos en el capítulo 1. Cuando se hable de procesos se asume que también se habla sobre los hilos. Exclusión Mutua Cuando un proceso se encuentra en su sección crítica, el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=187&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Tipos de Sincronización y su Solución</h2>
<p>Los dos tipos de sincronización necesarios entre procesos  concurrentes son la <strong>exclusión mutua</strong> y la <strong>condición de sincronización</strong> definidos en el capítulo 1. Cuando se hable de procesos se asume que también se habla sobre los hilos.</p>
<h3>Exclusión Mutua</h3>
<p>Cuando un proceso se encuentra en su sección crítica, el resto de procesos no podrá estar en esa misma sección y si quisieran acceder a ella deberán esperar a que quede libre. Cuando un proceso termina de ejecutar su sección crítica se deberá permitir que otro proceso en espera entre en la sección.</p>
<p><span id="more-187"></span>Por lo general se aplica el siguiente esquema de proceso para ejecutar en exclusión mutua su sección crítica:</p>
<p><img class="aligncenter size-full wp-image-214" title="seccion critica generic" src="http://resumenesuned.files.wordpress.com/2009/09/seccion-critica-generic.png?w=188&#038;h=127" alt="seccion critica generic" width="188" height="127" /></p>
<p>Los protocolos de entrada y salida deben garantizar la <strong>exclusión mutua</strong>, la <strong>limitación en la espera</strong> y el <strong>progreso en la ejecución</strong>.</p>
<p><strong>Limitación en la espera:</strong> Significa que ningún proceso esperará indefinidamente para entrar en su sección crítica.</p>
<p><strong>Progreso en la ejecución:</strong> Cuando un proceso quiere entrar en su sección crítica, podrá hacerlo si está libre.</p>
<h3>Condición de Sincronización</h3>
<p>Cuando un proceso requiere de la acción de otro para realizar un evento, debe esperar a que esta acción ocurra antes de seguir su ejecución.</p>
<h2>La Espera-Ocupada para la Exclusión Mutua</h2>
<p>Este método se refiere aque la implementación de la sincronización se basa en que los procesos esperan comprobando continuamente el valor de una variable mientras ocupa la CPU.</p>
<p>Veremos primero las soluciones software para implementar la espera ocupada saltándonos los algoritmos no eficientes y luego veremos las soluciones hardware.</p>
<h3>Algoritmo de Dekker</h3>
<p style="text-align:center;"><img class="alignnone size-full wp-image-216" title="dekker p0" src="http://resumenesuned.files.wordpress.com/2009/09/dekker-p0.png?w=237&#038;h=294" alt="dekker p0" width="237" height="294" /><img class="alignnone size-full wp-image-217" title="dekker p1" src="http://resumenesuned.files.wordpress.com/2009/09/dekker-p1.png?w=237&#038;h=294" alt="dekker p1" width="237" height="294" /></p>
<p style="text-align:left;">Este algoritmo asegura la <strong>exclusión mutua</strong>, cumple la condición de <strong>progreso en la ejecución</strong> y satisface la <strong>limitación en la espera</strong>. Las variables <strong>c0</strong> y <strong>c1</strong> se inicializan a <strong>restoproceso</strong>.</p>
<h3 style="text-align:left;">Algoritmo de Peterson</h3>
<p>El algoritmo de Dekker resuelve el problema de la exclusión mutua de una forma bastante compleja. Veremos ahora  una forma más simple de resolver este problema creada por Peterson. Las variables <strong>c0</strong> y <strong>c1</strong> se inicializan con el valor <strong>restoproceso</strong>.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-220" title="peterson p0" src="http://resumenesuned.files.wordpress.com/2009/09/peterson-p0.png?w=381&#038;h=162" alt="peterson p0" width="381" height="162" /><img class="alignnone size-full wp-image-221" title="peterson p1" src="http://resumenesuned.files.wordpress.com/2009/09/peterson-p1.png?w=381&#038;h=162" alt="peterson p1" width="381" height="162" /></p>
<p>Como en toda solución considerada correcta, proporciona <strong>exclusión mutua</strong>, <strong>progreso en ejecución</strong> y <strong>espera limitada</strong>.</p>
<h3>Algoritmo Incorrecto de Hyman</h3>
<p style="text-align:center;"><img class="size-full wp-image-299 alignnone" title="hyman p0" src="http://resumenesuned.files.wordpress.com/2009/10/hyman-p0.png?w=254&#038;h=228" alt="hyman p0" width="254" height="228" /><img class="size-full wp-image-300 alignnone" title="hyman p1" src="http://resumenesuned.files.wordpress.com/2009/10/hyman-p1.png?w=254&#038;h=228" alt="hyman p1" width="254" height="228" /></p>
<p style="text-align:left;">Como en el algoritmo anterior, las variables <strong>c0</strong> y <strong>c1</strong> se inicializan a <strong>restoproceso</strong>. El error de este algoritmo se da si un proceso llega a la línea <strong>turno := X;</strong>. y se para. Luego otro proceso se encontrara que es su turno y saltandose el <strong>while</strong>. Esto permite que los dos procesos puedan entrar en la sección crítica.</p>
<h3 style="text-align:left;">Sobre el resto de algoritmos y las soluciones Hardware</h3>
<p>Según mi criterio los siguientes algoritmos del libro son demasiado complejos y no suelen aparecer en examenes así como las soluciones hardware. De todas formas conviene leer y entender estas soluciones.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=187&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/10/07/capitulo-3-primeras-aproximaciones-a-la-solucion-de-los-problemas-de-la-programacion-concurrente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/seccion-critica-generic.png" medium="image">
			<media:title type="html">seccion critica generic</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/dekker-p0.png" medium="image">
			<media:title type="html">dekker p0</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/dekker-p1.png" medium="image">
			<media:title type="html">dekker p1</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/peterson-p0.png" medium="image">
			<media:title type="html">peterson p0</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/peterson-p1.png" medium="image">
			<media:title type="html">peterson p1</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/hyman-p0.png" medium="image">
			<media:title type="html">hyman p0</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/10/hyman-p1.png" medium="image">
			<media:title type="html">hyman p1</media:title>
		</media:content>
	</item>
		<item>
		<title>Tema 2 &#8211; Elementos Básicos de un Lenguaje Sistémico</title>
		<link>http://resumenesuned.wordpress.com/2009/09/29/tema-2-elementos-basicos-de-un-lenguaje-sistemico/</link>
		<comments>http://resumenesuned.wordpress.com/2009/09/29/tema-2-elementos-basicos-de-un-lenguaje-sistemico/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 14:26:13 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Ingeniería de Sistemas]]></category>
		<category><![CDATA[arquetipo de la adicción]]></category>
		<category><![CDATA[bucle de realimentación negativa]]></category>
		<category><![CDATA[bucle de realimentación positiva]]></category>
		<category><![CDATA[crecimiento con inversión insuficiente]]></category>
		<category><![CDATA[crecimiento sigmoidal]]></category>
		<category><![CDATA[diagrama de influencias]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=79</guid>
		<description><![CDATA[Estructuras de Realimentación Simple Bucle de Realimentación Negativa También denominados bucles reguladores o estabilizadores, esta estructura es típica de los sistemas con comportamiento autorregulador. Cualquier modificación en cualquiera de los elementos que forman este tipo de bucles vuelve a él, a lo largo de la cadena, con una acción de signo contrario. En la figura [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=79&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Estructuras de Realimentación Simple</h2>
<h3>Bucle de Realimentación Negativa</h3>
<p>También denominados <strong>bucles reguladores</strong><em> </em>o<em> </em><strong>estabilizadores</strong>, esta estructura es típica de los sistemas con comportamiento autorregulador. Cualquier modificación en cualquiera de los elementos que forman este tipo de bucles vuelve a él, a lo largo de la cadena, con una acción de signo contrario. En la figura podemos apreciar un <strong>diagrama de influencias</strong> genérico con realimentación negativa:</p>
<div id="attachment_160" class="wp-caption aligncenter" style="width: 295px"><img class="size-full wp-image-160" title="realimentacion negativa" src="http://resumenesuned.files.wordpress.com/2009/09/realimentacion-negativa1.png?w=285&#038;h=203" alt="Diagrama de influencias con realimentación negativa" width="285" height="203" /><p class="wp-caption-text">Elementos básicos de un bucle de realimentación negativa</p></div>
<p><span id="more-79"></span></p>
<h3 style="text-align:left;">Formulación Matemática de un Bucle Elemental de Realimentación Negativa</h3>
<p>Los elementos presentes en la figura son:</p>
<ul>
<li>El estado del sistema <strong>x</strong>. Representa la acumulación de acciones pasadas.</li>
<li>El objetivo, meta o estado deseado <strong>x<sub>d</sub></strong>.</li>
<li>La discrepancia <strong>D = </strong><strong>x<sub>d</sub></strong><strong> &#8211; x</strong>.</li>
<li>La acción o flujo <strong>F = kD</strong><strong> = dx/dt</strong>.</li>
</ul>
<h3>Bucles de Realimentación Positiva</h3>
<p>Conocidos también como <strong>bucles reforzadores</strong>, tienen un comportamiento autorreforzado o catalítico. El bucle de realimentación positiva tiene un carácter fuertemente inestabilizador a diferencia del anterior. La siguiente imagen muestra los elementos básicos de un bucle de realimentación positiva:</p>
<div id="attachment_242" class="wp-caption aligncenter" style="width: 238px"><img class="size-full wp-image-242" title="realimentacion positiva" src="http://resumenesuned.files.wordpress.com/2009/09/realimentacion-positiva.png?w=228&#038;h=206" alt="hola" width="228" height="206" /><p class="wp-caption-text">Elementos básicos de un bucle de realimentación positiva</p></div>
<h3 style="text-align:left;">Formulación Matemática de un Bucle Elemental de Realimentación Positiva</h3>
<p>Los elementos básicos de este tipo de bucles son:</p>
<ul>
<li>El estado <strong>x</strong>.</li>
<li>La acción o flujo <strong>F = kx = dx/dt</strong>. k representa la tasa de crecimiento de <strong>x</strong>.</li>
</ul>
<p>Una característica interesante del comportamiento con <strong>crecimiento exponencial</strong> es el <strong>tiempo de duplicación</strong> que viene definido por <strong>td = ln2/k ≈ 0.7/k.</strong></p>
<h3>Retrasos</h3>
<p>En todos los procesos de realimentación se produce alguna forma de retraso aunque sólo aquellos que son importantes valen la pena ser mencionados en los diagramas.</p>
<p>En sistemas con realimentación negativa, si no se toman bien en cuenta, los retrasos pueden causar hasta el efecto contrario al deseado dando lugar a comportamientos como el de la figura.</p>
<div id="attachment_245" class="wp-caption aligncenter" style="width: 400px"><img class="size-full wp-image-245" title="realimentacion negativa con retraso" src="http://resumenesuned.files.wordpress.com/2009/09/realimentacion-negativa-con-retraso.png?w=390&#038;h=274" alt="Bucle de realimentación negativa con retraso" width="390" height="274" /><p class="wp-caption-text">Bucle de realimentación negativa con retraso</p></div>
<h2>Estructuras Complejas de Realimentación</h2>
<h3>Arquetipo del Crecimiento Sigmoidal</h3>
<p>El proceso de crecimiento sigmoidal se presenta al interactuar dos bucles, uno de realimentación positiva y otro de realimentación negativa. En un principio domina el bucle de realimentación positiva, creciendo el estado. Pasado cierto umbral, empieza a dominar el bucle de realimentación negativa, estabilizando el valor del estado. Los elementos básicos de un sistema con crecimiento sigmoidal son:</p>
<div id="attachment_266" class="wp-caption aligncenter" style="width: 475px"><img class="size-full wp-image-266" title="crecimiento sigmoidal" src="http://resumenesuned.files.wordpress.com/2009/09/crecimiento-sigmoidal.png?w=465&#038;h=189" alt="Estructura básica de un sistema con crecimiento sigmoidal" width="465" height="189" /><p class="wp-caption-text">Estructura básica de un sistema con crecimiento sigmoidal</p></div>
<h3>Formulación Matemática de un Crecimiento Sigmoidal</h3>
<p>En la figura anterior tenemos:</p>
<ul>
<li><strong>F<sub>1</sub> = k<sub>1</sub>x</strong></li>
<li><strong>F<sub>2</sub> = k<sub>2</sub>D = k<sub>2</sub>(x<sub>d</sub> &#8211; x)</strong></li>
<li><strong>dx/dt = F<sub>1</sub> + F<sub>2</sub><br />
</strong></li>
</ul>
<p>Según los valores relativos de <strong>k<sub>1</sub></strong> y <strong>k<sub>2</sub></strong>, tendremos distintos comportamientos:</p>
<ul>
<li><strong>k<sub>1</sub> &gt; k<sub>2</sub>:</strong> El bucle de realimentación positiva es el dominante por lo que el comportamiento es similar a un bucle de realimentación positiva.</li>
<li><strong>k<sub>1</sub> = k<sub>2</sub>:</strong> Este es un caso de transición.</li>
<li><strong>k<sub>1</sub> &lt; k<sub>2</sub>:</strong> El dominante es el bucle de realimentación negativa siendo el comportamiento como el del bucle dominante.</li>
</ul>
<p>Para tener un verdadero comportamiento de crecimiento sigmoidal es necesaria la no linealidad de <strong>F<sub>1</sub></strong> y <strong>F<sub>2</sub></strong> y que además se intersecten en algún punto (<strong>F<sub>1</sub> y -F<sub>2</sub></strong>).</p>
<h3>Arquetipo de la Adicción</h3>
<p>Estos sistemas se dan cuando un síntoma problemático cuya causa no se aborda por diferentes razones y se elige tratarlos sin resolver el problema que los causa. Este tipo de sistemas presenta diagramas como el siguiente:</p>
<div id="attachment_280" class="wp-caption aligncenter" style="width: 342px"><img class="size-full wp-image-280" title="diagrama de adicción" src="http://resumenesuned.files.wordpress.com/2009/09/diagrama-de-adiccion1.png?w=332&#038;h=377" alt="Diagrama de influencias del arquetipo de la adicción" width="332" height="377" /><p class="wp-caption-text">Diagrama de influencias del arquetipo de la adicción</p></div>
<h3>Arquetipo del Crecimiento con Inversión Insuficiente</h3>
<p>Este comportamiento es una composición de los sistemas anteriores. Podemos poner como ejemplo un aumento en las ventas de un producto.</p>
<ul>
<li>Si se aumenta la inversión en la promoción de un producto, aumentarán las ventas (bucle de realimentación positiva).</li>
<li>Si aumentan las ventas y no se aumenta la producción habrá un retraso en el suministro, lo que disminuirá las ventas (crecimiento sigmoidal).</li>
<li>Para no disminuir las ventas se aumenta la inversión en la promoción en vez de aumentar en la producción (adicción).</li>
</ul>
<p>El siguiente diagrama representa un sistema de crecimiento con inversión insuficiente.</p>
<div id="attachment_282" class="wp-caption aligncenter" style="width: 543px"><img class="size-full wp-image-282" title="crecimiento con inversión insuficiente" src="http://resumenesuned.files.wordpress.com/2009/09/crecimiento-con-inversion-insuficiente.png?w=533&#038;h=356" alt="Diagrama de crecimiento con inversión insuficiente" width="533" height="356" /><p class="wp-caption-text">Diagrama de crecimiento con inversión insuficiente</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=79&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/09/29/tema-2-elementos-basicos-de-un-lenguaje-sistemico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/realimentacion-negativa1.png" medium="image">
			<media:title type="html">realimentacion negativa</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/realimentacion-positiva.png" medium="image">
			<media:title type="html">realimentacion positiva</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/realimentacion-negativa-con-retraso.png" medium="image">
			<media:title type="html">realimentacion negativa con retraso</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/crecimiento-sigmoidal.png" medium="image">
			<media:title type="html">crecimiento sigmoidal</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/diagrama-de-adiccion1.png" medium="image">
			<media:title type="html">diagrama de adicción</media:title>
		</media:content>

		<media:content url="http://resumenesuned.files.wordpress.com/2009/09/crecimiento-con-inversion-insuficiente.png" medium="image">
			<media:title type="html">crecimiento con inversión insuficiente</media:title>
		</media:content>
	</item>
		<item>
		<title>Tema 8.4 &#8211; Extensiones de la Máquina de Turing Básica</title>
		<link>http://resumenesuned.wordpress.com/2009/09/22/tema-8-4-extensiones-de-la-maquina-de-turing-basica/</link>
		<comments>http://resumenesuned.wordpress.com/2009/09/22/tema-8-4-extensiones-de-la-maquina-de-turing-basica/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 21:46:21 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Teoría de Autómatas II]]></category>
		<category><![CDATA[complejidad temporal]]></category>
		<category><![CDATA[descripción instantanea]]></category>
		<category><![CDATA[lenguajes recursivamente enumerables]]></category>
		<category><![CDATA[máquina de Turing]]></category>
		<category><![CDATA[máquina de Turing de varias cintas]]></category>
		<category><![CDATA[máquina de Turing no determinista]]></category>
		<category><![CDATA[tiempo de ejecución]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=231</guid>
		<description><![CDATA[Como en el caso de las técnicas explicadas en el capítulo 8.3, las siguientes extensiones de la MT no conllevan un mayor potencial de reconocimiento de lenguajes. Veremos ahora las MT con varias cintas y las MT no deterministas. Máquina de Turing con Varias Cintas Las diferencias entre una MT con varias cintas y una [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=231&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como en el caso de las técnicas explicadas en el capítulo 8.3, las siguientes extensiones de la MT no conllevan un mayor potencial de reconocimiento de lenguajes. Veremos ahora las MT con varias cintas y las MT no deterministas.</p>
<h3>Máquina de Turing con Varias Cintas</h3>
<p>Las diferencias entre una MT con varias cintas y una básica (aparte de la obvia diferencia en la cantidad de cintas) son:<br />
<span id="more-231"></span>
<ul>
<li>La entrada se coloca en la primera cinta. El resto de cintas contienen sólo espacios en blanco (<strong>B</strong>).</li>
<li>Mientras la cabeza de la primera cinta se encuentra examinando el símbolo de entrada más a la izquierda, el resto de cabezas está en una posición cualquiera. Como las otras cintas están llenas de espacios en blanco, la posición de las cabezas carece de importancia.</li>
<li>Las transiciones dependen del estado actual y del símbolo leído por cada cabeza de cinta. En cada transición cada cabeza puede moverse de forma independiente en el sentido que desee (<strong>I</strong>zquierda, <strong>D</strong>erecha, <strong>E</strong>stacionario).</li>
</ul>
<h3>Equivalencia entre las Máquinas de Turing de Una Cinta y Varias Cintas</h3>
<p><strong>Teorema 8.9:</strong> Los lenguajes generados por una MT con varias cintas son <strong>recursivamente enumerables</strong>.</p>
<p>Como una MT de una cinta es considerada una MT de varias cintas, sólo necesitamos saber cómo convertir una MT de varias cintas a una de una cinta.</p>
<p><strong>MT Varias Cintas → MT Una Cinta:</strong> Para convertir una MT <strong>M</strong> con <strong>k</strong> cintas en una MT <strong>N</strong> con una cinta y <strong>2k</strong> pistas realizaremos los siguientes pasos:</p>
<ol>
<li>Una mitad de las <strong>2k</strong> pistas contendrán los contenidos de las <strong>k</strong> cintas de <strong>M</strong>. La otra mitad contendrá un marcador que indicará la posición en la que se encuentra la cabeza de la cinta correspondiente.</li>
<li>Para no desorientarse, <strong>N</strong> recuerda la cantidad de marcadores que se encuentran a la izquierda de su cabeza en la <strong>UC</strong>.</li>
<li>Para simular un movimiento de <strong>M</strong>, <strong>N</strong> recorrerá todas las marcas y almacenará en la <strong>UC </strong>cada símbolo leído por cada cabeza de <strong>M</strong>. Con el estado actual y los símbolos leídos sabemos el movimiento que haría <strong>M</strong>. Sabiendo el movimiento, <strong>N</strong> solamente tendrá que visitar nuevamente los marcadores, sustituir los símbolos señalados por las cabezas y mover los márcadores según sea necesario.</li>
<li>Los estados de aceptación de <strong>N</strong> serán los que representen estados de aceptación de <strong>M</strong>.</li>
</ol>
<h3>Tiempos de Ejecución en la Construcción de Varias Cintas a Una</h3>
<p>Definimos el <strong>tiempo de ejecución </strong>de una MT sobre una entrada <em>w</em> como la cantidad de pasos que realiza antes de pararse. Si la MT no para con <em>w</em> entonces el tiempo de ejecución de la MT sobre <em>w</em> es infinito.</p>
<p>La <strong>complejidad temporal</strong> de una MT es la función <strong>T(n)</strong>, que es el máximo de los tiempos de ejecución de la MT sobre todas las cadenas de longitud <strong>n</strong>.</p>
<p><strong>Teorema 8.10:</strong> El tiempo empleado por una MT de una cinta para simular <em>n</em> movimientos de una MT con <em>k</em> cintas es <strong>O(n<sup>2</sup>)</strong>.</p>
<p>Analizando como se transforma una MT de varias cintas a otra de una cinta que acepte el mismo lenguaje, vemos que los movimientos necesarios para simular los <em>n</em> movimientos de la MT de <em>k</em> cintas no son más que <strong>4n+2k</strong>. Por esto, simular <em>n</em> movimientos no requiere más de <em>n</em> veces dicha cantidad → <strong>O(n<sup>2</sup>)</strong>.</p>
<h3>Máquinas de Turing No Deterministas</h3>
<p>Una MT no determinista (MTN) se diferencia de las anteriores en que su función de transición es de la siguiente forma: <strong>δ(q, X) = {(q<sub>1</sub>, Y<sub>1</sub>, D<sub>1</sub>), (q<sub>2</sub>, Y<sub>2</sub>, D<sub>2</sub>), &#8230;, (q<sub>k</sub>, Y<sub>k</sub>, D<sub>k</sub>)}</strong> siendo <strong>k</strong> un entero finito.</p>
<p>Una MTN acepta una cadena si, teniendo la cadena en la cinta, existe alguna secuencia de movimientos que la lleve del estado inicial a un estado de aceptación.</p>
<p><strong>Teorema 8.11:</strong> Si <strong>M<sub>N</sub> </strong>es una MT no determinista entonces existe una MT determinista <strong>M<sub>D</sub> </strong>tal que <strong>L(M<sub>N</sub>) = L(M<sub>D</sub>)</strong>.</p>
<p>Como en el caso de los autómatas, cualquier MT determinista se puede considerar también como una no determinista. Por esto sólo es necesario construir una MT determinista que acepte el mismo lenguaje que otra no determinista.</p>
<p><strong>MT No Determinista → MT Determinista:</strong> Para convertir una MT no determinista <strong>M<sub>N</sub></strong> en una MT determinista <strong>M<sub>D</sub></strong>, esta última tendrá que tener dos cintas: la primera se utilizará como una cola de descripciones instantáneas (DI) de <strong>M<sub>N</sub></strong> separadas por algún símbolo para este fin y la segunda como una cinta auxiliar. En un principio <strong>M<sub>D</sub></strong> contendrá la DI inicial de <strong>M<sub>N</sub></strong> marcada como la DI actual (se puede usar un símbolo separador especial para indicar que la DI a la derecha de éste es la actual).</p>
<p>Teniendo una DI marcada como actual, se realizarán los siguientes pasos:</p>
<ol>
<li>Si el estado de la DI actual es de aceptación, <strong>M<sub>D</sub></strong> aceptará la cadena.</li>
<li>Si para la DI actual el estado no es de aceptación y <strong>M<sub>N</sub></strong> tiene <strong>k</strong> posibles movimientos, <strong>M<sub>D</sub></strong> copia la DI actual en la segunda cinta y posteriormente crea <strong>k</strong> copias de ésta (intercalando el símbolo de separación) en la primera cinta.</li>
<li><strong>M<sub>D</sub></strong> modifica cada una de las copias creadas con respecto a los distintos movimientos que realizaría <strong>M<sub>N</sub></strong>.</li>
<li><strong>M<sub>D</sub></strong> vuelve a la DI marcada como actual, borra la marca y la mueve para señalar a la siguiente DI a la derecha. Finalmente se vuelve al paso 1.</li>
</ol>
<p>Como consecuencia de la realización de estos pasos, <strong>L(M<sub>D</sub>) = L(M<sub>N</sub>)</strong>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/231/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/231/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/231/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=231&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/09/22/tema-8-4-extensiones-de-la-maquina-de-turing-basica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>
	</item>
		<item>
		<title>Tema 8.3 &#8211; Técnicas de Programación para las Máquinas de Turing</title>
		<link>http://resumenesuned.wordpress.com/2009/09/21/tema-8-3-tecnicas-de-programacion-para-las-maquinas-de-turing/</link>
		<comments>http://resumenesuned.wordpress.com/2009/09/21/tema-8-3-tecnicas-de-programacion-para-las-maquinas-de-turing/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:43:28 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Teoría de Autómatas II]]></category>
		<category><![CDATA[máquina de Turing]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=174</guid>
		<description><![CDATA[A continuación se definirán una serie de técnicas que ayudarán a crear algoritmos más facilmente para las MT. Es importante saber que estas variaciones de la MT convencional no amplían los lenguajes generados. Almacenamiento en el Estado La unidad de control puede utilizarse para almacenar un número finito de datos. De modo que un estado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=174&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A continuación se definirán una serie de técnicas que ayudarán a crear algoritmos más facilmente para las MT. Es importante saber que estas variaciones de la MT convencional no amplían los lenguajes generados.<br />
<span id="more-174"></span></p>
<h3>Almacenamiento en el Estado</h3>
<p>La unidad de control puede utilizarse para almacenar un número finito de datos. De modo que un estado puede definirse como <strong>[q, d<sub>0</sub>, d<sub>1</sub>, ..., d<sub>n</sub>]</strong> en el que <strong>q</strong> es un estado y <strong>d<sub>i</sub></strong> es un dato que recuerda la UC. Así la función de transición será del tipo <strong>δ([q<strong>, d</strong></strong><strong><sub>0</sub>, d<sub>1</sub>, ..., d<sub>n</sub></strong><strong>], X) = ([p, r</strong><strong><strong> </strong></strong><strong><sub>0</sub>, r<sub>1</sub>, ..., r<sub>n</sub></strong><strong>], Y, S)</strong> siendo <strong>d</strong><strong><sub>i</sub></strong> un dato almacenado en la UC, y <strong>r<sub>i</sub></strong> el dato que reemplaza a <strong>d</strong><strong><sub>i</sub></strong>.</p>
<h3>Pistas Múltiples</h3>
<p>También podemos pensar que la MT tiene diversas pistas en la cinta. Así tendremos transiciones en las que leamos y escribamos más de un símbolo en la cinta, esto es <strong>δ(q</strong><strong>, [X<sub>1</sub>, X<sub>2</sub>, ..., X<sub>n</sub>]) = (p</strong><strong>, </strong><strong>[Y<sub>1</sub>, Y<sub>2</sub>, ..., Y<sub>n</sub>]</strong><strong>, S)</strong> donde tenemos que <strong>X<sub>i</sub></strong><strong> </strong>es el símbolo leído en la pista <strong>i</strong> dela cinta y <strong>Y<sub>i</sub></strong> es el símbolo que reemplaza a <strong>X<sub>i</sub></strong>.</p>
<h3>Subrutinas</h3>
<p>Una subrutina de una MT es un conjunto de estados que realizan un proceso útil. No hay mucho más que decir que, como en la programación en cualquier lenguaje que permita definir funciones o métodos, conviene dividir el trabajo realizado por una MT en subrutinas. Por ejemplo si queremos que una MT calcule el porcentaje de un valor, convendría hacer que la MT posea subrutinas para multiplicar y dividir.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/174/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=174&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/09/21/tema-8-3-tecnicas-de-programacion-para-las-maquinas-de-turing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>
	</item>
		<item>
		<title>Capítulo 2 &#8211; Procesos vs. Hilos</title>
		<link>http://resumenesuned.wordpress.com/2009/09/14/capitulo-2-procesos-vs-hilos/</link>
		<comments>http://resumenesuned.wordpress.com/2009/09/14/capitulo-2-procesos-vs-hilos/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 22:54:59 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Programación Concurrente]]></category>
		<category><![CDATA[cambio de contexto]]></category>
		<category><![CDATA[hilos]]></category>
		<category><![CDATA[hilos daemon]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[procesos]]></category>
		<category><![CDATA[Runnable]]></category>
		<category><![CDATA[Thread]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=108</guid>
		<description><![CDATA[Procesos Una forma de programar concurrentemente es dividir un programa en procesos ya que por lo general, los sistemas operativos proveen de un sistema de ejecución concurrente para éstos. Para hacer una comparación entre procesos e hilos aquí se presentan una serie de características de los procesos: Poseen espacios de memoria independientes. Algunos sistemas operativos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=108&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Procesos</h2>
<p>Una forma de programar concurrentemente es dividir un programa en procesos ya que por lo general, los sistemas operativos proveen de un sistema de ejecución concurrente para éstos. Para hacer una comparación entre procesos e hilos aquí se presentan una serie de características de los procesos:</p>
<ul>
<li>Poseen espacios de memoria independientes. Algunos sistemas operativos permiten que distintos procesos compartan memoria.</li>
<li>Pueden encontrarse en diferentes estados. Los cambios de estado (<strong>cambios de contexto</strong>) son relativamente costosos en términos de tiempo.</li>
<li>La estructura de los procesos se encuentra en la memoria del núcleo. Esto causa que sea necesario realizar costosas llamadas al sistema para acceder a ella.</li>
</ul>
<p><span id="more-108"></span></p>
<h2>Hilos</h2>
<p>Tambien conocidos como <strong>threads</strong>, se definen como una secuencia de control dentro de un proceso que ejecuta sus instrucciones de forma independiente. Los hilos presentan las siguientes características:</p>
<ul>
<li>Comparten el espacio de memoria del usuario. Pueden compartir variables entre distintos hilos.</li>
<li>Un hilo también puede encontrarse en uno de varios estados pero los cambios de contexto entre hilos consumen poco tiempo.</li>
<li>La estructura de los hilos pueden encontrarse en el espacio de memoria del núcleo (<strong>implementación a nivel de núcleo</strong>) o en la memoria del usuario (<strong>librería al nivel de usuario</strong>).</li>
</ul>
<h2>Hilos en Java</h2>
<p><strong>Creación de hilos:</strong> Existen dos formas de trabajar con hilos en Java:</p>
<ul>
<li><strong>Heredando de la clase Thread:</strong> Crear una clase que herede de <strong>Thread</strong> e implementar el método <strong>public void run()</strong> que se invocará cuando se empiece a ejecutar el hilo. Para ejecutar el hilo es necesario llamar al método <strong>start()</strong> que posteriormente llamara a run(). No permite que la clase herede de otras al no permitirse la herencia múltiple en Java.</li>
<li><strong>Implementando la interfaz Runnable:</strong> La clase tiene que solamente implementar la interfaz <strong>Runnable</strong> y redefinir el método <strong>public void run()</strong>. Para ejecutar un hilo creado mediante este método es necesario crear una instancia de <strong>Thread</strong> pasando como parámetro la clase que implementa <strong>Runnable</strong> y posteriormente llamar a <strong>start()</strong>. Permite heredar de otra clase a diferencia del método anterior.</li>
</ul>
<p><strong>Planificación:</strong> Todos los hilos tienen una proridad aunque no hay garantía de que en un momento se esté ejecutando el hilo de mayor prioridad. Se establece la prioridad de un hilo con el método <strong>setPriority(n)</strong> en el que <strong>n</strong> es un número de 1 a 10 siendo 1 la menor prioridad.</p>
<p><strong>Hilos daemon:</strong> Se define un hilo como <strong>Daemon</strong> antes de ejecutarse mediante el método <strong>setDaemon(true)</strong>. Estos hilos tienen una prioridad baja y la máquina virtual abandonará la ejecución cuando todos los hilos que no sean Daemon hayan finalizado su ejecución.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=108&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/09/14/capitulo-2-procesos-vs-hilos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>
	</item>
		<item>
		<title>Tema 1 &#8211; Lenguajes Regulares</title>
		<link>http://resumenesuned.wordpress.com/2009/09/14/tema-1-lenguajes-regulares/</link>
		<comments>http://resumenesuned.wordpress.com/2009/09/14/tema-1-lenguajes-regulares/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 18:00:54 +0000</pubDate>
		<dc:creator>tomassi</dc:creator>
				<category><![CDATA[Teoría de Autómatas I]]></category>
		<category><![CDATA[autómatas finitos]]></category>
		<category><![CDATA[diagramas de transiciones]]></category>
		<category><![CDATA[expresiones regulares]]></category>
		<category><![CDATA[gramáticas regulares]]></category>
		<category><![CDATA[lenguajes regulares]]></category>

		<guid isPermaLink="false">http://resumenesuned.wordpress.com/?p=62</guid>
		<description><![CDATA[Autómatas Finitos, Deterministas y No Deterministas Autómata finito determinista (AFD): Un autómata finito determinista consiste en una quíntupla (S, Σ, δ, ι, F) donde: S es un conjunto finito de estados. Σ es el alfabeto de la máquina. δ es la función de transición de S x Σ a S. δ(p, x) = q si [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=62&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Autómatas Finitos, Deterministas y No Deterministas</h2>
<p><strong>Autómata finito determinista (AFD):</strong> Un autómata finito determinista consiste en una quíntupla <strong>(S, Σ, δ, ι, F)</strong> donde:</p>
<ul>
<li><strong>S</strong> es un conjunto finito de estados.</li>
<li><strong>Σ</strong> es el alfabeto de la máquina.</li>
<li><strong>δ</strong> es la función de transición de <strong>S x Σ</strong> a <strong>S</strong>. <strong>δ(p, x) = q</strong><em> </em>si y sólo si la máquina puede pasar de un estado <strong>p</strong> a un estado <strong>q</strong> al leer el símbolo<strong> x</strong>.</li>
<li><strong>ι</strong> es el estado inicial (elemento de <strong>S</strong>).</li>
<li><strong>F</strong> es el conjunto de estados de aceptación (subconjunto de <strong>S</strong>).</li>
</ul>
<p><span id="more-62"></span><br />
<strong>Diagrama de transiciones completamente definido:</strong> Cada estado del diagrama debe tener un arco de salida por cada símbolo del alfabeto.</p>
<p><strong>Lenguaje ∅:</strong> Es el lenguaje vacio y no contiene ninguna cadena. Por consiguiente no puede llegar a un estado de aceptación.</p>
<p><strong>Lenguaje {λ}:</strong> Este lenguaje contiene la cadena vacía<strong> </strong>(<strong>λ</strong>). Un autómata acepta la cadena vacía si y sólo si su estado inicial es también estado de aceptación.</p>
<p><strong>Autómata finito indeterminista (AFI):</strong> Es un autómata finito en el que un estado puede tener más de un arco de salida por cada símbolo de entrada. Consisten en una quíntupla <strong>(S, Σ, ρ, ι, F)</strong> donde:</p>
<ul>
<li><strong>S</strong> es un conjunto finito de estados.</li>
<li><strong>Σ</strong> es el alfabeto de la máquina.</li>
<li><strong>ρ</strong> es un subconjunto de<strong> S x Σ x S</strong>.</li>
<li><strong>ι</strong> es el estado inicial (elemento de <strong>S</strong>).</li>
<li><strong>F</strong> es el conjunto de estados de aceptación (subconjunto de<strong> S</strong>).</li>
</ul>
<p><strong>Teorema 1.3: </strong>Para cada autómata finito no determinista, existe un autómata finito determinista que acepta el mismo lenguaje.</p>
<p>Como todo AFD es un AFI, sólo necesitamos saber cómo convertir un AFI en un AFD. Si tenemos un AFI definido por la quíntupla  <strong>(S, Σ, ρ, ι, F)</strong> que queremos convertir en un AFD, este  estará definido por la quíntupla <strong>(S&#8217;, Σ, δ, ι&#8217;, F&#8217;)</strong> donde:</p>
<ul>
<li> <strong>S&#8217; = <em>P</em>(S)</strong>. Por ejemplo si S = {s<sub>0</sub>, s<sub>1</sub>, s<sub>2</sub>}, <em>P</em>(S) = {{}, {s<sub>0</sub>}, {s<sub>1</sub>}, {s<sub>2</sub>}, {s<sub>0</sub>, s<sub>1</sub>}, {s<sub>0</sub>, s<sub>2</sub>}, {s<sub>1</sub>, s<sub>2</sub>}, {s<sub>0</sub>, s<sub>1</sub>, s<sub>2</sub>}}.</li>
<li> <strong>ι&#8217; = {ι}.</strong> Por ejemplo, si s<sub>0</sub> es el estado inicial,  ι&#8217;<strong> = </strong>{s<sub>0</sub>}.</li>
<li><strong>F&#8217;</strong> es la colección de subconjuntos de S que contienen por lo menos un estado de <strong>F</strong>. Partiendo del primer ejemplo, si s<sub>2</sub> es un estado de aceptación, F&#8217; = {{s<sub>2</sub>},  {s<sub>0</sub>, s<sub>2</sub>}, {s<sub>1</sub>, s<sub>2</sub>}, {s<sub>0</sub>, s<sub>1</sub>, s<sub>2</sub>}}</li>
<li> <strong>δ</strong> es la función de <strong>S&#8217; x Σ</strong> a <strong>S&#8217;</strong> tal que para cada <strong>x</strong> en <strong>Σ</strong> y <strong>s&#8217;</strong> en <strong>S&#8217;</strong>, <strong>δ(x, s&#8217;)</strong> será el conjunto de estados de <strong>S</strong> a los que se puede llegar siguiendo un arco con la etiqueta <strong>x</strong>.</li>
</ul>
<h2>Lenguajes Regulares</h2>
<p>Se denominan lenguajes regulares aquellos lenguajes que pueden ser aceptados por autómatas finitos, gramáticas regulares y expresiones regulares como veremos más adelante.</p>
<h2>Gramáticas Regulares</h2>
<p>Una gramática se define por la cuádrupla <strong>(V, T, S, R)</strong> donde:</p>
<ul>
<li><strong>V</strong> es un conjunto finito de no terminales (letras mayúsculas).</li>
<li><strong>T</strong> es un conjunto finito de terminales (letras minúsculas).</li>
<li><strong>S</strong> es el símbolo inicial (elemento de <strong>V</strong>).</li>
<li><strong>R</strong> es un conjunto finito de reglas de reescritura.</li>
</ul>
<p><strong>Gramática Regular:</strong> Una gramática regular se define como una gramática cuyas reglas de reescritura cumplen las siguientes restricciones:</p>
<ul>
<li>El lado izquierdo debe consistir en un solo no terminal.</li>
<li>El lado derecho puede consistir en un terminal, un terminal seguido de un no terminal o la cadena vacía (<strong>λ</strong>).</li>
</ul>
<p><strong>Teorema 1.5:</strong> Para cada lenguaje generado por una gramática regular (L(G)) existe un autómata finito que también lo acepta (L(M)).</p>
<p><strong>Gramática Regular</strong><strong> → Gramática Regular sin terminales solos:</strong> Para convertir una gramática regular en otra (también regular) que no contenga  reglas de reescritura cuyo lado derecho consista en un solo terminal simplemente tenemos que cambiar las reglas de tipo X→a por X→aX&#8217; y X&#8217;→λ.</p>
<p><strong>Gramática Regular → Autómata Finito:</strong> Primero convertimos la gramática regular <strong>G</strong> en una gramática que no contiene reglas de reescritura cuyo lado derecho consiste en un solo terminal y la llamamos <strong>G&#8217;</strong>. Definimos un autómata finito <strong>M</strong> que genera el mismo lenguaje que <strong>G&#8217;</strong> como la quíntupla <strong>(S, Σ, ρ, ι, F)</strong> donde:</p>
<ul>
<li><strong>S</strong> es la colección de no terminales de <strong>G&#8217;</strong>.</li>
<li><strong>ι</strong> es el símbolo inicial de <strong>G&#8217;</strong>.</li>
<li><strong>F</strong> es la colección de no terminales de <strong>G&#8217;</strong> que aparecen en el lado izquierdo de las reglas <strong>λ</strong> (reglas del tipo Q→λ).</li>
<li><strong>ρ</strong> consiste en la tripleta <strong>(P, x, Q)</strong> para la cual <strong>G&#8217;</strong> contiene una regla de reescritura de la forma <strong>P→xQ</strong>.</li>
</ul>
<p><strong>Autómata Finito → Gramática Regular:</strong> Dado un autómata finito <strong>M</strong> definido por la quíntupla  <strong>(S, Σ, ρ, ι, F)</strong> podemos crear una gramática regular <strong>G</strong> que genere el mismo lenguaje de la siguiente manera:</p>
<ul>
<li>Los no terminales son los estados de <strong>S</strong>.</li>
<li>El símbolo inicial es <strong> ι</strong>.</li>
<li>Las reglas de reescritura son de la forma <strong>P→xQ</strong> si  <strong>(P, x, Q)</strong> está en <strong>ρ</strong> y <strong>Q→λ</strong> si <strong>Q</strong> está en <strong>F</strong>.</li>
</ul>
<h2>Expresiones Regulares</h2>
<p>Una expresión regular para el alfabeto <strong>Σ </strong>se define mediante las siguientes propiedades:</p>
<ul>
<li><strong>∅</strong> es una expresión regular.</li>
<li>Cada miembro de <strong>Σ</strong> es una expresión regular.</li>
<li>Si <strong>p</strong> y <strong>q</strong> son expresiones regulares, entonces <strong>(p∪q)</strong> también lo es.</li>
<li>Si <strong>p</strong> y <strong>q</strong> son expresiones regulares, entonces <strong>(p⋅q)</strong> también lo es. Por ejemplo  {a, b} ⋅ {c, d} = {ac, ad, bc, bd}.</li>
<li>Si <strong>p</strong> es una expresión regular, entonces la <strong>estrella de Kleene</strong> <strong>de</strong> <strong>p</strong> o <strong>p*</strong> también lo es. Por ejemplo {a, b}* = {λ, a, b, aa, ab, ba, bb, aaa, &#8230;}.</li>
</ul>
<p><span style="text-decoration:underline;">Nota:</span> El libro utiliza un círculo en lugar de un punto para representar la concatenación de lenguajes. He optado por esta notación porque en HTML no existe o no he encontrado una representación que me convenza. Además esta notación también es bastante utilizada por otros autores.</p>
<p><strong>Teorema 1.6:</strong> Dado un alfabeto <strong>Σ</strong>, los lenguajes regulares de <strong>Σ</strong> son exactamente los lenguajes representados por las expresiones regulares de <strong>Σ</strong>.</p>
<p><strong>Autómata Finito </strong><strong>→ Expresión Regular:</strong> Para convertir un autómata finito en una expresión regular tendremos que convertir el autómata en otro con uno ( un estado que es inicial y de aceptación) o dos estados (un estado inicial y un estado de aceptación) en el que los arcos están etiquetados con expresiones regulares. Todo este proceso se realiza mediante los siguientes pasos:</p>
<ol>
<li>Si el autómata tiene más de un estado de aceptación, siendo <strong>{f<sub>1</sub>, f<sub>2</sub>, &#8230;, f<sub>n</sub>}</strong> el conjunto de estados de aceptación, crearememos <strong>n</strong> copias del autómata en las que para la copia<strong> M<sub>i</sub></strong> el único estado de aceptación será el estado <strong>f<sub>i</sub></strong>. Para cada copia realizaremos los pasos siguientes para encontrar la expresión regular equivalente. Finalmente la expresión regular equivalente al autómata original será la union de las expresiones regulares de las copias.</li>
<li>Para cada estado <strong>s</strong> que no sea inicial ni de aceptación, eliminarlo y sustituir los arcos conectados con <strong>s</strong> de modo que para cada par de arcos <strong>(a,b) </strong>siendo <strong>a</strong> un arco del tipo <strong>δ(x, s<sub>i</sub>) = s</strong> (arcos que entran a <strong>s</strong>) y <strong>b</strong> un arco del tipo <strong>δ(y, s) = </strong><strong>s<sub>j</sub></strong> (arcos que salen de <strong>s</strong>), creamos un nuevo arco <strong>δ(x·y, </strong><strong>s<sub>i</sub></strong><strong>) = </strong><strong>s<sub>j</sub></strong>. Siendo <strong>s ≠ </strong><strong>s<sub>i</sub></strong> y <strong>s</strong> <strong>≠ </strong><strong>s<sub>j</sub></strong> (no necesariamente <strong>s<sub>i</sub></strong> <strong>≠ </strong><strong>s<sub>j</sub></strong>) este caso no contempla los arcos del tipo <strong>δ(z, s) = s</strong> (arcos que empiezan y terminan en <strong>s</strong>). De existir este tipo de arcos, simplemente cambiaremos los pares anteriormente descritos por <strong>δ(x</strong><strong>·</strong><strong>z*</strong><strong>·</strong><strong>y, </strong><strong>s<sub>i</sub></strong><strong>) = </strong><strong>s<sub>j</sub></strong>. Como consecuencia de este paso, los estados que no contienen arcos dirigidos a un estado distinto se verán eliminados tanto éstos como sus arcos.</li>
<li>Para todos los arcos que compartan sus orígenes y sus destinos los agruparemos en un solo arco etiquetado con la unión de las expresiones regulares de estos arcos. Por ejemplo si hay un arco de <strong>s<sub>i</sub></strong> a <strong>s<sub>j</sub></strong> con la etiqueta <strong>a</strong> y otro también de <strong>s<sub>i</sub></strong> a <strong>s<sub>j</sub></strong> con la etiqueta <strong>b</strong> los agrupamos en uno de <strong>s<sub>i</sub></strong> a <strong>s<sub>j</sub></strong> con la etiqueta <strong>a</strong><strong>∪</strong><strong>b</strong>.</li>
<li>Después de eliminados los estados que no son iniciales ni de aceptación, podemos encontrarnos con dos diagramas:
<ol>
<li>Si el diagrama tiene un solo estado, éste será el inicial y el de aceptación al mismo tiempo. En este caso solamente podemos encontrarnos con un arco o con ninguno. De no tener ningún arco, el autómata representado por el diagrama genera el lenguaje <strong>{λ}</strong> y si tiene un arco etiquetado con la expresión regular <strong>r</strong>, la expresión regular que genera el lenguaje generado por el autómata será <strong>(r*)</strong>.</li>
<li>En el caso que el diagrama tenga dos estados, uno será el inicial (<strong>i</strong>) y otro el final o de aceptación (<strong>f</strong>). Con sólo dos estados podemos tener a lo sumo cuatro arcos: <strong>δ(r, i) = i</strong>, <strong>δ(s, i) = f</strong>, <strong>δ(t, f) = f</strong>, y <strong>δ(u, f) = i</strong>. Ahora bien, según la existencia o no de ciertos arcos podemos tener tres situaciones:
<ol>
<li>Si el arco <strong>s</strong> no está presente, la expresión regular del autómata será <strong>∅</strong> ya que no hay manera de llegar a un estado de aceptación.</li>
<li>Estando el arco <strong>s</strong> presente, si el arco <strong>u</strong> no lo está, la expresión regular del diagrama será <strong>(r*</strong><strong>·</strong><strong>s</strong><strong>·</strong><strong>t*)</strong>.</li>
<li>Si los arcos <strong>s</strong> y <strong>u</strong> están presentes, la expresión regular será <strong>((r*·s·t*)·(u·r*·s</strong><strong>·t*</strong><strong>)*).</strong></li>
</ol>
</li>
</ol>
</li>
</ol>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:0;width:1px;height:1px;">
<table border="1" cellpadding="4" width="760">
<tbody>
<tr>
<td></td>
<td class="4A">Σ</td>
</tr>
</tbody>
</table>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/resumenesuned.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/resumenesuned.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/resumenesuned.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/resumenesuned.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/resumenesuned.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/resumenesuned.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/resumenesuned.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/resumenesuned.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=resumenesuned.wordpress.com&amp;blog=9273837&amp;post=62&amp;subd=resumenesuned&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://resumenesuned.wordpress.com/2009/09/14/tema-1-lenguajes-regulares/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6b9e54d8de7d3279e92ca35fe9280edd?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">tomassi</media:title>
		</media:content>
	</item>
	</channel>
</rss>
