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 đồ.
Nguồn
2010-03-15 09:02:01
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
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