xDarkLink Posted February 13, 2013 at 12:19 AM Report #495054 Posted February 13, 2013 at 12:19 AM Boa noite pessoal, precisava imenso da vossa ajuda, não estou a ver como posso equiparar matrizes de modo a saber se elas têm o mesmo padrão de uma maneira dinâmica, porque eu nunca vou saber o conteúdo. Talvez seja mais fácil eu explicar aqui com um exemplo: Imaginem estas duas matrizes Matriz 1: A | B p | c Matriz 2: B | C c | x Estas duas matrizes seriam equivalentes porque seguem o padrão, o padrão está sempre na primeira linha da matriz, e nas linhas de baixo o "dito" conteúdo. O complicado aqui é, quando existem letras repetidas (neste caso aqui B) o conteúdo (linhas de baixo) têm de ser iguais, mas nos outros casos (A e C) diferente de todas as outras.. Fazer isto com performance, têm alguma ideia? Obrigado desde já 😉
HappyHippyHippo Posted February 13, 2013 at 12:32 AM Report #495057 Posted February 13, 2013 at 12:32 AM podes se mais explícito no que é para ser realizado ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
xDarkLink Posted February 13, 2013 at 11:28 AM Author Report #495080 Posted February 13, 2013 at 11:28 AM (edited) Quero desde já agradecer por te disponibilizares a responder. Posso pois, a questão é a seguinte, imagina uma acção com uma série de pré-condições necessárias para a sua execução. Exemplo:acção: andar A B C (que siginifica andar o objecto A de B para C). pré-condições da acção de cima: corpoAndante A e parado A e movimento B C (que significa que A é um corpo andante, que o mesmo está parado, e B para C é um movimento válido). A questão aqui é que eu vou ter numa "base de dados" as mesmas condições mas para a acção ser possível tem que verificar aquelas condições todas conforme as variáveis, imagina esta "base de dados". corpoAndante X parado Y movimento P Q Eu aqui não posso executar a acção porque não esta conforme o padrão, neste caso o que está a falhar no padrão, é apenas a variável de parado, tinha que ser igual à variável em corpoAndante, ou então existir um corpoAndante Y. Eu pensei em usar matrizes e depois verificar os padrões, mas não serão tantas condições a verificar? é que existem várias relações, por exemplo, neste caso, as váriaveis em movimento têm que ser diferentes das usadas em corpoAndante e parado. Eu não sei se já trabalhaste com prolog, mas isto em prolog era bastante fácil, porque existe o mecanismo de emparelhamento de variáveis para que um determinado predicado seja válido. Obrigado desde já novamente, espero ter sido claro 🙂 Edited February 13, 2013 at 11:28 AM by xDarkLink
HappyHippyHippo Posted February 13, 2013 at 11:37 AM Report #495083 Posted February 13, 2013 at 11:37 AM sim, já programei em prolog, mas foi p'rai à uma década, no entanto a resolução em prolog e a de java são completamente diferentes primeiro de tudo, esquece matrizes para resolver isso, é complicar tudo. a melhor solução seria teres uma lista de adjacências das posições, no entanto, parece que é exactamente isso que tens na base de dados. só necessitas de pesquisar se existe a aresta que pretendes (de A para B) nota : para a próxima, tenta ser mais claro no que escreves porque continua a ser muito abstracto para se perceber correctamente IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
xDarkLink Posted February 13, 2013 at 11:58 AM Author Report #495087 Posted February 13, 2013 at 11:58 AM Lista de adjacências? Tu estás a dizer algo do género: para cada acção ter por exemplo uma lista com as respectivas relações entre as variáveis das pré-condições. E depois verificar se para um certo par de condições fazer a lista de relações para esse par e verificar se a lista de relações é a mesma. Acho que já tenho uma vaga ideia de como me orientar. Obrigado 😉
xDarkLink Posted February 13, 2013 at 12:24 PM Author Report #495098 Posted February 13, 2013 at 12:24 PM Ei já agora, aproveitar o tópico, sabes se já existe alguma classe do java implementada de modo a que receba um conjunto de objectos e faça todas as combinações possíveis? Tenho andado de volta deste problema deste ontem e também não estou a chegar lá. Imagina que quero todas as combinações da conjunção ( carro ? e aviao ? ) onde o ponto de interrogação significa que pode ser qualquer um. Imaginando que tenho esta base de dados: carro A carro B aviao C As combinações possíveis seriam: ( carro A e aviao C ) e ( carro B e aviao C ). Mas isto para uma base de dados pequena é fácil, agora para uma base de dados grande, é mais complexo o algoritmo. Talvez exista algo do java já feito, e eu tenha só que implementar alguma interface? Alguma ajuda aqui ? Obrigado desde já HappyHippyHippo 😉
HappyHippyHippo Posted February 13, 2013 at 12:30 PM Report #495101 Posted February 13, 2013 at 12:30 PM responde-me só a esta questão : a tua base de dados não é SQL ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
xDarkLink Posted February 13, 2013 at 12:34 PM Author Report #495102 Posted February 13, 2013 at 12:34 PM Não, nada disso. Eu disse base de dados num sentido lado, não tem nada a ver com uma base dados. É uma lista de literais. e cada literal tem dois atributos um nome (que neste caso é carro, ou aviao) e um vector de string que são são os argumentos ( [a, b] ) No exemplo que te dei são três objectos, três literais. carro A (nome = "carro" , vars [] = {A} ) carro B (nome = "carro" , vars [] = {B} ) aviao C (nome = "aviao" , vars [] = {C} ) Estás a ver a coisa? Obrigado novamente 😉
HappyHippyHippo Posted February 13, 2013 at 12:48 PM Report #495106 Posted February 13, 2013 at 12:48 PM então a única coisa que necessitas é percorrer a lista de argumentos verificando se existe a pretendida ({A,B} => de A para B), isto sobre o objecto (carroA/carroB/aviaoC) afactado IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
xDarkLink Posted February 13, 2013 at 12:54 PM Author Report #495108 Posted February 13, 2013 at 12:54 PM Exacto é isso, obrigado Happy por te teres disponibilizado a ajudar 😉 Fico muito grato, abraço 😉
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now