Oi Cesar,
Eu sei disso. Não deixei claro, mas estava pensando na parte do processamento da matriz. Seria, talvez, um quarto item na sua lista. Nem sempre o programa aceita ou a pessoa sabe programar para "eliminar" (evitar que o computador reserve espaço de memória) para uma matriz da qual só lhe interessam poucas células, neste caso, só uma das partes triangulares sem a diagonal.
Posso ilustrar um pouco mais a importância dessa questão? Este problema, que simplificamos (distâncias euclidianas), fica maior quando consideramos que não existem ligações diretas (estradas) entre todos os pares de cidades. Aí o armazenamento dessa matriz cheia de zeros demanda cuidado, principalmente se for muito grande. Pode, também, não ser simétrica. No ambiente urbano, por exemplo, nem sempre a "distância" de i para j é a mesma de j para i.
Na minha área de trabalho (planejamento de transportes), algumas vezes a diagonal principal pode estar preenchida com valores diferentes de zero, se eu considerar a extensão média das viagens. Os nós da minha rede representam centróides de zonas (setores censitários do IBGE, por exemplo) e ocorrem viagens dentro das zonas.
Acima, coloquei distância entre aspas porque no meu caso, que trabalho com transportes, ela pode não ser representada pela extensão em km e sim pelo tempo em minutos, ou alguma misturas destes dois e/ou outros. A "distância" é expressada por um custo para percorrer determinado trecho da rede.
Espero ter esclarecido. Obrigado por corrigir a confusão que a minha mensagem possa ter causado.
Bom final de semana para todos.
Mário
2011/11/4 Cesar Rabak
<cesar.rabak@gmail.com>
Em 3/11/2011 23:31, Mario Azevedo escreveu:
A matriz será muito grande 5566 x 5566 = 30980356 elementos. Se cada
elemento for um número real, ele consumirá, no mínimo, 4 bytes de
memória, totalizando algo perto de 118 Mbytes. Não sei quais são os
limites, mas me parece que deve ficar difícil tratar de um "bicho" desse
tamanho.
Mario,
A matriz só teria esse tamanho se você considerar três coisas:
1) Que as distâncias de cada cidade à ela mesma é diferente de zero;
2) que as distâncias são arcos orientados; e
3) em cada sentido desses arcos as distâncias podem ser diferentes.
caso você levante essas restrições o número real de distâncias seria aquele que já postei anteriormente.
Deixo como exercício como armazenar os dados sem precisar de uma matriz para os dados redundantes :-)