Legal a discussão. <div><br></div><div>Desculpem mais uma vez. Para o tipo de matriz em foco, eu não posso colocar zeros quando não existem as ligações. Matriz errada novamente. Estava pensando na matriz de incidência, cujas células são preenchidas com 1, caso exista a ligação, e 0 quando não existe. Esta seria a representação da rede. Para o cálculo, normalmente coloca-se as distâncias reais, quando existe a ligação direta, e um número muito grande (99999, por exemplo, para representar o infinito) quando ela não existe. Isso, é claro, vai depender da estrutura de dados e dos algoritmos utilizados.</div>
<div><br></div><div>O exemplo que citei sobre valores diferentes de zero na diagonal, foi um pouco fora do objetivo da discussão, mas serve para adicionar um outro ponto que pode ser tratado com o uso de uma matriz. Geometricamente não faz sentido, mas logicamente, porque não? Seriam atividades que ocorrem no nó da rede. Eu posso trabalhar com áreas (bairros de uma cidade, por exemplo) que são representadas, para efeitos de montar a rede, por pontos localizados nos seus centros geométricos (centróides). Eu tenho viagens que ocorrem entre áreas, que simplifico nas ligações entre centróides, e viagens que ocorrem dentro da área, que posso armazenar na diagonal da matriz. Esse arranjo não é comum, mas não me parece incorreto. Bom, mas isso foge do objetivo da conversa.</div>
<div><br></div><div>Se o objetivo é ter um banco de dados com todas as distâncias, acho que pode-se montar uma rede e armazenar as informações dos pares para os quais existam ligações diretas. Posteriormente, pode-se usar um algoritmo de caminhos mínimos para encontrar a menor distância e a rota (cidades por onde passa) entre essas cidades. Nunca trabalhei com uma rede tão grande para esse tipo de aplicação, mas acredito que a resposta saia em segundos ou frações.</div>
<div><br></div><div>Não sei qual é o objetivo do Leandro ao montar essa matriz, mas essa "brincadeira" pode ficar interessante. Você pode acrescentar links com diferentes modos de transportes. Se for para transportar pessoas, pode-se usar automóveis, ônibus, trens, barcos, aviões, ... São distâncias (km) diferentes, custos (R$) diferentes, tempos (horas) diferentes. Na hora de gerar a solução do "menor caminho" pode-se escolher o mais curto, o mais barato ou o mais rápido. É algo que o Google Maps e serviços similares fazem.</div>
<div><br></div><div>Infelizmente, ainda não usei o R para esse tipo de aplicação. Por isso, posso estar "chovendo no molhado" na opinião de alguns de vocês. Algumas vezes cubro tópicos já presentes em mensagens anteriores. É só para dar uma certa continuidade ao texto. </div>
<div><br></div><div>Abs.</div><div><br>Mário</div><div><br><div class="gmail_quote">2011/11/5 Cesar Rabak <span dir="ltr"><<a href="mailto:cesar.rabak@gmail.com">cesar.rabak@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Em 5/11/2011 12:44, Mario Azevedo escreveu:<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Oi Cesar,<br>
<br>
Eu sei disso. Não deixei claro, mas estava pensando na parte do<br>
processamento da matriz. Seria, talvez, um quarto item na sua lista.<br>
Nem sempre o programa aceita ou a pessoa sabe programar para<br>
"eliminar" (evitar que o computador reserve espaço de memória) para<br>
uma matriz da qual só lhe interessam poucas células, neste caso, só<br>
uma das partes triangulares sem a diagonal.<br>
<br>
</blockquote></div>
Sim. Esse é um tipo de conhecimento mais específico.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Posso ilustrar um pouco mais a importância dessa questão? Este<br>
problema, que simplificamos (distâncias euclidianas), fica maior<br>
quando consideramos que não existem ligações diretas (estradas) entre<br>
todos os pares de cidades.<br>
</blockquote>
<br></div>
Corretíssimo. Aliás isso enseja uma discussão entre as assim chamadas<br>
(pelo menos assim era quando estudei isso) distâncias geográficas versus<br>
distâncias geométricas.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Aí o armazenamento dessa matriz cheia de zeros demanda cuidado,<br>
principalmente se for muito grande.<br>
</blockquote>
<br></div>
Na verdade para essa matriz (ou objeto de armazenagem apropriado) ser<br>
usável do ponto de vista matemático, nos pares de pontos (cidades) que<br>
não haja caminho direto você precisaria colocar ou algo entendível pelo<br>
R como +Inf ou um código especial para sinalizar esse caso. Armazenar<br>
_zeros_ nessas posições seria um erro crasso (posso escrever ex-cátedra).<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Pode, também, não ser simétrica. No ambiente urbano, por exemplo, nem<br>
sempre a "distância" de i para j é a mesma de j para i.<br>
</blockquote>
<br></div>
Esse caso está coberto na minha discussão, mas imagino que para<br>
distâncias entre cidades esse problema não seja tão influente (embora<br>
reconheço que para conexão entre certas cidades às vezes é necessário<br>
passar "por dentro de alguma outra".<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Na minha área de trabalho (planejamento de transportes), algumas<br>
vezes a diagonal principal pode estar preenchida com valores<br>
diferentes de zero, se eu considerar a extensão média das viagens. Os<br>
nós da minha rede representam centróides de zonas (setores<br>
censitários do IBGE, por exemplo) e ocorrem viagens dentro das<br>
zonas.<br>
</blockquote>
<br></div>
Não entendi bem o quê você quer dizer com "extensão média de viagens".<br>
SE a granularidade da sua matriz for uma subdivisão de um município,<br>
obviamente é a distância entre essas subunidades que se deve discutir,<br>
senão entramos em inconsistências tanto lógicas como matemáticas.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Acima, coloquei distância entre aspas porque no meu caso, que<br>
trabalho com transportes, ela pode não ser representada pela extensão<br>
em km e sim pelo tempo em minutos, ou alguma misturas destes dois<br>
e/ou outros. A "distância" é expressada por um custo para percorrer<br>
determinado trecho da rede.<br>
</blockquote>
<br></div>
OK. Eu tenho bastante experiência com esse conceito¹!<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Espero ter esclarecido. Obrigado por corrigir a confusão que a minha<br>
mensagem possa ter causado.<br>
<br>
</blockquote></div>
Esclarecendo, vamos ajudando o OP a encontrar uma solução para um<br>
problema que deve ser não só dele como de muita gente ><br>
<br>
[]s<div class="im"><br>
<br>
-- <br>
Cesar Rabak<br>
GNU/Linux User 52247.<br>
Get counted: <a href="http://counter.li.org/" target="_blank">http://counter.li.org/</a><br>
<br></div>
[1] <a href="http://www.teses.usp.br/teses/disponiveis/3/3141/tde-24062005-190210/" target="_blank">http://www.teses.usp.br/teses/<u></u>disponiveis/3/3141/tde-<u></u>24062005-190210/</a><div class="HOEnZb"><div class="h5">
<br>
______________________________<u></u>_________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/<u></u>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-<u></u>guia</a>) e forneça código mínimo reproduzível.<br>
</div></div></blockquote></div><br></div>