2010-03-14 36 views
27

¿Existe una buena biblioteca (o envoltorio para la biblioteca Java) para gráficos y/o algoritmos de gráficos en scala?biblioteca de gráficos para scala

This one parece estar bastante muerto. This es un ejemplo del algoritmo de Dijkstra en scala, pero estoy buscando una biblioteca a-la JGraphT.

+3

aunque otra respuesta se acepta, le recomiendo scalax.collection.Graph, ver http://www.assembla.com/spaces/scala-graph/wiki Se mencionó en la otra respuesta, pero ahora es bastante estable ... – Bastl

+1

Voy a cerrar esta pregunta como fuera de tema porque no entiendo por qué nos preguntan para revisar la historia antigua. – Strawberry

Respuesta

6

Hemos desarrollado una pequeña biblioteca de gráficos para el proyecto apparat. Puedes echarle un vistazo here. No es puramente funcional y no es un gráfico de cremallera, pero hace un buen trabajo para nosotros. También obtienes gráficos mutables e inmutables.

Aquí es un ejemplo sencillo para la creación gráfica:

implicit val factory = DefaultEdge[String](_, _) 
val G = Graph(
    "Entry" -> "A", 
    "A" -> "B", 
    "B" -> "C", 
    "B" -> "D", 
    "D" -> "F", 
    "F" -> "E", 
    "E" -> "F", 
    "E" -> "C", 
    "C" -> "A", 
    "C" -> "Exit") 
G.dotExport to Console.out 

Encontrar los CE y subcomponentes

G.sccs foreach println 
G.sccs map { _.entry } foreach println 
G.sccs filter { _.canSearch } map { _.subcomponents } foreach { _ foreach println } 

Traversal

for(x <- G.topsort) println(x) 
for(x <- G.dft(y)) println(x) 

El inconveniente actual es que la biblioteca se soporta solamente invariante tipos y no característica completa para una biblioteca de gráficos completa.

4

¿Por qué no Jung? y también Piccolo2D para gráficos? (ambos basados ​​en JVM).

+0

@sw: Jung no tiene enlaces Scala especiales, ¿o sí? Por supuesto, se puede usar cualquier biblioteca de gráficos de Java. –

+0

@Rex_Kerr puede importar cada clase de Java, ¿por qué necesita un enlace especial? –

+5

@sw porque esos enlaces pueden interactuar mejor con las estructuras de scala, como las expresiones lambda (por ejemplo g.nodes.forall (_. Weight> 10)) –

22

Hay un current call-for-comments para crear un scala.collection.Graph incorporado en la biblioteca de Scala.

Además, ¿qué hay de desarrollar un envoltorio Scala para JGraphT?

ACTUALIZACIÓN

Graph for Scala es ahora más allá de la etapa de discusión, y una obra en progreso.

+0

ahora en https://github.com/scala-graph/scala- gráfico –

+0

¡Gracias! - actualizado. – opyate

+1

¿qué es diferente de https://github.com/twitter/cassovary? –

2

Gremlin-Scala es una delgada y delgada envoltura Scala para Gremlin, una gráfica DSL para recorrer varias bases de datos de gráficos incluyendo Neo4j, OrientDB, DEX, InfiniteGraph, Titan, servidor de gráficos Rexster y tiendas RDF compatibles con Sesame 2.0.

https://github.com/mpollmeier/gremlin-scala

Nota: Soy parcial, ya que soy el autor;)

Cuestiones relacionadas