2010-03-14 55 views
27

Có thư viện hay (hoặc thư viện bọc sẵn cho thư viện Java) cho đồ thị và/hoặc thuật toán đồ thị trong scala không?thư viện biểu đồ cho scala

This one có vẻ khá là chết. This là một ví dụ cho thuật toán Dijkstra trong scala, nhưng tôi đang tìm một thư viện a-la JGraphT.

+3

mặc dù câu trả lời khác được chấp nhận, tôi khuyên scalax.collection.Graph, xem http://www.assembla.com/space/scala-graph/wiki Nó đã được đề cập trong câu trả lời khác, nhưng nó khá ổn định bây giờ ... – Bastl

+1

Tôi đang bỏ phiếu để đóng câu hỏi này là chủ đề vì tôi không hiểu tại sao chúng ta được hỏi để xem lại lịch sử cổ đại. – Strawberry

Trả lời

6

Chúng tôi đã phát triển một thư viện biểu đồ nhỏ cho dự án apparat. Bạn có thể xem nó here. Nó không phải là hoàn toàn chức năng và không phải là một đồ thị dây kéo nhưng làm một công việc tốt cho chúng tôi. Bạn cũng có được các biểu đồ có thể thay đổi và không thay đổi được.

Đây là một ví dụ đơn giản để tạo biểu đồ:

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 

Tìm SCCS và thành phần phụ

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) 

Hạn chế hiện nay được rằng thư viện được hỗ trợ chỉ bất biến các loại và không tính năng hoàn chỉnh cho toàn bộ thư viện biểu đồ.

4

Tại sao không Jung? và cũng có thể Piccolo2D cho đồ họa? (cả hai dựa trên JVM).

+0

@sw: Jung không có liên kết Scala đặc biệt nào? Tất nhiên, người ta có thể sử dụng bất kỳ thư viện biểu đồ Java nào. –

+0

@Rex_Kerr bạn có thể nhập mọi lớp Java, tại sao bạn cần một ràng buộc đặc biệt? –

+5

@sw vì những ràng buộc đó có thể tương tác tốt hơn với cấu trúc của scala, chẳng hạn như biểu thức lambda (ví dụ g.nodes.forall (_. Weight> 10)) –

22

Có một current call-for-comments để tạo scala.collection.Graph được tích hợp vào thư viện Scala.

Ngoài ra, làm cách nào để phát triển trình bao bọc Scala cho JGraphT?

CẬP NHẬT

Graph for Scala tại là vượt qua giai đoạn thảo luận, và một tác phẩm dở dang.

+0

tại https://github.com/scala-graph/scala- biểu đồ –

+0

Cảm ơn! - cập nhật. – opyate

+1

khác với https://github.com/twitter/cassovary là gì? –

2

Gremlin-Scala là một trình bao mỏng Scala mỏng cho Gremlin, một biểu đồ DSL để duyệt qua một số cơ sở dữ liệu đồ thị bao gồm Neo4j, OrientDB, DEX, InfiniteGraph, Titan, máy chủ đồ thị Rexster và các cửa hàng RDF tuân thủ Sesame 2.0.

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

Lưu ý: Tôi là thiên vị như Tôi là tác giả;)

Các vấn đề liên quan