<?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/"
	>

<channel>
	<title>Flying memes &#187; Otto Regine</title>
	<atom:link href="http://sandropaganotti.com/tag/otto-regine/feed/" rel="self" type="application/rss+xml" />
	<link>http://sandropaganotti.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 23 Mar 2012 19:07:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Le otto regine e ruby-dlx</title>
		<link>http://sandropaganotti.com/2008/12/08/le-otto-regine-e-ruby-dlx/</link>
		<comments>http://sandropaganotti.com/2008/12/08/le-otto-regine-e-ruby-dlx/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 22:03:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Algoritmi]]></category>
		<category><![CDATA[Exact Cover]]></category>
		<category><![CDATA[Otto Regine]]></category>
		<category><![CDATA[Programmazione per vincoli]]></category>

		<guid isPermaLink="false">http://sandropaganotti.com/?p=61</guid>
		<description><![CDATA[Il problema delle otto regine rientra a far parte di quell&#8217;insieme di sfide che da molti anni interessano ed incuriosiscono matematici ed appassionati (questo problema è stato proposto nel 1848). Cercando di applicare la tecnica dei Dancing Links su questo problema mi sono accorto di un piccolo, ma non banale dettaglio: &#8216;il problema delle otto [...]]]></description>
			<content:encoded><![CDATA[<p>Il <a href="http://en.wikipedia.org/wiki/Eight_queens_puzzle">problema delle otto regine</a> rientra a far parte di quell&#8217;insieme di sfide che da molti anni interessano ed incuriosiscono matematici ed appassionati (questo problema è stato proposto nel 1848).</p>
<p><span id="more-61"></span></p>
<p>Cercando di applicare la tecnica dei Dancing Links su questo problema mi sono accorto di un piccolo, ma non banale dettaglio: &#8216;il problema delle otto regine non rientra nella categoria &#8216;Exact Cover Problems&#8221;, e quindi non può, almeno nella sua forma nativa, essere risolto usando il famoso algoritmo di Knuth.</p>
<p>Gli &#8216;Exact Cover Problems&#8217; sono definiti da una proprietà che gli accumuna, che è la seguente:</p>
<blockquote><p>Dato un set X e una collezione S di sotto-set di X un &#8216;exact cover&#8217; S* è una sotto-collezione di S tale che ogni elemento di X è contenuto in esattamente un set di S*</p></blockquote>
<p>Tale proprietà è resa magistralmente da <a href="http://en.wikipedia.org/wiki/Image:Exact-cover-bigraph-solved.svg">questa immagine su wikipedia</a> e può essere riassunta nel seguente modo:</p>
<blockquote><p>Esprimendo il problema in termini di vincoli deve essere sempre possibile ricavare una e una sola soluzione per ogni &#8216;elemento&#8217; dei vincoli imposti.</p></blockquote>
<p>Nel caso delle otto regine questa proprietà non si verifica; prendiamo ad esempio la definizione del vincolo &#8216;non possono esserci due regine sulla stessa diagonale&#8217;. In un &#8216;exact cover problem&#8217; questo significherebbe che per ogni diagonale esiste una e una sola regina mentre nella realtà solo 16 delle diagonali (su 30) conterranno una regina.</p>
<p>Come ovviare a questo problema ?</p>
<p>La soluzione è guardare le variabili in gioco non nei termini di &#8216;regine&#8217; ma in termini di coordinate x e y; in quest&#8217;ottica le costrizioni diventano le seguenti (dove E11 sta per elemento in riga 1, colonna 1):</p>
<pre><code>
-- RIGHE 1-8 --
R1 : { E11 E12 E13 E14 ... E18 }
R2 : { E21 E22 ... E28 }
...
R8 : { E81 E82 ... E88 }

-- COLONNE 1-8 --
C1 : { E11 E21 E31 ... E81 }
C2 : { E12 E22 E32 ... E82 }
...
C8 : { E18 E28 E38 ... E88 }

-- DIAGONALI 1-28 (prima / e poi \ escludendo quelle con 1 solo elemento ) --
D1  : { E21 E12 }
D2  : { E31 E22 E13 }
D3  : { E41 E32 E23 E14 }
...
D30: { E17 E28 }

</code></pre>
<p>La prossima settimana implementeremo questa matrice di costrizione all&#8217;interno di ruby-dlx</p>
]]></content:encoded>
			<wfw:commentRss>http://sandropaganotti.com/2008/12/08/le-otto-regine-e-ruby-dlx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

