Tôi đang sử dụng Biểu đồ Dữ liệu để mô phỏng mô phỏng trong Haskell. Mô phỏng được giới hạn ở một lưới 2D mà các mô hình đồ thị của tôi. Một nút tại mỗi điểm trên lưới bên dưới sẽ chứa một loại Phân tử Có thể để có thể có một phân tử có mặt hoặc chỉ là Không có gì.Chỉnh sửa/Cập nhật Đồ thị trong Haskell
1 - 2 - 3
| | |
4 - 5 - 6
| | |
7 - 8 - 9
Tôi đã thiết lập đại diện này nhưng khi nói đến việc cập nhật vị trí của phân tử, tôi cảm thấy tôi đang đi rất xa xung quanh vấn đề. Những gì tôi đã làm cho đến nay là tước tất cả các nút vào một danh sách các nút. Tôi đã viết một hàm để hoán đổi hai mục trong danh sách các nút này. Nhưng bây giờ khi tôi đến để zip tất cả mọi thứ lại với nhau tôi đi vào vấn đề bởi vì để tạo ra một đồ thị mới, tôi cần một danh sách các đỉnh mà tôi có được dễ dàng từ các chức năng đồ thị đỉnh. Nhưng tôi cũng cần phải nén mà với danh sách các đỉnh chạm cạnh. Rất tiếc, hàm Graph trả về một danh sách các bộ kiểu Edge không có ích để tạo một đồ thị theo như tôi có thể thấy, mặc dù tôi có thể viết một hàm để lấy ra các đỉnh danh sách có cạnh tới đỉnh. Làm như vậy có vẻ là đủ công việc cho tôi để tự hỏi tôi có thiếu điểm là có một chức năng Graph ra khỏi đó mà chỉ mất một đồ thị và trả về một đồ thị với một nút cập nhật?
nếu tôi sử dụng biểu đồ, tôi có thể thấy các nút lân cận có bị chiếm bởi các phân tử khác để kiểm tra phát hiện va chạm hay không. – mikeyP
@mikeyP Nhưng bạn cũng có thể làm điều đó với mảng, phải không? –
Bạn nói đúng, bên dưới Đồ thị là một mảng. Nhưng với một đồ thị tôi sẽ có thể loại bỏ các nút trên biểu đồ, các khu vực mà các phân tử không thể đi qua. Tôi không thể nhìn thấy một cách gọn gàng để làm điều đó với mảng. – mikeyP