alves077 Posted February 14, 2014 at 08:16 PM Report #545331 Posted February 14, 2014 at 08:16 PM Boa tarde, Estou a resolver um problema, acho que ja consegui chegar a solução que quero, mas acho que pode ser melhorada. Basicamente tenho uma árvore que percorro de forma recursiva, cada nó está numerado, não de forma sequencialmente e pode se repetir o mesmo número. Tem um limite dado, e tenho que contar se as folhas fazem parte de um conjunto de número previamente definido. Já consegui resolver o problema de forma simples, verifico todas as folhas percorrendo recursivamente, só que queria optimizar, não visitando todas as folhas, isto é não ter que verificar todas as possibilidades, alguma ideia como poderei descartar alguns ramos ? Pensei em guardar o caminho que estou a percorrer se aparecer algum igual não seguir, mas sinceramente não sei muito bem como fazer, só gastaria mais tempo a verificar se o caminho actual já foi pesquisado... alguem me consegue alguma dica como optimizar a pesquisa ? Obrigado pela ajuda, alves077
HappyHippyHippo Posted February 14, 2014 at 08:24 PM Report #545332 Posted February 14, 2014 at 08:24 PM se a árvore não está ordenada só tens uma solução : percorrer toda a árvore IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
alves077 Posted February 14, 2014 at 08:33 PM Author Report #545334 Posted February 14, 2014 at 08:33 PM (edited) Posso me ter explicado mal, mesmo não estando ordenada, e podendo repetir números, a relação dos nós é única. Isto é, se o nó 1 ramifica para 1,2, o nó esquerdo da raiz 1 será o 1 outra vez, logo o terceiro nível do lado esquerdo será (1,2) na mesma, logo existe aqui uma repetição, sendo que sei qual as folhas que interessam acho q se pode ignorar este tipo de ramos que não leva a lado nenhum. Só não sei ao certo onde posso tirar proveito de trabalho já realizado... Edited February 14, 2014 at 08:34 PM by alves077
HappyHippyHippo Posted February 14, 2014 at 08:37 PM Report #545337 Posted February 14, 2014 at 08:37 PM Posso me ter explicado mal mas eu não mas caso seja de difícil leitura deixo novamente o comentário: se a árvore não está ordenada só tens uma solução : percorrer toda a árvore explica lá como é que podes supor que valores existem nos ramos se esta não está ordenada ? e por consequente, como podes saber se estes valores estão dentro do teu grupo ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
alves077 Posted February 14, 2014 at 09:25 PM Author Report #545340 Posted February 14, 2014 at 09:25 PM Ok, na medida que não se consegue prever o futuro percebo o que dizes, mas mesmo sabendo que a relação é única e que a árvore tem um tamanho pré-definido não conseguirei aproveitar trabalho já realizado?
HappyHippyHippo Posted February 14, 2014 at 10:11 PM Report #545347 Posted February 14, 2014 at 10:11 PM epa .. não sei porque continuas a teimar na expressão "relação única", eu até acho que nem tu deves saber o que estás a dizer ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
alves077 Posted February 14, 2014 at 10:18 PM Author Report #545348 Posted February 14, 2014 at 10:18 PM (edited) O que quero dizer é que determinado número terá sempre os mesmos dois "filhos". Um exemplo de onde queria chegar, se o tamanho da minha árvore for 3 níveis, sabendo que 1 tem como filhos 1 e 2, e que nem 1 nem o 2 as folhas pretendidas, poderia não chamar o 3º nivel a árvore do lado esquerdo, porque posso saber que já analisei o 1 e o 2 e não são os pretendidos, e como a partir do 1 só consigo chegar ao 1 e 2, e que número máximo de níveis é 3, é uma ramificação desnecessária. Edited February 14, 2014 at 11:28 PM by alves077
HappyHippyHippo Posted February 15, 2014 at 05:05 AM Report #545360 Posted February 15, 2014 at 05:05 AM O que quero dizer é que determinado número terá sempre os mesmos dois "filhos". E que tomam is ramos do valor 2? E do 3? E do 28462? E do 524372645? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
alves077 Posted February 15, 2014 at 10:50 AM Author Report #545364 Posted February 15, 2014 at 10:50 AM Sim, eu percebo o que dizes, estava só a tentar perceber se posso cortar ou a aproveitando alguma coisa da recursividade, por exemplo guardo o caminho por onde vou passando, assim se estiver a seguir esse caminho e conhecer o tamanho máximo sabia q esse caminho não valeria a pena. Mas mais do que não ir a ramos, o que pretendia era mesmo aproveitar trabalho feito, se é que me percebem, se já verifiquei determinado tipo de combinações podia guardar em memoria, mas.. sinceramente não sei bem como fazer, e se faz algum sentido o que estou a dizer... só estou tentar perceber onde posso melhorar...
HappyHippyHippo Posted February 15, 2014 at 01:05 PM Report #545378 Posted February 15, 2014 at 01:05 PM e se faz algum sentido o que estou a dizer nop, não faz IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
alves077 Posted February 15, 2014 at 03:12 PM Author Report #545382 Posted February 15, 2014 at 03:12 PM (edited) Ok, então se calhar vou desistir da minha ideia de optimizar isto... Será que ganho alguma coisa em vez de percorrer a árvore ter uma matriz de adjacência ? Não sei se fiz me entender, mas os números são sequenciais, só podem estar ligados a um qualquer, mas são sequenciais. Isto é se tiver uma árvore de tamanho 5, quer dizer que os nós da árvore são compostas pelo alfabeto = 1 a 5. Obrigado pela atenção, alves077 Edited February 15, 2014 at 03:44 PM by alves077
HappyHippyHippo Posted February 15, 2014 at 03:47 PM Report #545386 Posted February 15, 2014 at 03:47 PM Ok, então se calhar vou desistir da minha ideia de optimizar isto... existem hipóteses de optimização, pensa bem no que podes fazer. claro que passa sempre ou por ordenar a árvore ou estruturas auxiliares ... Será que ganho alguma coisa em vez de percorrer a árvore ter uma matriz de adjacência ? talvez em facilidade na criação do código, mas por outro lado tens a criação de uma estrutura auxiliar extra que aumenta quadraticamente com o número de nós da árvore) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
alves077 Posted February 15, 2014 at 04:01 PM Author Report #545390 Posted February 15, 2014 at 04:01 PM Pois, mas se não passa por guardar alguns caminhos já realizados para não fazer o mesmo, não sei muito por onde optimizar. Mas tiver a matriz, supostamente já não preciso da árvore em si... Não podes só dar uma dicas que caminho devo seguir? Já fiz várias tentativas mas só pioro o rendimento..
HappyHippyHippo Posted February 15, 2014 at 11:57 PM Report #545440 Posted February 15, 2014 at 11:57 PM ordena a árvore ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
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