introduktion til grafer - courses.compute.dtu.dkcourses.compute.dtu.dk/.../intrografer4x1.pdf ·...
TRANSCRIPT
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
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
• 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
• 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)
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
• 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
• 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
• 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
• 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