문제

내가 필요로를 시뮬레이션하는 이산 사건 시뮬레이터와 그에 대한 필요가 생성 네트워크로 구성된 30 노드를 확인하고 다음의 경우 생성된 그래프는 지나지 않습니다.할 수 있는 사람이 나를 안내하는 방법에 시작합니다.나는 사용하지 않을 향상 라이브러리이다.그렇습니다 이것은 할당,나이 필요한 조언을 시작 합니다.난 그냥 몇 가지를 앞으로 이동합니다.

#define MAXNODES 30

struct {
int p;
int *incoming;
int *outgoing;
} NODE[MAXNODES]
//The struct defines each node and the neighbors to it. 

이 위의 구조체 정의 올바른?

도움이 되었습니까?

해결책

나는 당신을 생성할 수 있는 임의의 그래프입니다.또한 저는 가정하에 익숙하다면 인접 행렬의 표현 그래프.

이 경우에는,내가 사용하는 인접성 매트릭스 의 표현 그래프.다음을 사용할 수 있습니다 2D 을 나타내는 배열을 이다.

그래서 당신의 그래프이 다음과 같이 정의됩니다:

#define MAXNODES 30
int graph[MAXNODES][MAXNODES];

입니다 그래프 또는 가중되지 않은 가중?면 그것은 가중치가 부과되지 않고,다음의 각 요소의 매트릭스(graph[3][7], 예를 들어)합니다.0 또는 1.는 경우 0,다음 없는 가장자리 노드를 연결하는 3 및 7(이 예에서),및 있는 경우에는 1 다음,거기에 실제로 가장자리입니다.

는 경우 그중,다음 0 여전히 없음을 의미합니다 가장자리,하지만 번호(1,9,234,아무것도)의 무게를 나타냅는 가장자리입니다.

할 수 있도록 루프를 사용하여 채울 수에서 각각 배열 요소,그래서 가을 통해 각 쌍의 노로 무작위로 할당 중량(0 없이 가장자리 또는 일부를 수 있는 경우에는 가장자리로 가중-vs-가중되지 않은.)

그래서 당신의 질문에 대답을 확인하여,"주도성"는 것은 쉽습니다.는 경우에는 그래프 감독은,그 다음 그래프[3][7]및 그래프[7][3]동일한 값입니다.그래서 확인할 수 있습니다에 대한 모든 쌍(그래프[i][j]및 그래프[j][i])의 값이 같습니다.당신이 보고 있는 경우 매트릭스 대칭.

는 경우 그것은 대칭(그래서[3][7]0 지만,[7][3]은 1)다음에만 가장자리에서 한 방향을 지시했다.는 경우 각 쌍에는 두 값([3][7] = 5, [7][3] = 21) 그런 다음 그래프이시기 때문에,무게에 따라 변경 방향으로 당신이 여행이다.

다른 팁

먼저 특정 버전의 'Directedness'를 정의해야한다고 생각합니다. 한 노드가 다른 노드보다 우선하는지 여부를 결정하는 근거는 무엇입니까? 예를 들어, 각 노드에 임의의 숫자를 할당하려고합니까? 그렇다면 구조물이 불완전 해 보입니다. 노드의 위치 값을 유지하려면 최소한 추가 데이터 요소가 필요합니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top