Podem-me indicar boas apostilas para eu aprender a utilizar árvores e grafos em java?
Eu agradecia
Então não há nada na internet que me ajude a aprender árvores e grafos?
Precisava mesmo de aprender esta matéria, uma ajudinha vinha mesmo a calhar.
http://www.ecp6.jussieu.fr/pageperso/bondy/bondy.html
http://www.math.uni-hamburg.de/home/diestel/books/graph.theory/
O que eu pretendia era explicado em java.
Vou dar um exemplo.
Ah, certo - você queria algumas implementações de árvores e grafos (já que isso não existe pronto no JDK).
Nós pusemos algumas bibliotecas (cujo código-fonte está disponível, é claro, pois são open-source) para você dar uma olhada nelas.
Acho que deve existir algum livro (alguma coisa como “Estruturas de Dados em Java” ou coisa parecida) que tenha uma explicação decente.
cara,
se você quer uma dica de livro, tem esse que é muito bom
Título: Estrutura de Dados e Algoritmos em Java
Autor: Michael T. Goodrich, Roberto Tamassia
Editora: Bookman
Assunto: Informatica-Programaçao
ISBN: 9788560031504
Idioma: Português
Número de Páginas: 600
http://www.americanas.com.br/AcomProd/1472/667991 : desculpe o link de “propaganda”, mas não achei em outro lugar
E… nesse link, que é citado no livro, como uma bibliografia complementar, entra e dá uma olhada: http://java.datastructures.net/
principalmente na seção “Software” > “Code Fragments”
Este livro e demasiado complicado, não consigo perceber através dele.
Não me podem indicar algo mais fácil de entender?
cmcl, o estudo de estrutura de dados não é nada fácil, tambpem estou tendo problemas sérios, mas com muito esforço podemos conseguir.
Semana passada postei uma dúvida de algorítmos de pesquisa e remoção em árvores binárias, mas em C. Consegui ajuda do pessoal do fórum para implementar o algorítmo de pesquisa, mas o de exclusão não.
Incrível como esses livros de estrutura de dados em C são todos umas verdadeiras porcarias, só dão exemplos com inteiros, quando você precisa colocar em sua estrutura um campo tipo String (char em C), a coisa fica preta, pois tem de passar o ponteiro de ponteiro. Isso nenhum livro explica, já comprei 3 e os 3 são umas porcarias.
No livro que tenho há um método de remoção de elementos em árvores binárias de busca em C, mas usando inteiros, igual esse aí do Wikipédia, mas eu digo, talvez esse algorítmo não funcione, pois, ao fazer a comparação se um campo é maior do que o passado para o método, ele está comparando o endereço de memória e não o conteúdo da variável. Tive esse problema em minha árvore com campo tipo char, onde deveria usar a função strcmp para fazer a comparação. O professor me ajudou nisso e disse que eu estava comparando os ponteiros e não o conteúdo dos campos. Se esse problema ocorre com char, pode ocorrer com inteiros também, pois em ambos os casos está se comparando se um ponteiro é maior do que o outro e não o conteúdo Wikipédia pode ser bom, mas tome cuidado !
Sobre estrutura de dados em Java, talvez o livro do Deitel possa ajudar.
É que você não consegue abstrair o conceito de comparação.
Se no livro ele usa inteiros, e a comparação é feita com “x<y” ou “x==y”, ao usar “char *” no C (ou std::string no C++) você tem de usar, respectivamente, “strcmp(x,y) < 0” ou “strcmp(x,y) == 0” (no C) ou então, no C++, “x<y” ou “x == y”.
Mas a idéia é que “uma coisa é menor que a outra” ou “uma coisa é igual à outra”, não “uma coisa >< outra” ou “uma coisa == outra”.
Se mudar a linguagem, as coisas param de funcionar? Não, porque os algoritmos não dependem de linguagem; eles são implementados em determinada linguagem.
Este livro é de graça e tem estruturas de dados em Java.
http://www.brpreiss.com/books/opus5/html/book.html
Exemplo (grafos):
http://www.brpreiss.com/books/opus5/html/page519.html#SECTION0017000000000000000000