Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf ·...

9
Philip Bille Introduktion til grafer Uorienterede grafer Repræsentation Dybdeførst søgning Sammenhængskomponenter Breddeførst søgning Todelte grafer Introduktion til grafer Uorienterede grafer Repræsentation Dybdeførst søgning Sammenhængskomponenter Breddeførst søgning Todelte grafer Uorienteret graf (undirected graph). Mængde af knuder (vertices) forbundet parvis med kanter (edges). Hvorfor grafer? Modellerer naturligt mange problemer i mange forskellige områder. Tusindvis af praktiske anvendelser. Hundredevis af kendte grafalgoritmer. Uorienterede grafer 0 7 9 10 12 11 1 3 2 5 6 8 4 knude kant Visualisering af internettet http://en.wikipedia.org/wiki/Opte_Project

Transcript of Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf ·...

Page 1: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

Philip Bille

Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer

Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer

• Uorienteret graf (undirected graph). Mængde af knuder (vertices) forbundet parvis med kanter (edges).

• Hvorfor grafer?• Modellerer naturligt mange problemer i mange forskellige områder.• Tusindvis af praktiske anvendelser.• Hundredevis af kendte grafalgoritmer.

Uorienterede grafer

0

7

9 10

1211

1

3

2

5

6 8

4

knude kant

Visualisering af internettet

http://en.wikipedia.org/wiki/Opte_Project

Page 2: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

Visualisering af Facebook venskaber

"Visualizing friendships", Paul Butler

London Metro

River Thames

A

B

C

D

E

F

1 2 3 4 5 6 7 8 9

1 2 3 4 5 76 8 9

A

B

C

D

E

F

2 2

22

2

5

8 8 6

2

4

4

65

41

3

2

43

3

36 3 1

1

3

3

59 7 7Special fares apply

5

5

4

4

4

AmershamChorleywood

Mill Hill East

Rickmansworth

Perivale

KentishTown West

CamdenRoad

Dalston Kingsland

Wanstead Park

Vauxhall

Hanger Lane

Edgware

Burnt Oak

Colindale

Hendon Central

Brent Cross

Golders Green

WestSilvertown

EmiratesRoyal Docks

EmiratesGreenwichPeninsula Pontoon Dock

LondonCity Airport

WoolwichArsenal

King George V

Hampstead

Belsize Park

Chalk Farm

Chalfont &Latimer

Chesham

New CrossGate

Moor Park

NorthwoodNorthwoodHills

Pinner

North Harrow

Custom House for ExCeL

Prince Regent

Royal Albert

Beckton Park

Cyprus

GallionsReach

Beckton

Watford

Croxley

Fulham Broadway

LambethNorth

HeathrowTerminal 4

Harrow-on-the-Hill

KensalRise

BethnalGreen

Westferry

SevenSisters

Blackwall

BrondesburyPark

HampsteadHeath

HarringayGreen Lanes

LeytonstoneHigh Road

LeytonMidland Road

HackneyCentral

NorthwickPark

PrestonRoad

RoyalVictoria

WembleyPark

Rayners Lane

Watford High Street

RuislipGardens

South Ruislip

Greenford

Northolt

South Harrow

Sudbury Hill

Sudbury Town

Alperton

Pimlico

Park Royal

North Ealing

Acton Central

South Acton

Ealing Broadway

Watford Junction

West Ruislip

Bushey

Carpenders Park

Hatch End

North Wembley

West Brompton

Ealing Common

South Kenton

Kenton

Wembley Central

Kensal Green

Queen’s Park

Gunnersbury

Kew Gardens

Richmond

Stockwell

Bow Church

Stonebridge Park

Harlesden

Camden Town

Willesden Junction

Headstone Lane

Parsons Green

Putney Bridge

East Putney

Southfields

Wimbledon Park

Wimbledon

Island Gardens

Greenwich

Deptford Bridge

South Quay

Crossharbour

Mudchute

Heron Quays

West India Quay

Elverson Road

Oakwood

Cockfosters

Southgate

Arnos Grove

Bounds Green

Theydon Bois

Epping

Debden

Loughton

Buckhurst Hill

WalthamstowQueen’s Road

Woodgrange Park

Leytonstone

Leyton

Wood Green

Turnpike Lane

Manor House

Stanmore

Canons Park

Queensbury

Kingsbury

High Barnet

Totteridge & Whetstone

Woodside Park

West Finchley

Finchley CentralWoodford

South Woodford

Snaresbrook

Hainault

Fairlop

Barkingside

Newbury Park

