Hipster4j
Biblioteca ligera y potente de búsqueda heurística para Java y Android
Una potente y amigable biblioteca de búsqueda heurística implementada en Java.
¿Qué es Hipster4j?
El objetivo de Hipster4j es proporcionar una biblioteca Java fácil de usar, pero potente y flexible, con seguridad de tipos para la búsqueda heurística. Hipster se basa en un modelo flexible con operadores genéricos que permiten reutilizar y cambiar el comportamiento de los algoritmos con mucha facilidad. Los algoritmos también están implementados de forma iterativa, evitando la recursividad. Esto ofrece muchas ventajas: control total sobre la búsqueda, acceso a los elementos internos durante la ejecución o una mejor y más clara escalabilidad para grandes espacios de búsqueda mediante el uso de la memoria del heap.
Puedes usar Hipster4j para resolver desde problemas sencillos de búsqueda en grafos hasta problemas más avanzados de búsqueda en espacios de estados, en los que el espacio de estados es complejo y los pesos no son simplemente valores double, sino costes definidos a medida.
Características
La versión actual de la biblioteca incluye algunos algoritmos de búsqueda muy conocidos y ampliamente utilizados. Estamos trabajando para añadir más algoritmos pronto:
- Algoritmos de búsqueda:
- Búsqueda no informada:
- DFS: búsqueda en profundidad.
- BFS: búsqueda en anchura.
- Algoritmo de Dijkstra.
- Bellman-Ford.
- Búsqueda informada:
- A estrella (A*).
- IDA estrella (IDA), A con profundización iterativa.
- AD estrella (AD): A dinámico en cualquier momento.
- Búsqueda local:
- Hill-Climbing.
- Enforced-Hill-Climbing.
- Búsqueda multiobjetivo
- Algoritmo LS multiobjetivo. Artículo original: 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 ejemplo)
- Adaptadores de terceros:
- Adaptador de Java Universal/Graph (JUNG).
Si no encuentras el algoritmo o la característica que buscas, considera contribuir a Hipster!. Puedes abrir una nueva incidencia o, mejor aún, hacer un fork de este repositorio y crear una solicitud de integración con tu contribución.
¿Qué sigue?
Si quieres aprender a resolver un problema mediante búsqueda con Hipster, consulta la wiki y la documentación JavaDoc. También te sugerimos consultar esta presentación para una introducción rápida.