Hipster4j

Biblioteca de busca heurística lixeira e potente para Java e Android

Unha potente e amigable biblioteca de busca heurística implementada en Java.

Que é Hipster4j?

O obxectivo de Hipster4j é proporcionar unha biblioteca Java fácil de usar, pero potente e flexible, con seguridade de tipos para a busca heurística. Hipster baséase nun modelo flexible con operadores xenéricos que permiten reutilizar e cambiar o comportamento dos algoritmos con moita facilidade. Os algoritmos tamén están implementados de forma iterativa, evitando a recursividade. Isto ofrece moitas vantaxes: control total sobre a busca, acceso aos elementos internos durante a execución ou unha mellor e máis clara escalabilidade para espazos de busca grandes mediante o uso da memoria do heap.

Podes usar Hipster4j para resolver desde problemas sinxelos de busca en grafos ata problemas máis avanzados de busca en espazos de estados, nos que o espazo de estados é complexo e os pesos non son simplemente valores double, senón custos definidos a medida.

Funcionalidades

A versión actual da biblioteca inclúe algúns algoritmos de busca moi coñecidos e amplamente utilizados. Estamos traballando para engadir máis algoritmos en breve:

  • Algoritmos de busca:
  • Busca non informada:
  • DFS: busca en profundidade.
  • BFS: busca en amplitude.
  • Algoritmo de Dijkstra.
  • Bellman-Ford.
  • Busca informada:
  • A estrela (A*).
  • IDA estrela (IDA), A con profundización iterativa.
  • AD estrela (AD): A dinámico en calquera momento.
  • Busca local:
  • Hill-Climbing.
  • Enforced-Hill-Climbing.
  • Busca multiobxectivo
  • Algoritmo LS multiobxectivo. Artigo orixinal: Martins, E. D. Q. V., & Santos, J. L. E. (1999). "The labeling algorithm for the multiobjective shortest path problem". <i>Departamento de Matematica, Universidade de Coimbra, Portugal, Tech. Rep. TR-99/005</i> (consulta un exemplo)
  • Adaptadores de terceiros:
  • Adaptador de Java Universal/Graph (JUNG).

Se non atopas o algoritmo ou a funcionalidade que buscas, considera contribuír a Hipster!. Podes abrir unha incidencia ou, mellor aínda, facer un fork deste repositorio e crear unha solicitude de integración coa túa contribución.

Que vén despois?

Se queres aprender a resolver un problema mediante a busca con Hipster, consulta a wiki e a documentación JavaDoc. Tamén che recomendamos consultar esta presentación para unha introdución rápida.