Ir para o conteúdo
alligator

Algoritmo Calcular linhas/colunas matriz

Mensagens Recomendadas

alligator

Boas , preciso de ajuda num codigo/pseudo codigo , responsavel por trocar posiçoes de uma matriz de modo a que :

A soma de cada linha e de cada coluna sejam iguais ! Ou seja todas as linhas e todas as colunas possuem o mesmo somatorio.

Eu sei que os numeros que preenchem a matriz , dão para fazer tal coisa , uma vez que foram calculados de forma a tal !

Penso que o truque esteja em fazer trocas sucessivas de 2 elementos , e calcular o somatorio de cada linha e trocar um valor da linha com maior soma com a de menor ! Depois das linhas certas ( mesmo valor ) , acertamos as colunas da mesma forma !

O que acham !? Preciso mesmo de ajuda !

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alligator

É uma hipotesse bem tramada ,mas é uma possibilidade !  Alguem tem por ai esse codigo ja realizado, para poder experimentar ? ?   

  Contudo para uma matriz 3 x 3 , sao cerca de 362880 combinações , certo ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

1) a soma de cada linha (e coluna) tem de ser igual a soma dos numeros todos a dividir pelo numero de linhas (ou colunas).


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Contudo para uma matriz 3 x 3 , sao cerca de 362880 combinações , certo ?

estas preocupado com o numero de combinações existentes ????

afinal os computadores foram criados para que ???


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alligator

Nao percebi a tua resposta pmg ! Podes explicar o que querias dizer ! é relativo ao algoritmo de força bruta ( todas as hipotesses ) !

Alguem me pode ajudar com esta situação das trocas dos elementos ! ?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

A minha resposta serve somente para saber a soma pretendida antes. Se, usando seja que metodo for, a soma duma linha (ou coluna) nao for a valor encontrado, essa "solucao" nao serve.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
taviroquai

Boas , preciso de ajuda num codigo/pseudo codigo , responsavel por trocar posiçoes de uma matriz de modo a que :

A soma de cada linha e de cada coluna sejam iguais ! Ou seja todas as linhas e todas as colunas possuem o mesmo somatorio.

Eu sei que os numeros que preenchem a matriz , dão para fazer tal coisa , uma vez que foram calculados de forma a tal !

Penso que o truque esteja em fazer trocas sucessivas de 2 elementos , e calcular o somatorio de cada linha e trocar um valor da linha com maior soma com a de menor ! Depois das linhas certas ( mesmo valor ) , acertamos as colunas da mesma forma !

O que acham !? Preciso mesmo de ajuda !

Acho que faltou especificares uma regra no enuciado do teu problema :cheesygrin:

Apenas pelo que disseste, isto serve:

1 1 1

1 1 1

1 1 1

Soma é igual em todas as colunas e linhas = 3 lol

Mas deduzo que a regra que falta é não poder repetir algarismos... agora, em cada linha? em cada coluna? ou na matriz toda?

Depois de responderes a isto a solução pode reduzir bastantes combinações e ser mais facil pensar num algoritmo para resolver ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alligator

Obrigado pela atenção.

Sim , sao números diferentes para cada posição !

E esses números são gerados através de uma formula que assegura que o problema tem solução !

A soma de cada coluna , cada linha e diagonais , tem de ser igual !  Não pode haver numeros repetidos na matriz toda , até porque os valores a ocupar sao gerados sequencialmente !

Faltou ainda referir que , eu sei previamente o resultado da solução ! Ou seja sei que valor cada deve dar as somas !

Para uma matriz 3x3 :

Soma L0 = Soma L1 = Soma L2 = Soma C0 = Soma C1 = Soma C2 = Soma Diag P = Diag Sec = SOLUÇão

Alguma sugestão !? Eu não preciso da " papa feita " , apenas queria chegar a uma possivel solução e testa la ! Pode ser mesmo em Pseudo - Codigo !

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alligator

A minha resposta serve somente para saber a soma pretendida antes. Se, usando seja que metodo for, a soma duma linha (ou coluna) nao for a valor encontrado, essa "solucao" nao serve.

Sim , entendo ! Mas acho que o facto de realizar uma troca , e o resultado nao for o pretendido( solução )  , não significa que numa futura troca nao vai acertar esse resultado ! Certo ? 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

No que toca ao algoritmo de troca de posições acho um bocado complicado que se arranje um que tenda para a solução.

No entanto no site da wikipedia existem vários algoritmos para a arranjar a solução do problema:


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alligator

Aqui na minha opinião o difícil é a generalidade do algoritmo , uma vez que tem de trabalhar para qualquer matriz !

Talvez importante referir , que o algoritmo pode ser uma aproximação , ou seja , pode nao calcular tudo na totalidade , mas se melhorar ja é bastante positivo .

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.