East Finchley

Highgate

Archway

Devons Road

Langdon Park

All Saints

Tufnell Park

Kentish Town

Neasden

Dollis Hill

Willesden Green

South Tottenham

Swiss Cottage

ImperialWharf

Brixton

Kilburn

West Hampstead

Blackhorse Road

Acton Town

CanningTown

Finchley Road

Highbury &Islington

Canary Wharf

Stratford

StratfordInternational

FinsburyPark

Elephant & Castle

Stepney Green

Barking

East Ham

Plaistow

Upton Park

Poplar

West Ham

Upper Holloway

PuddingMill Lane

Kennington

Borough

Elm ParkDagenham

East

DagenhamHeathway

Becontree

Upney

Heathrow Terminal 5

Finchley Road& Frognal

CrouchHill

Northfields

Boston Manor

South Ealing

Osterley

Hounslow Central

Hounslow East

Clapham North

Clapham High Street

Oval

Arsenal

Holloway Road

Caledonian Road

West Croydon

HounslowWest

Hatton Cross

HeathrowTerminals 1, 2, 3

ClaphamJunction

WestHarrow

Brondesbury CaledonianRoad &

Barnsbury

TottenhamHale

WalthamstowCentral

HackneyWick

Homerton

WestActon

Limehouse EastIndia

Crystal Palace

ChiswickPark

RodingValley

GrangeHill

Chigwell

Redbridge

GantsHill

Wanstead

Ickenham

TurnhamGreen

Uxbridge

Hillingdon Ruislip

GospelOak

Mile End

Bow Road

Bromley-by-Bow

Upminster

Upminster Bridge

Hornchurch

Norwood Junction

Sydenham

Forest Hill

Anerley

Penge West

Honor Oak Park

Brockley

Harrow &Wealdstone

Cutty Sark for Maritime Greenwich

Ruislip Manor

Eastcote

Wapping

New Cross

Queens RoadPeckham

Peckham Rye

Denmark Hill

Surrey Quays

Whitechapel

Lewisham

Kilburn Park

Regent’s Park

KilburnHigh Road

EdgwareRoad

SouthHampstead

GoodgeStreet

Shepherd’s BushMarket

Goldhawk Road

Hammersmith

Bayswater

Warren Street

Aldgate

Euston

Farringdon

BarbicanRussellSquare

Kensington(Olympia)

MorningtonCrescent

High StreetKensington

Old Street

St. John’s Wood

Green Park

BakerStreet

NottingHill Gate

Victoria

AldgateEast

Mansion House

Temple

OxfordCircus

BondStreet

TowerHill

Westminster

PiccadillyCircus

CharingCross

Holborn

Tower Gateway

Monument

Moorgate

Leicester Square

London Bridge

St. Paul’s

Hyde Park Corner

Knightsbridge

StamfordBrook

RavenscourtPark

WestKensington

NorthActon

HollandPark

Marylebone

Angel

Queensway MarbleArch

SouthKensington

SloaneSquare

WandsworthRoad

Covent Garden

LiverpoolStreet

GreatPortland

Street

Bank

EastActon

ChanceryLane

LancasterGate

Warwick AvenueMaida Vale

Fenchurch Street

Paddington

BaronsCourt

GloucesterRoad St. James’s

Park

Latimer RoadLadbroke Grove

Royal Oak

Westbourne Park

Bermondsey

Rotherhithe

ShoreditchHigh Street

Dalston Junction

Haggerston

Hoxton

Wood Lane

Shepherd’sBush

WhiteCity

King’s CrossSt. Pancras

EustonSquareEdgware

Road

Southwark

Embankment

Stratford High Street

Abbey Road

Star Lane

Blackfriars

Waterloo

TottenhamCourt Road

Canonbury

Cannon Street

Shadwell

Earl’sCourt

NorthGreenwich

CanadaWater

Clapham North

Clapham Common

Clapham South

Balham

Tooting Bec

Tooting Broadway

Colliers Wood

South Wimbledon

MordenThis diagram is an evolution of the original design conceived in 1931 by Harry Beck

Correct at time of going to print, December 2013

MAYOR OF LONDON

Transport for London

Key to lines

Metropolitan

Victoria

CircleCentralBakerloo

DLR

London Overground

Piccadilly

Waterloo & City

Jubilee

Hammersmith & City

Northern

DistrictDistrict open weekends, public holidays and some Olympia events

Emirates Air Line

