Click here to load reader

最短経路問題 & 最小全域木

  • Upload
    hcpc-

  • View
    489

  • Download
    0

Embed Size (px)

Citation preview

PowerPoint

B4 12016/05/30 HCPC

:

: 2

:

: 3

4150243

: : : : : : : : : : 5

: : : : : : : : : : 6

: :

:

:

:

VE710231135713402

Q. 8

Q. A. 9

10012345000100010010112110010300001140111015010110

150243:

110123450INFINF3INFINFINF1INFINF2INF68232INFINF4INF3INFINFINFINF574INF645INF95INF8INF79INF

15024332468579: INF: ()

(C)12

131502432

2

4

5

0

1

4

4

5

1

2

3

5

1

3

4

: 012345

141502433,2

2,2

6,4

8,5

3,0

2,1

4,4

5,4

7,5

6,1

4,2

5,3

8,1

7,3

9,4

324685799,5

: (, )012345

(C)15

(C)16

(C++)17

C++

vs 18(: )

vs 19(: )

:

: 20

s

g

g 21

21

22

22

Sample Input

10 12 90 210 90 210 120 30 90 120 120 150 210 18023

23

Sample Input

10 12 90 210 90 210 120 30 90 120 120 150 210 180

24120309021090120150180120210

21090 ()

24

= min ( + 210 , + 180 )

25... .:180210::. .. ...

25

= min ( + 210 , + 180 )

u= min ( u + u )26... .:180210::. .. ...

26

(Bellman-Ford algorithm)

27

(Bellman-Ford algorithm)

28

(Bellman-Ford algorithm)

29

0INFINFINFINFINFINFINFINFINF

3021090120309021090120150180120210

0INFINFINFINFINFINFINFINFINF

3112030902109012015018012021002101209021090

090210INFINF120INFINFINFINF

32120309021090120150180120210021012090

21090

090210INFINF120INFINFINFINF

331203090210901201501801202109018021090

090210300INF120INFINFINFINF

34120309021090120150180120210210240420300

21090

090210300510120420INFINF510

35120309021090120150180120210300

42051051021090

090210300510120420INFINF510

3612030902109012015018012021051021090

090150300510120210INFINF510

37120309021090120150180120210120210150

21090

090150300510120210330INF510

38120309021090120150180120210210330

21090

090150300510120210330480510

39120309021090120150180120210330

48021090

090150300510120210330480510

4012030902109012015018012021051021090

090150300510120210330480510

4112030902109012015018012021051021090

090150300510120210330480510

4212030902109012015018012021021090

090150300510120210330480510

4312030902109012015018012021021090

2090150300510120210330480510

44120309021090120150180120210021090

2090150300510120210330480510

451203090210901201501801202109021090

090150240510120210330480510

46120309021090120150180120210150

240 2!!21090

090150240510120210330480510

47120309021090120150180120210150

1210240 2!!21090

21090090150240510120210330480510

48120309021090120150180120210150

1210240 2!!

491:

501: O(E)

511: O(E)

1: O(E)

11V O(VE) 52

53

5412030902109012015018012021021030021090

(Dijkstras algorithm)

0INFINFINFINFINFINFINFINFINF

0

55120309021090120150180120210 ()21090

0INFINFINFINFINFINFINFINFINF

560210120901203090210901201501801202100

()21090

57021012090120309021090120150180120210

90120210

090210INFINF120INFINFINFINF

()

21090

120210

5890

(180)120309021090120150180120210 ()090210INFINF120INFINFINFINF

90

21090

58

120210

5990120309021090120150180120210 ()090210INFINF120INFINFINFINF

21090(180)

59

210

60120150240!!120309021090120150180120210

()090210INFINF120INFINFINFINF

120

21090

(240)

60

150210210

61120

!!

150210120309021090120150180120210 ()090150INFINF120210INFINFINF

21090(240)

61

210210240

62150

120309021090120150180120210240 ()090150240INF120210INFINFINF

150

21090

62

210240

63210120309021090120150180120210 ()090150240INF120210INFINFINF

210

210902

63

240330

64210120309021090120150180120210330 ()090150240INF120210330INFINF

210

21090

64

330450450

65240

120309021090120150180120210450450 ()090150240450120210330INF450

