"인접 행렬"표현을 사용하여 그래프를 나타 내기로 결정한 경우 행렬의 크기를 어떻게 알 수 있습니까?인접 행렬로 표시된 그래프 크기 조정
내가 본 모든 코드 예제는 행렬을 초기화하기 위해 Graph
객체에 크기가 주어진다고 가정하지만이 크기의 출처는 분명하지 않습니다.
그래프를 작성하기 위해 그래프의 데이터가로드 된 것으로 가정합니다. 파일에서 가장 좋은 방법은 파일을 읽을 때 그래프를 작성하는 것입니다 (지금까지?).
이것은 목록 인 대체 표현을 사용하면 매우 쉽습니다.
그러나 matrix
의 경우 파일이 실제로로드 될 때까지 정점 수를 알 수 없습니다. 나는 우리가 처음으로 파일 (수백만 개의 버텍스를 포함 할 수 있음)을 읽었으며 다음에 그래프를 작성한다고는 생각하지 않는다. 그것은 나에게 이중 처리를하는 것처럼 보입니다.
그래서 평소/가장 좋은 방법은 무엇입니까?
참고 : 내가 대신 목록을 사용의 이점을 알고 있지만, 대부분의 문서가 나는 프로그램이 matrix
를 사용하는 방법을 이해하는 것을 시도하고있다 (그러나 스파 스에 대한) 밀도 그래프에, 매트릭스를 사용하는 것은 받아 들일 수 있다고 말하고 있기 때문에 표현이 올바르게 구현됩니다.
음, 기본적으로 무한한 배열을 저장하고있는 것 같습니다. 표 이중화를 시도하십시오. – sukunrt
매트릭스의 동적 재 할당을 사용해야한다고 생각합니다. 구현은 문제 자체에 크게 달려있다. 간단히 말해, 동적 재 할당을 사용하면 먼저 행렬에 대해 일부 공간을 예약한다는 의미입니다 (n0Xn0에 대해 가정 해 봅시다). 사용 가능한 모든 공간을 완료하면 더 큰 공간을 예약하고 내용을 복사하고 공간을 비 웁니다. 구현에 대한 세부 정보는 사용하는 언어 (C, C++ 또는 Java)와 입력에 따라 달라집니다 (노드의 이름에 따라 이름에서 실제 행 또는 열까지 해시 함수가 필요할 수 있습니다). 희망이 도움이됩니다. – Mircea
입력 데이터의 형식을 알고 있습니까? 구분 된/고정 길이? – user845279