Check before you travelBank Waterloo & City line open between Bank and Waterloo 0621-0030 Mondays to Fridays and 0802-0030 Saturdays. Between Waterloo and Bank 0615-0030 Mondays to Fridays and 0800-0030 Saturdays. Closed Sundays and Public Holidays.---------------------------------------------------------------------------------Camden Town Sunday 1300-1730 open for interchange and exit only.---------------------------------------------------------------------------------Canary Wharf Step-free interchange between Underground, Canary Wharf DLR and Heron Quays DLR stations at street level.---------------------------------------------------------------------------------Cannon Street Open until 2100 Mondays to Fridays and 0730-1930 Saturdays. Closed Sundays.---------------------------------------------------------------------------------Embankment Bakerloo and Northern line trains will not stop at this station from early January 2014 until early November 2014. ---------------------------------------------------------------------------------Emirates Greenwich Peninsula and Emirates Royal DocksSpecial fares apply. Open 0700-2000 Mondays to Fridays, 0800-2000 Saturdays, 0900-2000 Sundays and 0800-2000 Public Holidays. Opening hours are extended by one hour in the evening after 1 April 2014 and may be extended on certain events days. Please check close to the time of travel. ---------------------------------------------------------------------------------Heron Quays Step-free interchange between Heron Quays and Canary Wharf Underground station at street level.---------------------------------------------------------------------------------Hounslow WestStep-free access for manual wheelchairs only.---------------------------------------------------------------------------------Kilburn No step-free access from late January 2014 until mid May 2014.---------------------------------------------------------------------------------Stanmore Step-free access via a steep ramp. ---------------------------------------------------------------------------------Turnham Green Served by Piccadilly line trains until 0650 Mondays to Saturdays, 0745 Sundays and after 2230 every evening. At other times use District line.---------------------------------------------------------------------------------Waterloo Waterloo & City line open between Bank and Waterloo 0621-0030 Mondays to Fridays and 0802-0030 Saturdays. Between Waterloo and Bank 0615-0030 Mondays to Fridays and 0800-0030 Saturdays. Closed Sundays and Public Holidays.No step-free access from late January 2014 until late July 2014.---------------------------------------------------------------------------------West India QuayNot served by DLR trains from Bank towards Lewisham before 2100 on Mondays to Fridays.---------------------------------------------------------------------------------

Tube map

London metro, London Transport

Protein interaktionsnetværk

Protein-protein interaktionsnetværk, Jeong et al, Nature Review | Genetics

Grafanvendelser

graf knuder kanter

kommunikation computer kabel

transport vejkryds vej

transport lufthavn fly

spil position lovligt træk

neuralt netværk neuron synapse

finansnetværk valuta, aktier transaktioner

kredsløb logiske porte forbindelse

fødekæde dyrearter rovdyr-byttedyr

molekyle atom bindinger

Page 3: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

• Uorienteret graf. G = (V, E)• V = mængde af knuder• E = mængde af kanter (par af knuder)• n = |V|, m = |E|

• Sti/vej (path). Sekvens af knuder forbundet af kanter.• Kreds (cycle). Sti hvis start- og slutknude er ens.• Grad (degree). deg(v) = antal naboer af v = antal kanter incidente med v. • Sammenhæng (connectivity). To knuder er forbundne hvis der er en vej i mellem

dem

Terminologi

0

7

9 10

1211

1

3

2

5

6 8

4

sti fra 0 til 3

kreds

deg(2) = 3V = {0,1,2,…,12}E = {(0,1), (0,2) (0,4),(2,3),…, (11,12)}n = 13, m = 15

• Lemma. ∑v∈V

deg(v) = 2m.

• Bevis. Hvor mange gange tælles kant med i sum?

Uorienterede grafer

0

7

9 10

1211

1

3

2

5

6 8

4

• Vej. Findes der en sti mellem s og t?• Korteste vej. Hvad er den korteste vej mellem s og t?• Længste vej. Hvad er den længste vej mellem s og t?

• Kreds. Er der en kreds i grafen?• Eulertur. Er der en kreds, der benytter hver kant netop en gang?• Hamiltontur. Er der en kreds, der benytter hver knude netop en gang?

• Sammenhæng. Er det muligt at forbinde alle knuder med en sti? • Mindste udspændende træ. Hvad er den bedste måde at forbinde alle knuder på?• Tosammenhæng. Er der en knude hvis fjernelse gør grafen usammenhængende?

• Planaritet. Er det muligt at tegne grafen i planen uden kanter der krydser?• Grafisomorfi. Repræsenterer to mængde af knuder og kanter samme graf?

