• 검색 결과가 없습니다.

Shortest (Longest) Path Problems

N/A
N/A
Protected

Academic year: 2022

Share "Shortest (Longest) Path Problems"

Copied!
29
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Graph Optimization

(4541.554 Introduction to Computer-Aided Design)

School of EECS

Seoul National University

(2)

Shortest (Longest) Path Problems

Shortest (Longest) Path Problems

• Assume no negative (positive) cycles

negative (positive) cycles + simple path --> NP- complete

• Directed edge weighted graph G(V, E, W), source vertex v

0

• Bellman’s equation

– path weight s

0

= 0

s

i

= min(s

k

+ w

k,i

) , i = 1, 2, ..., n

• Acyclic

– Topological sort (O(|V| + |E|))

– Solve Bellman’s equation in the topological order

k≠ i

s

k

s

i

w

k,i

(3)

Shortest (Longest) Path Problems

– Cyclic

• if all weights are positive, use Dijkstra’s algorithm

• DIJKSTRA (G(V, E, W)) { s0 = 0;

for (i = 1 to n) si = w0,i;

repeat {

select an unmarked vertex vq such that sq is minimal;

mark vq

foreach (unmarked vertex vi) si = min{si, (sq + wq,i)};

} until (all vertices are marked);

}

Implementation of priority queue

• linear list: O(|V|2 + |E|)

• heap: O(|V|log|V| + |E|log|V|)

v

q

v

i

w

q,i

(4)

Shortest (Longest) Path Problems

– Cycles + negative weights (but no negative cycle)

• Bellman-Ford algorithm

– Refine path weights iteratively – BELLMAN_FORD (G(V, E, W)) {

s01= 0;

for (i = 1 to n) si1= w0,i ; for (j = 1 to n) {

for (i = 1 to n) {

sij+1 = min{sij , (skj + wk,i )};

}

if (sij+1 == sij for all i) return (TRUE);

}

return (FALSE)

}

– Converge within |V| - 1 iterations

– O(|V| |E|)

solution path

k≠ i

O(|E|)

v

q

v

i

w

q,i

(5)

Shortest (Longest) Path Problems

• Liao- Wong

– G(V, E ∪ F, W) , F: set of feedback edges – LIAO_WONG (G(V, E ∪ F, W)) {

for (j = 1 to |F| + 1) { foreach vertex vi

lij+1 = longest path in G(V, E, WE) ; -- O(|V|+|E|+|F|) flag = TRUE;

foreach edge (vp, vq) ∈ F { if (lqj+1 < lpj+1 + wp,q) {

flag = FALSE;

E = E ∪ (v0, vq);

w0,q = (lpj+1 + wp,q);

} }

if (flag) return (TRUE) }

return (FALSE) }

(6)

Shortest (Longest) Path Problems

– converge within |F| + 1 iterations

– O((|V| + |E| + |F|) |F| )

solution path

r feedback edges need r iterations

(7)

Shortest (Longest) Path Problems

• Shortest path lengths between all pairs of vertices

– Floyd’s algorithm for k=1 to n

for i=1 to n for j =1 to n

if d

ik

+ d

kj

< d

ij

d

ij

= d

ik

+ d

kj

;

d

ij

is the length of the shortest among the paths that pass thru only the vertices with labels ≤ k

j k

i k

d

ij

d

ik

d

kj

i

1 2

k

j

(8)

Compaction

Compaction

• Minimize area satisfying the design rule

• Two dimensional problem

• Classification

– 1-D compaction

• Alternate x-compaction and y-compaction – 2-D compaction

• Objects can move in both directions.

• NP-hard

x-compaction first

y-compaction first

area: 63

area: 56

7

9 7

1

6

6 4

3

8

7

(9)

Compaction

• Compaction based on Constraint Graph

– Graph construction

• Nodes: objects

• Directed edges: constraints

• Edge weights: lower bounds (spacing) upper bounds (connectivity) slacks

• Add a source and a sink

– Find the longest path (critical path) from the source (leftmost object) to the sink (rightmost object)

A B

B ≥ A + d

C

D

|C – D| ≤ d

A d B

C -d D

-d

|C – D| ≤ d -d ≤ C – D ≤ d

D ≥ C – d C ≥ D – d

(10)

Compaction

– Example

A

B

C

D

A

B

C

D

E

F

G

S

E

F

G Z

A

B

C

D

E

F

G

Shadow propagation to avoid generating unnecessary

constraints (edges)

(11)

Shortest (Longest) Path Problems

– Linear program

• constraint graph : x

j

≥ x

i

+ w

i,j

minimize c

T

x, where c

T

= [1, ..., 1] or

c

i

= 1 for sink and c

i

= 0 otherwise subject to A

T

x ≥ b, A : incidence matrix

x

i

x

j

≥ wi,j

A

T

x = e

i,j

v

i

v

j

-1 1

x

≥≥

wwi,ji,j

(12)

Shortest Spanning Tree

Shortest Spanning Tree

• Spanning tree of G

– Subgraph of G that is a tree containing all vertices of G – Can be used for net length estimation

• Prim’s algorithm

1

4 3

