이중 중량 매개 변수가있는 최소 스패닝 트리


12

그래프 고려하십시오 G(V,E). 각각의 에지 e 는 2 개의 가중치 AeBe . 제품을 최소화하는 스패닝 트리를 찾으십시오 (eTAe)(eTBe) . 알고리즘은 다음과 관련하여 다항식 시간으로 실행되어야합니다. |V|,|E|.

스패닝 트리 (Kruskal, Prim, Edge-Deletion)에 대한 기존 알고리즘을 적용하는 것이 어렵다는 것을 알았습니다. 그것을 해결하는 방법? 힌트가 있습니까?


emax(Ae,Be)

3
숙제 나 운동 문제입니까? 그렇다면 교과서에서 나왔습니까? 내가 묻는 이유는 컨텍스트가 문제를 "역 엔지니어링"하는 데 도움이 될 수 있기 때문입니다. 여기서 욕심 많은 알고리즘이 적절하다는 것은 분명하지 않지만 욕심 많은 알고리즘에 관한 장에서 나온다면 ...
Joe

1
@utdiscant, 작동하지 않습니다. 부정적인 가장자리가 유용 할 수 있습니다.
Nicholas Mancuso

포지티브 엣지에서도 유용하지 않습니다. 예를 들어 대부분의 경우 페어 (10,10)가 페어 (11,1)보다 좋지 않습니다.

답변:


1

음수 가중치가있는 경우 작동하지 않을 수 있으므로 음수 가중치 가장자리가 제공되지 않는다고 가정합니다.

연산

각 모서리마다 에서 까지 레이블을 지정하십시오.N1n

가장자리 수 의 가중치 A를 보자 내가aii

가장자리 수 의 가중치 B를 보자. Ibii

이 테이블을 작성

   |a_1 a_2 a_3 a_4 .. a_n
---+-------------------------
b_1|.........................
b_2|.........................
 . |.........................
 . |.........................
b_n|...................a_n * b_n

각 테이블 요소는 행과 열의 곱입니다.

각 모서리에 대해 관련 테이블 행과 열을 합산하십시오 (두 번 합산 된 교차점에서 요소를 제거해야 함).

합계가 가장 큰 가장자리를 찾아 그래프의 연결을 끊지 않으면이 가장자리를 삭제하십시오. 그렇지 않으면 가장자리를 필수로 표시하십시오. 모서리가 삭제 된 경우 행과 열을 0으로 채 웁니다.

단정

결과는 분명히 나무입니다.

꼭짓점의 연결이 끊어지지 않으므로 결과가 분명히 확장됩니다.

결과는 최소입니까? 알고리즘 끝에서 삭제가 더 작은 스패닝 트리를 생성하는 다른 엣지가있는 경우 해당 엣지는 먼저 삭제되고 널이됩니다. (누군가가 이것을 좀 더 엄격하거나 반대의 예로 만들 수 있다면 도움이 될 것입니다)

실행 시간

다항식 .|V|

편집하다

(2,11),(11,2),(4,6) 은 반대의 예가 아닙니다 .

a1=2,a2=11,a3=4

b1=11,b2=2,b3=6

그때

   | 2     11     4
---+--------------------
11 | 22    121    44
 2 | 4     22     8
 6 | 12    66     24

(4,6)=44+8+24+66+12=154(2,11)=22+4+12+121+44=203(11,2)=121+22+66+4+8=221

(11,2) 가 제거됩니다.

끝납니다.(2,11),(4,6)=617=102

다른 스패닝 트리는

(11,2),(4,6)=1512=180

(2,11),(11,2)=1313=169


1
나에게는 이것이 욕심 많은 비난 인 것 같습니다. 나는 당신의 미니멀리즘의 "증거"에 확신이 없습니다.
Nejc

1
@SaeedAmiri 그 반대의 예는 어떻습니까? 편집 된 섹션에 작업을 게시하면 알고리즘이 올바른 결과를 제공합니다.
Herp Derpington

1
당신이 한 일은 각각의 가 기여 하는 정도를 찾는 것 이고 가장 영향이 큰 것을 선택합니다. 그것은 좋지만 필요한 것은 아닙니다. 까다로운 질문입니다. 답을 향상 시키려면 증거가 필요합니다. 그렇지 않으면 아무 소용이 없습니다. (ai,bi)eEai.eEbi
AJed

귀하의 노력에 대해 투표권을 얻는 것은 매우 불공평합니다.
AJed

@AJed 증명은 prim / kush / reverse delete에서와 동일합니다. 우리가 지금 증명해야 할 것은 컷 속성이 여전히 유지된다는 것입니다.
Herp Derpington

1

이것은 http://www.cnblogs.com/autsky-jadek/p/3959446.html 의 솔루션입니다 .

모든 스패닝 트리를 평면 의 점으로 볼 수 있습니다 . 여기서 는 무게의 합 이고 y는 무게의 합 . 목표는 를 최소화하는 것입니다 .xyxeTAeeTBexy

  1. 가중치 와 가중치 에 따라 최소 스패닝 트리를 찾으십시오 . xy 평면 에 두 개의 점이 있습니다. 평면의 모든 스패닝 트리 포인트에서 는 최소 를 가지며 는 최소 갖습니다 .ABA,BAxBy

  2. 이제 우리는 점 발견하는 것을 목표로 삼각형에서 라인에 최대 거리가 우리가 가질 수 그래서, 가치 삼각형의 모든 점에 대해 최소화 .COABABxyCABC

때문에 .2SABC=|AB×AC|=(BxAx,ByAy)×(CxAx,CyAy)=(BxAx)Cy+(AyBy)CxAy(BxAx)+Ax(ByAy)

  1. 공지 사항이 입니다 상수, 그래서 지금 우리가 최대 목표로 삼고있다 이므로 새로운 그래프 가중치 . 이제 에서 최대 스패닝 트리를 실행합니다. 포인트 얻을 .Ay(BxAx)+Ax(ByAy(BxAx)Cy+(AyBy)CxG=(V,E)w(e)=Be(BxAx)+Cx(AyBy)GC

  2. 및 사이에 더 이상 스패닝 트리가 없을 때까지 에서 위의 알고리즘을 재귀 적 으로 실행하십시오 .B C , C OOBC,OACBC,ACO

  3. 이제 가능한 스패닝 트리 세트를 얻습니다. 각 트리의 값을 계산 하여 최소 트리를 얻습니다.xy

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.