Algoritmiske problemer på grafer

Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer

Page 4: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

• G graf med n knuder og m kanter.• Repræsentation. Vi skal bruge følgende operationer på grafer.

• ADJACENT(v, u): afgør om knude v og u er naboer.• NEIGHBORS(v): returner alle naboer af v.• INSERT(v, u): tilføj kant (v, u) til G (medmindre den allerede findes).

Repræsentation

0

7

9 10

1211

1

3

2

5

6 8

4

• Graf G med n knuder og m kanter.• Incidensmatrix (adjacency matrix).

• 2D n ⨉ n tabel A.• A[i,j] = 1 hvis i og j er naboer og 0 ellers.

• Plads. O(n2)• Tid.

• ADJACENT i O(1) tid• NEIGHBORS(v) i O(n) tid.• INSERT(v, u) i O(1) tid.

Incidensmatrix

0 1 2 3 4 5 6 7 8 9 10 11 120 0 1 1 0 1 0 0 0 0 0 0 0 01 1 0 0 0 0 0 0 0 0 0 0 0 02 1 0 0 1 0 1 0 0 0 0 0 0 03 0 0 1 0 1 1 0 0 0 0 0 0 04 1 0 0 1 0 1 0 0 0 0 0 0 05 0 0 1 1 1 0 0 0 0 0 0 0 06 0 0 0 0 0 0 0 1 1 0 0 0 07 0 0 0 0 0 0 1 0 0 0 0 0 08 0 0 0 0 0 0 1 0 0 0 0 0 09 0 0 0 0 0 0 0 0 0 0 1 1 1

10 0 0 0 0 0 0 0 0 0 1 0 0 111 0 0 0 0 0 0 0 0 0 1 0 0 112 0 0 0 0 0 0 0 0 0 1 1 1 0

0

7

9 10

1211

1

3

2

5

6 8

4

• Graf G med n knuder og m kanter.• Incidensliste (adjacency list).

• Tabel A[0..n-1].• A[i] indeholder liste af naboer af i.

• Plads. O(n + ∑v∈V

deg(v)) = O(n + m)

• Tid.• ADJACENT, NEIGHBORS OG INSERT i

O(deg(v)) tid.

Incidensliste0

7

9 10

1211

1

3

2

5

6 8

4

0123456789101112

1 2 400 3 52 4 50 3 52 3 47 86610 11 129 129 129 10 11

• I den virkelige verden er grafer tynde.

Repræsentation

Datastruktur ADJACENT NEIGHBORS INSERT Plads

incidensmatrix O(1) O(n) O(1) O(n2)

incidensliste O(deg(v)) O(deg(v)) O(deg(v)) O(n+m)

Page 5: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer

• Algoritme til systematisk at udforske alle knuder og kanter i en graf.• Dybdeførst søgning (depth-first search) fra knude s.

• Lad alle knuder være umarkede og besøg knude s. • Besøg knude v:

• Marker v.• Besøg alle umarkede naboer af v rekursivt.

• Intuition.• Udforsk ud fra s i en retning indtil vi når “blindgyde”. • Gå tilbage til sidste knude hvor der var flere uudforskede kanter og fortsæt på

samme måde.

• Starttid (discovery-time). Første gang vi besøger en knude i rekursionen.• Sluttid (finish-time). Sidste gang vi besøger en knude i rekursionen.

Dybdeførst søgning

s

• Opgave. Kør DFS fra knude 0 og angiv start- og sluttider. Antag incidenslisterne er sorterede.

Dybdeførst søgning

0

1

3

2

4

5

• Tid. (på incidenslisterepræsentation)• Rekursion bliver kaldt på hver knude højst een gang.• O(deg(v)) tid ved knude v.

• ⟹ i alt O(n + ∑v∈V

deg(v)) = O(n + m) tid.

• Kun knuder forbundet til s bliver besøgt.

Dybdeførst søgningDFS(s)

time = 0DFS-VISIT(s)

DFS-VISIT(v)v.d = time++marker vfor alle umarkerede naboer u

DFS-VISIT(u) u.π = v

v.f = time++

s

Page 6: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

• Farveudfyldning (flood fill). Skift farve på sammenhængende område af grønne pixels.

• Algoritme. • Byg en gittergraf og kør DFS. • Knude: pixel.• Kant: mellem nabopixels af samme farve• Område: alle knude forbundet til en given knude.

Farveudfyldning• Def. Et sammenhængskomponent (connected component) er en maksimal

delmængder af sammenhængende knuder.