6 5

2

6 5

5 1

5 2 4

6 3 6

1

4 3

6 5

2

1

1

4 3

6 5

2

1 4

1

4 3

6 5

2 5

1 4 2 3

1

4 3

6 5

2 5

1 4 2

1

4 3

6 5

2

1

4 2

(13)

• PRIM (G(V, E, W)) { mark v1;

for (i = 2 to n) si = w1,i;

repeat {

select an unmarked vertex vq such that sq is minimal; --- |V|2,

|V|log|V|

mark vq

foreach (unmarked vertex vi)

si = min{si, wq,i}; --- |E|, |E|log|V|

} until (all vertices are marked);

}

implementation of priority queue

• linear list: O(|V|2 + |E|)

• heap: O(|V|log|V| + |E|log|V|)

Shortest Spanning Tree

1

4 3

6 5

2

6 5

5 5

6 4

(14)

Shortest Spanning Tree

– Kruskal’s algorithm

1

4 3

6 5

2

6 5

5 1

5 2 4

6 3 6

1

4 3

6 5

2

1

1

4 3

6 5

2

1

1

4 3

6 5

2 5

1 4 2 3

1

4 3

6 5

2

1 4 2

1

4 3

6 5

2

1

2 2

3 3

(15)

• KRUSKAL (G(V, E, W)) {

make n components such that each component contains one vertex;

ncomp = n;

repeat {

select an unmarked edge ei,j such that wi,j is minimal; --- |E|2,

|E|log|E|

icomp = find(i, components); --- |E|log|V|

jcomp = find(j, components); --- |E|log|V|

if icomp <> jcomp {

merge(icomp, jcomp, components);

ncomp = ncomp - 1;

mark ei,j }

} until (ncomp = 1);

}

implementation of priority queue

• linear list: O(|E|2)

• heap: O(|E|log|E|)

Shortest Spanning Tree

1

4 3

6 5

2

1

4 2

3

(16)

Network Flow

Network Flow

source sink

5

3 6 6

5 1

3

6 a

b

c

d

e

z

capacity

5,3

3,3 6 6,3

5,3 1

3,3

6,3 a

b

c

d

e

z

5,5

3,3 6,2 6,4

5,4 1,1

3,3

6,5 a

b

c

d

e

z

2 3

6

2 1 3

a

b

c

d

e

z

slack in unsaturated

edges

9

(17)

Network Flow

5

3 6 6

5 1

3

6 a

b

c

d

e

5

6 3 6

5 3

1

6 a

b

c

e

d

5,5

6,5 3 6,5

5,1 3

1,1

6,1 a

b

c

e

d 5,5

6,5 3,0 6,6

5,2 3,1

1,1

6,1 a

b

c

e

d 7 (?)

z

z

z

z

(18)

Network Flow

5,5

6,5 3,0 6,6

5,2 3,1

1,1

6,1 a

b

c

e

d (a

+

,3) (b

+

,2)

(c

+

,2) (e

-

,2)

(d

+

,2) z

5,5

6,3 3,2 6,6

5,4 3,3

1,1

6,3 a

b

c

e

d

z

labeled unlabeled

cut of saturated edges

=> min-cut (min. capacity) Max flow

Max flow - - min cut theorem: min cut theorem:

max flow = capacity of min cut max flow = capacity of min cut

(a

+

,1)

(19)

Network Flow

• Augmenting Flow Algorithm

1. Breadth-first search 2. If sink is visited

a. back trace updating the flow b. delete labels

c. go to 1 otherwise

done

– Why breadth-first search?

• Shortest path first

100,0 100,0 1,0

100,0 100,0 a

b

c

z (a

+

,100)

(b

+

,1)

(c

+

,1)

100,1 100,0

1,1

100,0 100,1 a

b

c

z (c

-

,1)

(a

+

,100)

(b

+

,1)

...

(20)

Network Flow

Complexity of Augmenting Flow Algorithm

O(|E|) for each iteration (breadth first search) and

# of iterations = O(|V||E|) Æ Complexity = O(|V||E|

2

)

Why # of iterations = O(|V||E|)?

- At least one bottleneck per shortest path (or per iteration) - During the whole process, each edge can be a bottleneck at

most |V| times (prove this as a homework problem).

Can be improved to reduce complexity to O(|V|

3

)

(21)

Network Flow

6,0

7,0

4,0

5,0 4,0

7,0

9,0

12,0 a

b

c

e

d

(a+,7) (d+,7) (b+,6) (a+,6)

(e+,4) z

f 4,0 4,0

5,0 3,0 (a+,4)

6,4

7,4

4,4

5,0 4,0

7,0

9,0

12,0 a

b

c

e

d

(a+,7) (d+,7) (b+,2) (a+,2)

z

f 4,0 4,0

5,0 3,0 (a+,4)

(f+,7)

6,4

7,4

4,4

5,0 4,0

7,7

9,7

12,7 a

b

c

e

d

(c+,4) (c+,3) (b+,2) (a+,2)

z

f 4,0 4,0

5,0 3,0 (a+,4)

(f+,3) 6,4

7,4

4,4

5,0 4,0

