문제
무 방향 그래프 (멀티 에지 포함)가 있으며 시간이 지남에 따라 변경되며 노드와 가장자리가 삽입 및 삭제 될 수 있습니다. 그래프를 수정할 때마다이 그래프의 연결된 구성 요소를 업데이트해야합니다.
속성
추가 속성은 두 구성 요소가 다시 연결되지 않는다는 것입니다. 분명히, 그래프는 임의의 양으로 사이클을 가질 수 있습니다 (그렇지 않으면 솔루션은 사소합니다). 모서리 에 노드 n이 포함되어 있지 않으면 해당 노드를 채택하지 않습니다. 그러나 n ∈ e 이면 n ∉ e로 변경할 수 있습니다 .
구혼
나는 지금까지 두 가지 가능한 접근법을 가지고 있지만, 알다시피 그것들은 끔찍합니다.
느린 상태
매번 수정 된 요소에서 시작하여 그래프를 검색 (dfs / bfs) 할 수 있습니다. 이것은 공간을 절약하지만 각 수정에 대해 O (n + m)을 가지므로 느립니다.
Stateful fast (-er) (?) 접근 방식
각 노드의 가능한 모든 경로를 가능한 모든 노드에 저장할 수 있지만 올바르게 보면 O (n ^ 4) 메모리가 필요합니다. 그러나 런타임 개선 방법이 확실하지 않습니다 (동일한 구성 요소의 모든 노드에 대한 정보를 최신으로 유지해야하기 때문에 하나가있는 경우).
질문
포인터, 그 문제에 대해 더 많이 배울 수있는 방법 또는 내가 구축 할 수있는 알고리즘이 있습니까?
노트
런타임 / 메모리가 크게 개선되면 때로는 두 가지 구성 요소가 하나라고 말하는 최적이 아닌 솔루션으로 살 수 있지만 물론 최적의 솔루션을 선호합니다.