• Hvordan finder vi alle sammenhængskomponenter? • Algoritme.

• Lad alle knuder være umarkede. • Sålænge der findes en umarkeret knude:

• Vælg en umarkeret knude v og kør DFS på v. • Tid. O(n + m).

Sammenhængskomponenter

0

7

9 10

1211

1

3

2

5

6 8

4

Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer

• Breddeførst søgning (breadth-first search) fra s. • Lad alle knuder være umarkede. • Marker s og tilføj s til kø K. • Sålænge K ikke er tom:

• Udtag knude v fra K.• For alle umarkede naboer u af v

• Marker u.• Tilføj u til K.

• Intuition.• Udforsk ud fra s i alle retninger i stigende afstand fra s.

• Korteste-veje fra s. • Afstand fra s i BFS træ = afstand fra s i graf.

Breddeførst søgning

s

Page 7: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

• Opgave. Kør BFS fra knude 0 og angiv korteste veje. Antag incidenslisterne er sorterede.

Breddeførst søgning

0

1

3

2

4

5

• Lemma. BFS beregner længden af den korteste vej fra s til alle andre knuder.• Intuition.

• BFS inddeler knuder i lag (layers). Lag i indeholder knude med afstand i fra s i BFS-træ.

• Hvad indeholder lagene?• L0 = {s}• L1 = alle naboer til L0.• L2 = alle naboer til L1 der ikke er naboer til L0

• L3 = alle naboer til L2 der ikke er naboer til L0 og L1.• …• Li = alle naboer til Li-1 der ikke er naboer til Lj for j < i-1

• = alle knuder med afstand i til s.

Korteste veje

s

L0

L1 L2

L3

• Tid. (på incidenslisterepræsentation)• Knude besøges højst een gang.• O(deg(v)) tid ved knude v.

• ⟹ i alt O(n + ∑v∈V

deg(v)) = O(n + m) tid.

• Kun knuder forbundet til s bliver besøgt.

BreddeførstsøgningBFS(s)

marker ss.d = 0K.ENQUEUE(s)gentag indtil K er tom

v = K.DEQUEUE()for alle umarkede naboer u

marker uu.d = v.d + 1 u.π = v K.ENQUEUE(u)

s Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer

Page 8: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

• Def. En graf G er todelt (bipartite) hvis og kun hvis alle knuder kan farves røde eller blå således at alle kanter har et rødt og et blåt endepunkt.

• Alternativt def. En graf G er todelt hvis og kun hvis knuder kan deles i to mængder V1 og V2 så alle kanter går mellem V1 og V2.

• Anvendelser. • Kodning, skedulering, matching, ….• Mange grafproblemer er nemmere på todelte grafer.

Todelte grafer• Udfordring. Givet en graf G, afgør om G er todelt.

Todelte grafer

1

6

5

3

2

7

4

1

6

5

3

2

7

4

• Lemma. En graf G er todelt hvis og kun hvis alle kredse i G har lige længde.• Bevis.

• ⟹ Hvis todelt så starter og slutter alle kredse i samme side.• ⟸ Hvis der er kreds af ulige længde kan vi ikke farve den.

Todelte grafer• Lemma. Lad G være graf med lag L0, L1, …, Lk produceret af BFS. Præcis en af

følgende holder:1. Ingen kant forbinder 2 knuder i samme lag ⟹ G er todelt.2. En kant forbinder 2 knuder i samme lag ⟹ G indeholder en ulige kreds ⟹ G

er ikke todelt. • Bevis. 1. Farv lag skiftevis. 2. Lad (u,v) være kant mellem to knuder i samme lag. Kig på kreds givet ved sti s til u + (u,v) + sti v til s.

Todelte grafer

Page 9: Introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf · Visualisering af Facebook venskaber "Visualizing friendships", Paul Butler London

• Algoritme.• Kør BFS på G.• For hver kant i G undersøg om den er

mellem knuder i samme lag.

• Tid.• O(n + m)

Todelte grafer

s

L0

L1 L2

L3

s

L0

L1 L2

L3

• Antager G er givet i incidenslisterepræsentation

GrafalgoritmerAlgoritme Tid Plads

Dybdeførst søgning O(n + m) O(n + m)

Breddeførst søgning O(n + m) O(n + m)

Sammenhængskomponenter O(n + m) O(n + m)

Todelte grafer O(n + m) O(n + m)

Introduktion til grafer

• Uorienterede grafer• Repræsentation • Dybdeførst søgning

• Sammenhængskomponenter• Breddeførst søgning

• Todelte grafer