7,7

9,7

12,10 a

b

c

e

d

(c+,1) (d+,1) (b+,2) (a+,2)

z

f 4,0 4,3

5,0 3,3 (a+,1)

(f+,1)

(-,∞) (-,∞)

(-,∞) (-,∞)

(22)

Network Flow

6,4

7,4

4,4

5,0 4,0

7,7

9,8

12,11 a

b

c

e

d

(c+,2) (d+,1) (b+,2) (a+,2)

z

f 4,0 4,4

5,1 3,3 (e+,2)

(f+,1)

6,5

7,5

4,4

5,0 4,1

7,7

9,9

12,12 a

b

c

e

d (c+,1)

(b+,1) (a+,1)

z

f 4,0 4,4

5,2 3,3 (e+,1)

min-cut (-,∞)

(-,∞) 6,4

7,4

4,4

5,0 4,0

7,7

9,7

12,10 a

b

c

e

d

(c+,1) (d+,1) (b+,2) (a+,2)

z

f 4,0 4,3

5,0 3,3 (a+,1)

(f+,1) (-,∞)

(23)

Matching

Matching

• A matching M of a graph G(V, E) is a subset of E, where no two edges share the same node.

• Cardinality Matching: maximize |M|

• Bipartite Cardinality Matching

– Find a cardinality matching of a bipartite graph B(V,U,E) – O(min(|V|,|U|)|E|)

v1 u1

v2 u2

v3 u3

v4 u4

v5 u5

v6 u6

v2

u2

u6

v3 v4

v5

u3 u4 u5

v1 v6

u1

v2

u6 v5

u4 v1 u1

v1 u1

v2 u2

v3 u3

v4 u4

v5 u5

v6 u6

initial matching augmented

matching

alternating path

(24)

Matching

• Nonbipartite Matching

– Find a cardinality matching of a general graph G(V,E) – O(|V|

3

)

• Weighted Matching: maximize total weight of M

• Bipartite Weighted Matching

– Find a weighted matching of a bipartite graph B(V,U,E,W)

– O(|V|

3

) for a complete bipartite graph with 2|V| vertices

• Nonbipartite Weighted Matching

– Find a weighted matching of a general graph G(V,E,W)

– O(|V|

3

)

(25)

Functional Cell Design

Functional Cell Design

• Layout

– Layers: diffusion, metal, poly – Linear array of transistors

– Avoid diffusion gaps to minimize area

a b c d e f

c a

d b

h g

e f

x

y

x

y

g h diffusion gap

(26)

Functional Cell Design

• To minimize the number of diffusion gaps

– Find Euler trail

a c d b e f g h

y x

y x

c a

d b

h g

e f

x

y

x a

c d b

e

g

h f

(27)

Functional Cell Design

• Problem

– Given a graph G(V,E)

• V: set of vertices (interconnects)

• E: set of edges (transistors) – Find an Euler trail

– If an Euler trail is found

<=> All transistors abut

<=> Minimum length solution – Otherwise

• Solution 1: Break diffusion area by gaps (find a set of trails covering the graph)

--> Minimize number of gaps (minimize number of trails)

• Solution 2: Add transistors (edges) in parallel to make a trail

--> Minimize number of duplications

(28)

Functional Cell Design

– Example

a b c

d e

f

a b c d e f

a b c d e f

a b c

d e

f

a c c' d e f

a b c

d e c' f

b

solution 1 diffusion

gap

solution 2 transistor duplication

(29)

Functional Cell Design

• How to minimize the number of duplications?

– Chinese postman's problem

• Find a walk traversing each edge at least once with minimum total weight

• Algorithm

– step 1: Mark vertices with odd degree. If none, go to step 5 step 2: Compute shortest path between all pairs of marked vertices (Floyd's algorithm:O(|V|3))

step 3: Match marked vertices into pairs so that the sum of the lengths of the shortest paths between pairs is minimum (Maximum weighted matching:O(|V|3))

step 4: Duplicate edges along these paths step 5: construct an Euler path:O(|V|+|E|) – complexity: O(|V|3)

2 1 1

1 2

2

참조

관련 문서

After first field tests, we expect electric passenger drones or eVTOL aircraft (short for electric vertical take-off and landing) to start providing commercial mobility

1 John Owen, Justification by Faith Alone, in The Works of John Owen, ed. John Bolt, trans. Scott Clark, &#34;Do This and Live: Christ's Active Obedience as the

The dimension of a convex set is defined to be the the maximum number of its affinely independent vectors minus

In chemistry, Gibbs' phase rule describes the possible number of degrees of freedom (F) in a closed system at equilibrium, in terms of the number of separate phases (P) and

 false path : instruct the synthesis to ignore a particular path for timing optimization.  multicycle path: inform the synthesis tool regarding the number of clock cycles

First, the effect of the referee’s decision by area, number of volleyball games, and player’s career indicated that the fairness, consistency, and

In this paper, we study characteristics of chromatic number which is the minimum number of colors when coloring adjacent vertices in different colors in graph coloring

‰ cover the ON-set with as few prime implicants as possible (to minimize number of product terms).. So far we have examined a few examples of