그래서 내가 도망을 가입 한 후 나머지 서브 그래프를 결정기능을 구현하는 동안 노드의 제거는이 문제에
한다고 가정 내가 서로 연결되어 일부 노드의 임의의, 무향 그래프가 있습니다.
어떤 경로를 따라 서로에게 도달 할 수있는 모든 노드 그룹을 하나의 집합이라고 부릅시다.
이제 그래프에 하나의 집합 만 포함되어 있다고 가정합니다. 즉, 모든 노드는 다른 모든 노드에서 연결할 수 있습니다.
임의의 노드 A를 가져 와서 세트에서 제거하면 어떤 세트가 남아 있는지 신속하고 효율적으로 결정해야합니다. A가 집합의 컷 포인트 일 경우 집합을 두 개 이상의 작은 집합으로 분할해야합니다. 다른 노드에 연결 새 모서리의 수와 새로운 노드 B를 추가, 집합에서 제거하고 나머지 세트를 결정
- 및
- : 단순히 효율적이 일을하는 방법이 필요합니다.
두 가지 작업을 적당히 빠르게 수행 할 수 있어야합니다. 본질적으로 O (log (n)) 또는 O (1) 솔루션을 찾고 있습니다. 이 그래프는 클 수 있으므로 O (n) 해를 사용할 수 없습니다. 나는 특히 메모리 오버 헤드에 관심이 없다. 누구든지 올바른 방향으로 데이터 구조/알고리즘을 사용하여 여기에 사용할 수 있습니까? 나는 Union-Find와 Djikstra 같은 것을 이미 생각해 왔지만, 그들은 나의 필요에 부합하지 않는다. 노드가 추가되거나 제거 될 때마다 전체 그래프에서 전체 연결 확인을 실행하고 싶지 않습니다.
이 부분을 살펴 보겠습니다. 감사. – Alex
@Alex이 특정 그래프 알고리즘을 구현하지는 않았지만 조심해야 할 몇 가지 사항이 있습니다. 첫째, log^3 n은 종이에서 sqrt n보다 훨씬 좋을지 모르지만, 상수를 무시한 교차점은 약 5 억입니다. 점근적인 실행 시간으로 이전의 노력을 고려해 볼 가치가 있습니다. 둘째, 저자는 "작은 상수 요소"라고 주장하지만 IME는 오일러 둘러보기 나무를 사용하기 때문에 "실용적이지 않고" "우리는 로버트슨 - 시무 어 영역에 있지 않습니다"라고 읽어야합니다. 마지막으로 최악의 경우 보증없이 알고리즘으로 더 나은 결과를 얻을 수 있습니다. –
감사합니다. 지금 당장은 여전히 신문을 읽고 있습니다. 나는 지금까지 ET 나무에 대해 들어 본 적도 없다. 우연히 해결하려고하는 문제의 구체적인 이름이 있습니까? 어쩌면 종이에 언급 된 것일 수도 있습니다. 이 문제를 해결하기위한 다른 접근법이 무엇인지 알아 내면 바로 크로스 오버를 고려할 것입니다. -edit- : 문제를 연결 유지를위한 완전히 동적 인 알고리즘을 찾는 것과 같은 것으로 생각하십니까? – Alex