방향이없는 유한 희소 그래프가 있고 다음 쿼리를 효율적으로 실행할 수 있어야한다고 가정 해 봅시다.
- 과 사이에 경로가 있으면 반환 하고 , 그렇지 않으면
- 에서 도달 할 수있는 노드 세트를 리턴합니다.
이것은 그래프의 연결된 구성 요소를 사전 계산하여 쉽게 수행 할 수 있습니다. 두 쿼리 모두 시간에 실행될 수 있습니다 .
또한 Edge를 임의로 추가 할 수 있어야하는 경우 -구성 요소를 분리 세트 데이터 구조 에 저장할 수 있습니다 . 가장자리가 추가 될 때마다 다른 구성 요소의 두 노드를 연결하면 해당 구성 요소를 병합합니다. 이 추가 에 대한 비용 및 에 대한 비용 및 (뿐만 아니라 수 있습니다 ).
또한 가장자리를 임의로 제거 할 수 있어야하는 경우이 상황을 처리하기위한 최상의 데이터 구조는 무엇입니까? 알려져 있습니까? 요약하면 다음 작업을 효율적으로 지원해야합니다.
- 과 사이에 경로가 있으면 반환 하고 , 그렇지 않으면 반환 합니다.
- 에서 도달 할 수있는 노드 세트를 리턴합니다 .
- -두 노드 사이에 가장자리를 추가합니다. 참고 , 또는 둘 모두가 전에 존재하지 않을 수 있습니다.
- -두 노드 사이의 기존 모서리를 제거합니다.
(게임 개발의 관점에서 이것에 관심이 있습니다.이 문제는 몇 가지 상황에서 발생하는 것 같습니다. 플레이어가 전력선을 만들 수 있고 발전기가 건물에 연결되어 있는지 여부를 알아야 할 수도 있습니다. 문을 잠금 해제하면 적이 플레이어에게 도달 할 수 있는지 알아야합니다.하지만 매우 일반적인 문제입니다.