<?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>El vol de l&#039;home ocell &#187; sudoku</title>
	<atom:link href="http://www.elvoldelhomeocell.net/archives/tag/sudoku/feed" rel="self" type="application/rss+xml" />
	<link>http://www.elvoldelhomeocell.net</link>
	<description>Vull tenir dret a volar.</description>
	<lastBuildDate>Thu, 26 Apr 2012 00:57:47 +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>Sudoku</title>
		<link>http://www.elvoldelhomeocell.net/archives/666</link>
		<comments>http://www.elvoldelhomeocell.net/archives/666#comments</comments>
		<pubDate>Sat, 02 May 2009 19:33:15 +0000</pubDate>
		<dc:creator>Joan</dc:creator>
				<category><![CDATA[Curiositats]]></category>
		<category><![CDATA[Informàtica]]></category>
		<category><![CDATA[Matemàtiques]]></category>
		<category><![CDATA[Programació]]></category>
		<category><![CDATA[algorismes]]></category>
		<category><![CDATA[backtraking]]></category>
		<category><![CDATA[combinatoria]]></category>
		<category><![CDATA[complexitat computacional]]></category>
		<category><![CDATA[eda]]></category>
		<category><![CDATA[fiv]]></category>
		<category><![CDATA[friki]]></category>
		<category><![CDATA[japó]]></category>
		<category><![CDATA[miyagi]]></category>
		<category><![CDATA[np-complet]]></category>
		<category><![CDATA[sudoku]]></category>
		<category><![CDATA[upv]]></category>

		<guid isPermaLink="false">http://www.elvoldelhomeocell.net/?p=666</guid>
		<description><![CDATA[Jo pensava que el sudoku era un d&#8217;aquests jocs mil·lenaris japonesos que havia exercitat la ment de monjos i Shoguns per a poder arribar a tota classe de revelacions pròpies del senyor Miyagi i que el deixen a un bocabadat &#8230; <a href="http://www.elvoldelhomeocell.net/archives/666">Continua llegint <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Jo pensava que el <em><a href="http://en.wikipedia.org/wiki/Sudoku" target="_blank">sudoku</a></em> era un d&#8217;aquests jocs mil·lenaris japonesos que havia exercitat la ment de monjos i <a href="http://es.wikipedia.org/wiki/Sh%C5%8Dgun" target="_blank">Shoguns</a> per a poder arribar a tota classe de revelacions pròpies del <a href="http://en.wikipedia.org/wiki/Mr._Miyagi" target="_blank">senyor Miyagi</a> i que el deixen a un bocabadat durant una bona estona.</p>
<p>Però resulta que de joc mil·lenari i japonès en té ben poc, ja que va ser l&#8217;arquitecte nord-americà <a href="http://en.wikipedia.org/wiki/Howard_Garns" target="_blank">Howard Garns</a>, qui l&#8217;inventà&#8230; en 1979! Quina decepció.</p>
<p>Els <em>sudokus</em> es feren populars a Japó en la dècada dels vuitanta quan una companyia de <em>puzzles</em> comença a comercialitzar-los en el país de l&#8217;orient, però s&#8217;estengueren mundialment l&#8217;any 2004 quan el periòdic britànic <a href="http://www.timesonline.co.uk/tol/news/" target="_blank"><em>The Times</em></a> començà a incloure&#8217;ls entre les seves pàgines junt a sopes de lletres, encreuats i demés passatemps.</p>
<p><em><strong>El joc</strong></em></p>
<p>El joc consisteix <em>senzillament</em> en omplir un tauler de costats 9&#215;9 amb nombres de l&#8217;1 al 9 de manera que no hi haja dos nombre iguals en cap fila, ni cap columna, ni cap <em>bloc</em> de 3&#215;3. Els taulers de <em>sudoku</em> tenen la següent forma.</p>
<div id="attachment_681" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.elvoldelhomeocell.net/wp-content/uploads/2009/05/sudoku_sol.png" rel="lightbox[666]"><img class="size-medium wp-image-681" title="Sudoku" src="http://www.elvoldelhomeocell.net/wp-content/uploads/2009/05/sudoku-300x300.png" alt="Sudoku" width="300" height="300" /></a><p class="wp-caption-text">Un exemple de Sudoku (punxa per veure la solució)</p></div>
<p>Depenent del nombre de quadres plens que ens donen i la posició dels nombres amb els que comencem el joc resulta més difícil o menys.</p>
<p><em><strong>El principi</strong></em></p>
<p>Jo fins fa dos anys no havia jugat en ma vida al joc aquest. N&#8217;havia vist, sí, però no havia jugat mai. Fou a juny de 2007, de camí a València per comprar els bitllets del (fallit) <a href="http://www.interrailnet.com/" target="_blank">Interrail</a> quan vaig jugar per primera vegada amb <a href="http://llumdelluerna.blogspot.com/" target="_blank">Marina</a> i <a href="http://www.blaiserver.net/" target="_blank">Blai</a>. Marina i jo ens vàrem <em>picar</em> a veure qui podia completar-ne més ràpidament així que em vaig comprar un llibre d&#8217;aquests que estan tot plens de <em>sudokus</em> per anar fent-lo durant el viatge, però circumstàncies de la vida que ja coneixeu feren que el llibre l&#8217;emplenés en l&#8217;hospital.</p>
<p>I a què ve tot açò? Doncs l&#8217;altre dia estàvem en classe d&#8217;<a href="http://users.dsic.upv.es/asignaturas/facultad/eda/" target="_blank">Estructures de Dades i Algorismes</a> (<em>a.k.a</em> EDA) aprenent sobre <a href="http://en.wikipedia.org/wiki/Backtracking" target="_blank"><em>Backtracking</em></a> i sorgí l&#8217;exemple del <em>sudoku</em>, així que el professor va fer un programa que resolia <em>sudokus</em> fent servir aquest esquema algorísmic. Quan va acabar el programa va dir: &#8220;Podríem fer que ens imprimira tots els <em>sudokus</em> possibles&#8230;&#8221; i va llançar el programa per a que fera això, però com que ja era hora d&#8217;acabar la classe ací va quedar la cosa.</p>
<p>Jo, ahir que no sabia que fer (ara que ja s&#8217;ha acabat el concurs de l&#8217;assignatura) i com que no havia practicat encara res de <em>Backtraking</em> per compte propi em vaig dir: &#8220;Xe, anem a fer el <em>programeta</em> per resoldre <em>sudokus</em>&#8220;. I em vaig posar en això. Quan vaig acabar-lo em vaig preguntar per què no acabar la tasca que el professor havia començat però havia abandonat per falta de temps i vaig llançar <a href="http://trac.assembla.com/fivworks/browser/eda/codi/backtracking/sudoku.cpp" target="_blank">el meu programa</a> per a que em mostrara tots els <em>sudokus</em> que es podien formar en un tauler de 9&#215;9.</p>
<p>Ignorant de mi. Com veia que tardava me&#8217;n vaig anar a berenar esperant que quan tornes tindria ja tots els <em>sudokus</em> possibles. Però com ja imaginareu, quan vaig tornar el portàtil estava a 74ºC  (i això que havia limitat la freqüència a 996MHz) i el fitxer de solucions ja ocupava centenars de MB. Va ser ací quan em vaig adonar que segurament serien MOLTS <em>sudokus</em>&#8230;</p>
<p>Concretament, hi han <strong>6,670,903,752,021,072,936,960 taulers de <em>sudoku</em> possibles</strong> (o deixe expressat així i no en notació científica per a que s&#8217;aprecie millor la magnitud d&#8217;aquest nombre). I ací és on comença el <em>friquisme</em>.</p>
<p><em><strong>Parlant matemàticament&#8230;</strong></em></p>
<p>Hi ha un extens <a href="http://en.wikipedia.org/wiki/Mathematics_of_Sudoku" target="_blank">article en la Wikipedia anglesa</a> dedicat a les matemàtiques relacionades amb aquest joc, la seva <a href="http://en.wikipedia.org/wiki/Mathematics_of_Sudoku#References" target="_blank">llista de referències</a> no es queda curta i són moltes les investigacions sobre <a href="http://en.wikipedia.org/wiki/Combinatorics" target="_blank">Combinatòria</a> i també <a href="http://en.wikipedia.org/wiki/Computational_complexity_theory" target="_blank">Complexitat Computacional</a> que es centren en aquest joc.</p>
<p>El problema general del <em>sudoku</em> entès com un tauler de <img src='http://s.wordpress.com/latex.php?latex=N%5E2%20%5Ctimes%20N%5E2&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='N^2 \times N^2' title='N^2 \times N^2' class='latex' /> caselles agrupades en blocs de <img src='http://s.wordpress.com/latex.php?latex=N%20%5Ctimes%20N&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='N \times N' title='N \times N' class='latex' /> (9&#215;9 caselles agrupades en blocs de 3&#215;3, en el nostre cas), es pot expressar com un problema de colorejat d&#8217;un graf, on cada casella seria un vèrtex del graf enumerat de la forma <img src='http://s.wordpress.com/latex.php?latex=%28x%2Cy%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='(x,y)' title='(x,y)' class='latex' /> (on <img src='http://s.wordpress.com/latex.php?latex=x%2C%20y%20%5Cin%20%5Cmathbb%7BN%7D%20%5Cmid%20x%20%5Cle%20N%5E2%20%5Cwedge%20y%20%5Cle%20N%5E2&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x, y \in \mathbb{N} \mid x \le N^2 \wedge y \le N^2' title='x, y \in \mathbb{N} \mid x \le N^2 \wedge y \le N^2' class='latex' />)¹ i on dos vèrtex <img src='http://s.wordpress.com/latex.php?latex=i%2C%20j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='i, j' title='i, j' class='latex' /> estarien units per una aresta si:</p>
<ul>
<li><img src='http://s.wordpress.com/latex.php?latex=x_i%20%3D%20x_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x_i = x_j' title='x_i = x_j' class='latex' /> (dues caselles d&#8217;una mateixa columna).</li>
<li><img src='http://s.wordpress.com/latex.php?latex=y_i%20%3D%20y_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='y_i = y_j' title='y_i = y_j' class='latex' /> (dues caselles d&#8217;una mateixa fila).</li>
<li><img src='http://s.wordpress.com/latex.php?latex=%5Clceil%20%5Cfrac%7Bx_i%7D%7BN%7D%20%5Crceil%20%3D%20%5Clceil%20%5Cfrac%7Bx_j%7D%7BN%7D%20%5Crceil%20%5Cwedge%20%5Clceil%20%5Cfrac%7By_i%7D%7BN%7D%20%5Crceil%20%3D%20%5Clceil%20%5Cfrac%7By_j%7D%7BN%7D%5Crceil&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\lceil \frac{x_i}{N} \rceil = \lceil \frac{x_j}{N} \rceil \wedge \lceil \frac{y_i}{N} \rceil = \lceil \frac{y_j}{N}\rceil' title='\lceil \frac{x_i}{N} \rceil = \lceil \frac{x_j}{N} \rceil \wedge \lceil \frac{y_i}{N} \rceil = \lceil \frac{y_j}{N}\rceil' class='latex' /> (dues caselles en un mateix bloc).</li>
</ul>
<p>Llavors, la solució seria assignar un color entre els <img src='http://s.wordpress.com/latex.php?latex=N%5E2&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='N^2' title='N^2' class='latex' /> possibles a cada vèrtex (un nombre de l&#8217;1 al 9 vaja) de manera que qualsevol aresta no tinga el mateix color en el seus dos extrems.</p>
<p>Doncs veges tu per on, aquest problema <strong>és un problema del tipus <a href="http://en.wikipedia.org/wiki/NP-complete" target="_blank">NP-Complet</a></strong>. Jo havia sentit parlar d&#8217;aquesta <a href="http://en.wikipedia.org/wiki/Complexity_class" target="_blank">classe de problemes</a> (per tot allò de <em><a href="http://en.wikipedia.org/wiki/P_%3D_NP_problem" target="_blank">P = NP</a>?</em>, un dels set problemes del mil·leni, la solució dels quals és premiada amb un milió de dòlars), però fins aquesta vesprada no sabia concretament que era un problema NP-Complet i tampoc estic segur de saber-ho ara, així que abans de contar-vos alguna bajanada us referencie a l&#8217;<a href="http://en.wikipedia.org/wiki/NP-complete" target="_blank">article de la Wikipedia</a>.</p>
<p>El que sí us sé dir és que, en poques a paraules, no es coneix un algorisme &#8220;eficient&#8221;, on eficient significa polinòmic (<img src='http://s.wordpress.com/latex.php?latex=O%28n%5Ek%29%20%5Cmid%20k%20%5Cin%20%5Cmathbb%7BN%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O(n^k) \mid k \in \mathbb{N}' title='O(n^k) \mid k \in \mathbb{N}' class='latex' />) per solucionar el problema. El que fa l&#8217;algorisme basat en <em>Backtracking</em> és explorar tot l&#8217;arbre de possibles solucions descartant aquelles que no complisquen les condicions del joc (descrites anteriorment).</p>
<p>Haurem de renunciar doncs, de moment, a trobar tots els possibles <em>sudokus</em>&#8230; Podríem seguir parlant de com, almenys, comptar quantes són aquestes solucions, però per això necessitaríem un apunt encara més llar i ja s&#8217;està fent tard i tampoc era eixe l&#8217;objectiu del post. Si us he despertat un poc l&#8217;interès i us ha picat el <em>cuquet friqui</em>, podeu visitar <a href="http://www.afjarvis.staff.shef.ac.uk/sudoku/" target="_blank">aquesta pàgina web</a> de Bertram Felgenhauer i Frazer Jarvis que dugueren endavant els càlculs.</p>
<p>&#8212;</p>
<p>¹ Pregue que disculpeu el formalisme d&#8217;algunes expressions, però aprofite l&#8217;apunt per provar que dóna de sí el plugin WP-Latex.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elvoldelhomeocell.net/archives/666/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

