<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Dijkstra, Orkut e Cursinho</title>
	<atom:link href="http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/</link>
	<description>blog dos desenvolvedores da Caelum</description>
	<lastBuildDate>Thu, 09 Sep 2010 00:28:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Paulo Silveira</title>
		<link>http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/comment-page-1/#comment-19</link>
		<dc:creator>Paulo Silveira</dc:creator>
		<pubDate>Mon, 21 Aug 2006 21:47:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/#comment-19</guid>
		<description>É. Se tivermos 1 milhão de usuários, seriam 1 trilhão de linhas na tabela associativa do auto relacionamento. Não há chances. Creio que eles façam um cache LRU, por isso as vezes o orkut já mostra a distância, as vezes ele demora, porque fez uma requisição AJAX e realiza a busca em largura.

Repare que mesmo a busca em largura, para buscar alguém que está a 5 de distância de você, e considerando uma média de 100 amigos por pessoa, essa busca realizaria 100^5 = 10,000,000,000... 10 bilhões de comparações. Por isso o orkut só te mostra o caminho de quem está no máximo a 3 de distância, para realizar &lt;i&gt;apenas&lt;/i&gt; 1 milhão de comparações. 

Se você pesquisar por grafos online/dinâmicos, vai ver que já existem estruturas de dados para que ele consiga modificar o grafo e atualizar as distâncias de maneira mais rápida, sem ter de pesquisar novamente!</description>
		<content:encoded><![CDATA[<p>É. Se tivermos 1 milhão de usuários, seriam 1 trilhão de linhas na tabela associativa do auto relacionamento. Não há chances. Creio que eles façam um cache LRU, por isso as vezes o orkut já mostra a distância, as vezes ele demora, porque fez uma requisição AJAX e realiza a busca em largura.</p>
<p>Repare que mesmo a busca em largura, para buscar alguém que está a 5 de distância de você, e considerando uma média de 100 amigos por pessoa, essa busca realizaria 100^5 = 10,000,000,000&#8230; 10 bilhões de comparações. Por isso o orkut só te mostra o caminho de quem está no máximo a 3 de distância, para realizar <i>apenas</i> 1 milhão de comparações. </p>
<p>Se você pesquisar por grafos online/dinâmicos, vai ver que já existem estruturas de dados para que ele consiga modificar o grafo e atualizar as distâncias de maneira mais rápida, sem ter de pesquisar novamente!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fernando Boaglio</title>
		<link>http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/comment-page-1/#comment-18</link>
		<dc:creator>Fernando Boaglio</dc:creator>
		<pubDate>Mon, 21 Aug 2006 21:39:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/#comment-18</guid>
		<description>Legal o artigo Paulo, alguns links pra complementar:

http://www.unf.edu/~wkloster/foundations/DijkstraApplet/DijkstraApplet.htm
http://www.cs.sunysb.edu/~skiena/combinatorica/animations/dijkstra.html
http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

Fico curioso como isso é armazenado... se fosse no mundo relacional,uma tabela com auto-relacionamento seria suficiente, mas na prática para gerar a rede inteira de uma pessoa com muitas pessoas seria meio lento ou insano...</description>
		<content:encoded><![CDATA[<p>Legal o artigo Paulo, alguns links pra complementar:</p>
<p><a href="http://www.unf.edu/~wkloster/foundations/DijkstraApplet/DijkstraApplet.htm" rel="nofollow">http://www.unf.edu/~wkloster/foundations/DijkstraApplet/DijkstraApplet.htm</a><br />
<a href="http://www.cs.sunysb.edu/~skiena/combinatorica/animations/dijkstra.html" rel="nofollow">http://www.cs.sunysb.edu/~skiena/combinatorica/animations/dijkstra.html</a><br />
<a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm" rel="nofollow">http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm</a></p>
<p>Fico curioso como isso é armazenado&#8230; se fosse no mundo relacional,uma tabela com auto-relacionamento seria suficiente, mas na prática para gerar a rede inteira de uma pessoa com muitas pessoas seria meio lento ou insano&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paulo Silveira</title>
		<link>http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/comment-page-1/#comment-17</link>
		<dc:creator>Paulo Silveira</dc:creator>
		<pubDate>Mon, 21 Aug 2006 14:45:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/#comment-17</guid>
		<description>É verdade. Mas é um overkill escrever dijkstra para resolver uma busca em largura. Um jeito mais elegante é você criar uma busca onde os nós vão sendo inseridos em uma &lt;code&gt;java.util.Collection&lt;/code&gt;. Aí, dependendo da implementação usada, sai algo diferente:

&lt;code&gt;java.util.ArrayList&lt;/code&gt; - vai gerar uma busca em largura
&lt;code&gt;java.util.Stack&lt;/code&gt; - vai gerar uma busca em profundidade
&lt;code&gt;java.util.PriorityQueue&lt;/code&gt;, onde a prioridade é o peso do caminho até aquele nó - vai gerar Dijkstra</description>
		<content:encoded><![CDATA[<p>É verdade. Mas é um overkill escrever dijkstra para resolver uma busca em largura. Um jeito mais elegante é você criar uma busca onde os nós vão sendo inseridos em uma <code>java.util.Collection</code>. Aí, dependendo da implementação usada, sai algo diferente:</p>
<p><code>java.util.ArrayList</code> &#8211; vai gerar uma busca em largura<br />
<code>java.util.Stack</code> &#8211; vai gerar uma busca em profundidade<br />
<code>java.util.PriorityQueue</code>, onde a prioridade é o peso do caminho até aquele nó &#8211; vai gerar Dijkstra</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Oberon</title>
		<link>http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/comment-page-1/#comment-16</link>
		<dc:creator>Oberon</dc:creator>
		<pubDate>Mon, 21 Aug 2006 14:36:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/#comment-16</guid>
		<description>Beeemm, vc não mentiu.. taaaanto. Vc pode considerar que as arestas não tenham peso na busca em largura.... ou considerar que todas tenham o mesmo peso como uma &quot;simplificação&quot; de um problema maior (o citado). HAEhaeheahaehhaeea

Segundo o Thiago, na matemática é difícil haver uma situação onde realmente vc esteja mentindo.

[]´s</description>
		<content:encoded><![CDATA[<p>Beeemm, vc não mentiu.. taaaanto. Vc pode considerar que as arestas não tenham peso na busca em largura&#8230;. ou considerar que todas tenham o mesmo peso como uma &#8220;simplificação&#8221; de um problema maior (o citado). HAEhaeheahaehhaeea</p>
<p>Segundo o Thiago, na matemática é difícil haver uma situação onde realmente vc esteja mentindo.</p>
<p>[]´s</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luiz Aguiar</title>
		<link>http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/comment-page-1/#comment-15</link>
		<dc:creator>Luiz Aguiar</dc:creator>
		<pubDate>Mon, 21 Aug 2006 13:31:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.caelum.com.br/2006/08/21/dijkstra-orkut-e-cursinho/#comment-15</guid>
		<description>Puxa já encaminhei essa frase pra todos os meus primos... heheh... tomara que eles parem de me pedir pra arrumar o Windows deles agora heheh :)</description>
		<content:encoded><![CDATA[<p>Puxa já encaminhei essa frase pra todos os meus primos&#8230; heheh&#8230; tomara que eles parem de me pedir pra arrumar o Windows deles agora heheh <img src='http://blog.caelum.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
