Liên minh nhóm trong đồ thị lưỡng cực?


8

Tôi đang cố gắng tìm ra một giải pháp tốt (và nhanh chóng) cho vấn đề sau:

Tôi có hai mô hình tôi đang làm việc cùng, hãy gọi họ là người chơi và đội. Một người chơi có thể ở nhiều đội và một đội có thể có nhiều người chơi). Tôi đang làm việc để tạo một thành phần UI trên một biểu mẫu cho phép người dùng chọn nhiều nhóm (hộp kiểm). Khi người dùng đang chọn (hoặc bỏ chọn) các đội, tôi muốn hiển thị các đội được người chơi nhóm lại.

Vì vậy, ví dụ:

  1. Nếu các đội được chọn không có người chơi giao nhau, mỗi đội sẽ có phần riêng.

  2. Nếu người dùng chọn hai đội và họ có cùng người chơi, sẽ có một phần chứa tên của hai đội và tất cả người chơi.

  3. Nếu TEAM_A có người chơi [1, 2, 4, 5] và TEAM_B có người chơi [1, 3, 5, 6]. Sẽ có các phần sau: SECTION_X = [TEAM_A, TEAM_B, 1, 5], SECTION_Y = [TEAM_A, 2, 3], PHẦN _Z = [TEAM_B, 3, 5]

Tôi hy vọng điều đó rõ ràng. Về cơ bản, tôi muốn tìm các đội mà người chơi có điểm chung và nhóm theo đó. Tôi đã nghĩ có lẽ có một cách để làm điều này bằng cách điều hướng một đồ thị lưỡng cực? Không chắc chắn chính xác như thế nào và tôi có thể đang xem xét lại nó. Tôi đã hy vọng thực hiện điều này bằng cách tạo ra một số loại cấu trúc dữ liệu trên máy chủ và sử dụng nó trên máy khách. Tôi rất thích nghe đề xuất của bạn và tôi đánh giá cao bất kỳ sự giúp đỡ nào bạn có thể cung cấp!


Bạn có chắc chắn rằng bạn không thể mã hóa logic đó bằng cách sử dụng mối quan hệ nhiều-nhiều giữa các mô hình của bạn. Hy vọng rằng, khi bạn bắt đầu viết mã phía máy chủ, khung yêu thích của bạn sẽ cho phép bạn khai báo các mô hình với một số trường. Do đó, bạn sẽ có thể hướng dẫn rằng mô hình Teamnên có một trường được gọi là playersyêu cầu mối quan hệ nhiều-nhiều với mô hình khác của bạn Player. Điều này cho phép bạn truy xuất những người chơi nào trong mỗi đội và những đội nào được liên kết với mỗi người chơi.
Robert Smith

Bạn đã chọn công nghệ cụ thể nào chưa? Điều này có thể được thực hiện với Neo4J và Cypher.
sheldonkreger 04/03/2015

Câu trả lời:


2

Bạn đã nghe nói về đồ thị giao lộ ? Bạn có thể cố gắng vẽ người chơi dưới dạng điểm, kết nối (đồng đội) dưới dạng các cạnh và đội dưới dạng các đốm màu trong suốt trên đầu.

Đối với câu hỏi ban đầu của bạn, tôi không thể hiểu mục tiêu của bạn. Tôi nghĩ rằng công thức của bạn không được xác định rõ / không đầy đủ. Giả sử bạn có các đội A [1,2] B [2,3] và C [1,3]. Bạn muốn hiển thị cái gì? Bạn có muốn liệt kê các phần của sơ đồ Venn không? Tôi nghĩ rằng trong hơn 3 bộ, điều này có thể trở nên cồng kềnh hơn so với chính biểu đồ lưỡng cực = danh sách đơn giản các thành phần nhóm.


1

Lưu trữ các cạnh (quan hệ) trong máy chủ của bạn:

(TeamID, playerID)

Khi bạn muốn tìm các phần tử phổ biến, chỉ cần lọc tất cả các cạnh trong đó:

TeamID="TeamA" or TeamID="TeamB"

(Bạn có thể sử dụng các chỉ mục để tăng tốc, v.v.)

Sau đó nhóm theo playerID và kiểm tra xem có bao nhiêu mục trong mỗi nhóm. Các nhóm có hai mục thuộc về cả hai đội và được chia sẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.