나는 가상의 이상적인 네트워크 사용을 모델링하기 위해 어떤 종류의 데이터 구조를 사용할 것인지 알아 내려고 노력 중이다.
필자의 시나리오에서 서로에게 적대적인 많은 사용자는 모두 잠재적 인 연결이 모두 알려진 컴퓨터 네트워크를 형성하려고합니다. 한 사용자가 연결해야하는 컴퓨터는 다른 사용자가 연결해야하는 컴퓨터와 동일하지 않을 수도 있습니다. 사용자 1은 컴퓨터 A, B 및 D를 연결해야하지만 사용자 2는 컴퓨터 B, C 및 E를 연결해야 할 수 있습니다.
NCTM Graph Creator를 사용하여 생성 된 이미지
이것의 핵심은 컴퓨터를 나타내는 노드와 이더넷 케이블을 나타내는 가장자리가있는 무 방향 순환 그래프 일 것이라고 생각합니다. 그러나 시나리오의 특성으로 인해 인접 목록과 인접 행렬을 배제하는 몇 가지 드문 기능이 있습니다 (적어도 사소한 수정은 제외).
- 가장자리는 사용이 제한 될 수 있습니다. 즉, 한 사용자가 특정 네트워크 연결을 획득하면 다른 사용자는 해당 연결을 사용할 수 없습니다
- 이 예에서 녹색 사용자는 컴퓨터 A에 연결할 수 없지만 빨간색 사용자는 컴퓨터 사이에 직접 링크가 없어도 B를 E에 연결했습니다.
- 어떤 경우에는 주어진 노드 쌍이 둘 이상의 에지로 연결됩니다
- 이 예에서는 D에서 E로 연결되는 두 개의 독립 케이블이 있으므로 녹색 및 파란색 사용자가 해당 시스템을 직접 연결할 수있었습니다. 그러나 빨간색은 더 이상 그러한 연결을 만들 수 없습니다
- 두 대의 컴퓨터가 둘 이상의 케이블로 연결된 경우 각 사용자는 해당 케이블 중 하나만 소유 할 수 있습니다
이 그래프에서 다음과 같은 몇 가지 작업을 수행해야합니다.
- 특정 사용자 컴퓨터가 특정 사용자에게 연결되어 있는지 확인
- 주어진 사용자가 대상 컴퓨터를 연결하기위한 최적의 경로 식별
- 지정된 사용자에 대한 대기 시간이 가장 긴 컴퓨터 연결 식별 (예 : 분기가없는 가장 긴 경로)
내 첫 번째 생각은 단순히 모든 가장자리의 모음을 만드는 것이었지만 검색에는 끔찍합니다. 내가 지금 생각할 수있는 가장 좋은 것은 목록의 각 항목에 가장자리 길이뿐만 아니라 비용과 현재 소유자가 포함되도록 인접 목록을 수정하는 것입니다. 이것은 합리적인 접근입니까? 공간이 중요하지 않다고 가정하면 단일 그래프가 아닌 여러 개의 그래프 사본 (각 사용자 당 하나씩)을 작성하는 것이 합리적입니까?