240

21090

65

450450480

66330120309021090120150180120210480 ()090150240450120210330480450

330

21090

66

450480

67450120309021090120150180120210 ()090150240450120210330480450

450

21090

67

480

68450120309021090120150180120210 ()090150240450120210330480450

450

21090

68

69480120309021090120150180120210 ()090150240450120210330480450

480

21090

69

090150240450120210330480450

70120309021090120150180120210 ()21090

70

71

: O(E)

72

: O(E)

sort73

(Priority Queue)74

75A: Push(A)

(Priority Queue)

76A:

(Priority Queue)

77A: B: Push(B)

(Priority Queue)

78A: B:

(Priority Queue)

79B: A: Pop()

(Priority Queue)

80C: B: Push(C)

(Priority Queue)

81C: B:

(Priority Queue)

82B: C: Pop()

(Priority Queue)

First In, First Out 83B: C: Pop() (Priority Queue)

Q. 84

Q. A. 85C++#include priority_queue pq;pq.push(x);O(log n) pq.top();O(1) pq.pop();O(log n) pq.empty();O(1)

(n: pq)

: ( 2 ) O(E)

86

: ( 2 ) O(E)

O(log E)

O(E log E) 87

C++

88

C++

java89

90

vs

: O(VE) : O(E log E)

91

vs

: O(VE) : O(E log E)

92

001INF2INF3INF

00

9310 ()0123

301005020

001302103INF

210130

9410 ()0123

30100502000

03010

001302103INF

130

9510 ()0123

301005020210

2pop10

00130220350

220350

9610 ()0123

301005020130

2302050

350

9710 ()0123

301005020220

00130220350

2pop20

250

9810 ()0123

301005020350

00130250350

(ry5050

9910 ()0123

301005020250

00130250350

50

vs

100

vs

V101

vs

V102

2

103 (WarshallFloyd algorithm)dp

2

104 (WarshallFloyd algorithm)dp

105dp9021012090210903090210120210210120309012090120120150180150210180

(INF)

() 0

106dp09021012090021009030900210120210210012030090120900120120015018015002101800

(INF)

107

(INF)dp09021012090021009030900210120210210012030090120900120120015018015002101800

for(int k = 0; k < V; k++) for(int i = 0; i < V; i++) for(int j = 0; j < V; j++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);

108

.dp09015024045012021033048045090024033054021030042057054015024009030030120240390300240330900210120120240390300450540300210033033045060042012021030120330090210360330210300120120330900120270300330420240240450210120015018048057039039060036027015003004505403002104203303001803300

109

for(int k = 0; k < V; k++) for(int i = 0; i < V; i++) for(int j = 0; j < V; j++) if(dp[i][k] != INF && dp[k][j] != INF) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);

if

110

Dijkstra111

Dijkstra1123for

Dijkstra1133for3

:

: 114

115

: 2

:

: (OK)

: 2

:

: (OK)116

: 2

:

: (OK)117

1

118

1

119

XXX

1

120

XXX

1

121

XXX: 4

(Spanning Tree) (or ) 12210231021371023101371023102710232137

(1)(2)(3): 22: 19: 30

(Spanning Tree) (or ) 12310231021371023101371023102710232137

(1)(2)(3): 22: 19: 30()

(Spanning Tree) (or ) 12410231021371023101371023102710232137

(1)(2)(3): 22: 19: 30

()

125

125

126

126

Sample Input

10 12 110 175 135 260 160 45 125 130 180 135 240 170127

127

Sample Input

10 12 110 175 135 260 160 45 125 130 180 135 240 17012816045135260125180135170130240

175110

128

:

(& )

129 (Prims MST algorithm)BACD2976143

:

(& )

130 (Prims MST algorithm)BD

761AC2943

160451351251801351701302401751100INFINFINFINFINFINFINFINFINF

0

131 (Priority Q)2600

16045135125180135170130240175110USEDINFINFINFINFINFINFINFINFINF

1320

POP (Priority Q)2600

16045135125180135170130240175110USED110175INFINF110INFINFINFINF

110160175

133175160110

(Priority Q)2600

16045135125180135170130240175110USEDUSED175INFINF110INFINFINFINF

160175

134

110

(110)POP110 (Priority Q)260110

