Tôi đang cố gắng tìm ra loại cấu trúc dữ liệu nào sẽ được sử dụng để mô hình hóa một số sử dụng mạng lý tưởng hóa, giả định.
Trong kịch bản của tôi, một số người dùng thù địch với nhau đều đang cố gắng hình thành các mạng máy tính nơi tất cả các kết nối tiềm năng đều được biết đến. Tuy nhiên, các máy tính mà một người dùng cần kết nối có thể không giống với các máy tính mà người dùng khác cần kết nối; người dùng 1 có thể cần kết nối máy tính A, B và D trong khi người dùng 2 có thể cần kết nối máy tính B, C và E.
Hình ảnh được tạo với sự trợ giúp của NCTM Graph Creator
Tôi nghĩ cốt lõi của điều này sẽ là một biểu đồ tuần hoàn không bị ngăn chặn, với các nút đại diện cho máy tính và các cạnh đại diện cho cáp Ethernet. Tuy nhiên, do tính chất của kịch bản, có một số tính năng không phổ biến loại trừ danh sách kề và ma trận kề (ít nhất là không có sửa đổi không tầm thường):
- các cạnh có thể bị hạn chế sử dụng; nghĩa là, nếu một người dùng có được một kết nối mạng nhất định, không người dùng nào khác có thể sử dụng kết nối đó
- trong ví dụ này, người dùng màu xanh lá cây có thể kết nối với máy tính A, nhưng người dùng màu đỏ đã kết nối B với E mặc dù không có liên kết trực tiếp giữa họ
- trong một số trường hợp, một cặp nút cho trước sẽ được kết nối bởi nhiều hơn một cạnh
- trong ví dụ này, có hai cáp độc lập chạy từ D đến E, vì vậy người dùng xanh và xanh đều có thể kết nối trực tiếp các máy đó; tuy nhiên, màu đỏ không còn có thể tạo ra một kết nối như vậy
- nếu hai máy tính được kết nối bởi nhiều hơn một cáp, mỗi người dùng có thể sở hữu không quá một trong các cáp đó
Tôi sẽ cần thực hiện một số thao tác trên biểu đồ này, chẳng hạn như:
- xác định xem có bất kỳ cặp máy tính cụ thể nào được kết nối cho một người dùng nhất định không
- xác định đường dẫn tối ưu cho một người dùng nhất định để kết nối các máy tính mục tiêu
- xác định kết nối máy tính có độ trễ cao nhất cho một người dùng nhất định (nghĩa là đường dẫn dài nhất mà không phân nhánh)
Suy nghĩ đầu tiên của tôi chỉ đơn giản là tạo ra một bộ sưu tập tất cả các cạnh, nhưng điều đó thật tồi tệ để tìm kiếm. Điều tốt nhất tôi có thể nghĩ phải làm bây giờ là sửa đổi danh sách kề để mỗi mục trong danh sách không chỉ chứa chiều dài cạnh mà còn cả chi phí và chủ sở hữu hiện tại. Đây có phải là một cách tiếp cận hợp lý? Giả sử không gian không phải là một mối quan tâm, liệu có hợp lý khi tạo nhiều bản sao của biểu đồ (một cho mỗi người dùng) thay vì một biểu đồ không?