그래프 고려하십시오 . 각각의 에지 는 2 개의 가중치 및 . 제품을 최소화하는 스패닝 트리를 찾으십시오 . 알고리즘은 다음과 관련하여 다항식 시간으로 실행되어야합니다. .
스패닝 트리 (Kruskal, Prim, Edge-Deletion)에 대한 기존 알고리즘을 적용하는 것이 어렵다는 것을 알았습니다. 그것을 해결하는 방법? 힌트가 있습니까?
그래프 고려하십시오 . 각각의 에지 는 2 개의 가중치 및 . 제품을 최소화하는 스패닝 트리를 찾으십시오 . 알고리즘은 다음과 관련하여 다항식 시간으로 실행되어야합니다. .
스패닝 트리 (Kruskal, Prim, Edge-Deletion)에 대한 기존 알고리즘을 적용하는 것이 어렵다는 것을 알았습니다. 그것을 해결하는 방법? 힌트가 있습니까?
답변:
음수 가중치가있는 경우 작동하지 않을 수 있으므로 음수 가중치 가장자리가 제공되지 않는다고 가정합니다.
각 모서리마다 에서 까지 레이블을 지정하십시오.N
가장자리 수 의 가중치 A를 보자 내가
가장자리 수 의 가중치 B를 보자. I
이 테이블을 작성
|a_1 a_2 a_3 a_4 .. a_n
---+-------------------------
b_1|.........................
b_2|.........................
. |.........................
. |.........................
b_n|...................a_n * b_n
각 테이블 요소는 행과 열의 곱입니다.
각 모서리에 대해 관련 테이블 행과 열을 합산하십시오 (두 번 합산 된 교차점에서 요소를 제거해야 함).
합계가 가장 큰 가장자리를 찾아 그래프의 연결을 끊지 않으면이 가장자리를 삭제하십시오. 그렇지 않으면 가장자리를 필수로 표시하십시오. 모서리가 삭제 된 경우 행과 열을 0으로 채 웁니다.
결과는 분명히 나무입니다.
꼭짓점의 연결이 끊어지지 않으므로 결과가 분명히 확장됩니다.
결과는 최소입니까? 알고리즘 끝에서 삭제가 더 작은 스패닝 트리를 생성하는 다른 엣지가있는 경우 해당 엣지는 먼저 삭제되고 널이됩니다. (누군가가 이것을 좀 더 엄격하거나 반대의 예로 만들 수 있다면 도움이 될 것입니다)
다항식 .
은 반대의 예가 아닙니다 .
그때
| 2 11 4
---+--------------------
11 | 22 121 44
2 | 4 22 8
6 | 12 66 24
가 제거됩니다.
끝납니다.
다른 스패닝 트리는
이것은 http://www.cnblogs.com/autsky-jadek/p/3959446.html 의 솔루션입니다 .
모든 스패닝 트리를 평면 의 점으로 볼 수 있습니다 . 여기서 는 무게의 합 이고 y는 무게의 합 . 목표는 를 최소화하는 것입니다 .
가중치 와 가중치 에 따라 최소 스패닝 트리를 찾으십시오 . xy 평면 에 두 개의 점이 있습니다. 평면의 모든 스패닝 트리 포인트에서 는 최소 를 가지며 는 최소 갖습니다 .
이제 우리는 점 발견하는 것을 목표로 삼각형에서 라인에 최대 거리가 우리가 가질 수 그래서, 가치 삼각형의 모든 점에 대해 최소화 .
때문에 .
공지 사항이 입니다 상수, 그래서 지금 우리가 최대 목표로 삼고있다 이므로 새로운 그래프 가중치 . 이제 에서 최대 스패닝 트리를 실행합니다. 포인트 얻을 .
및 사이에 더 이상 스패닝 트리가 없을 때까지 에서 위의 알고리즘을 재귀 적 으로 실행하십시오 .B C , C O
이제 가능한 스패닝 트리 세트를 얻습니다. 각 트리의 값을 계산 하여 최소 트리를 얻습니다.