16045135125180135170130240175110USEDUSED175INFINF110INFINFINFINF

160175

135(110) (Priority Q)260110

16045135125180135170130240175110USEDUSED45INFINFUSED125INFINFINF

45125175

136

160

45125!!(160)

(Priority Q)260270

16045135125180135170130240175110USEDUSEDUSED135INFUSED125INFINFINF

125135175

137

45

(Priority Q)135260315

16045135125180135170130240175110USEDUSEDUSED130INFUSEDUSED180INFINF

130135175180

138

125

(Priority Q)130

440180260

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSED180INF240

135175180240260

139

130

(Priority Q)260

240260570

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSED180INF240

175180240260

140

135

(Priority Q)260570

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSED180INF240

180240260

141

175

(Priority Q)260570

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSEDUSED135170

135170240260

142

180

(Priority Q)

170135260750

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSEDUSEDUSED170

170240260

143

135

(Priority Q)260885

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSEDUSEDUSEDUSED

240260

144

170

(Priority Q)2601055

16045135125180135170130240175110USEDUSEDUSEDUSED260USEDUSEDUSEDUSEDUSED

260

145

240

(Priority Q)2601055

16045135125180135170130240175110USEDUSEDUSEDUSEDUSEDUSEDUSEDUSEDUSEDUSED

146

260

(Priority Q)2601315

16045135125180135170130240175110USEDUSEDUSEDUSEDUSEDUSEDUSEDUSEDUSEDUSED

147 (Priority Q) or2601315

U X X UX e

: e T

T e X UX e e T e e e e e e OK148

U X X UX e

: e T

T e X UX e e T e e e e e e OK

149

ee

U X X UX e

: e T

T e X UX e e T e e e e e e OK150

T

U X X UX e

: e T

T e X UX e e T e e e e e e OK151

T + eee

U X X UX e

: e T

T e X UX e e T e e e e e e OK152

T e + ee

+

USED

O(E log E) 153

154

:

()155 (Kruskals algorithm)

16045135125180135170130240175110156 ()45110125130135135160170175180240260

2600

160135125180135170130240175110157 ()45110125130135135160170175180240260

4526045

16045135125180135170130240175110158 ()45110125130135135160170175180240260

260155

16045135125180135170130240175110159 ()45110125130135135160170175180240260

260280

16045135125180135170130240175110160 ()45110125130135135160170175180240260

260410

16045135125180135170130240175110161 ()45110125130135135160170175180240260

NG260410

16045135125180135170130240175110162 ()45110125130135135160170175180240260

260545

16045135125180135170130240175110163 ()45110125130135135160170175180240260

260 OK705

16045135125180135170130240175110164 ()45110125130135135160170175180240260

260875

16045135125180135170130240175110165 ()45110125130135135160170175180240260

260875

16045135125180135170130240175110166 ()45110125130135135160170175180240260

2601055

16045135125180135170130240175110167 ()45110125130135135160170175180240260

2601055

26016045135125180135170130240175110168 ()45110125130135135160170175180240260

1315

26016045135125180135170130240175110169 ()45110125130135135160170175180240260

or1315

: O(E log E)

170

: O(E log E)

: O(E)

171

: O(E log E)

: O(E)

172

173

Q. A.

Union-Find Tree(disjoint-set forest)

Union-Find Tree174

643

125643125

175Union-Find Tree4312

176Union-Find TreeQ. 121212

43

177Union-Find TreeQ. 134312213

178Union-Find TreeQ. 234213A.

179Union-Find TreeQ. 344213A.

180Union-Find Tree351264

O(n)

181Union-Find Tree(n: )351264

O(n)

182Union-Find Tree351264(n: )

1: 183Union-Find Tree231245621

3125462

2:

()184Union-Find Tree23124

1243

2 O((n))

185Union-Find Tree(n: )

186Union-Find Tree(n: )

187Union-Find Tree(n: )

: O(E log E)

: O(E)

188

: O(E log E)

: O(E)

O(1)

O(E log E) + O(E) = O(E log E) 189

190

191

vs OKUnion-Find Tree192

vs OKUnion-Find Tree

: O(E)

: 193

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0189http://qupc2014.contest.atcoder.jp/tasks/qupc2014_d

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0180http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0072194