4x1

Introduktion til grafer
Introduktion til grafer
• Uorienterede grafer
• Uorienterede grafer
• Repræsentation • Repræsentation • Dybdeførst søgning
• Dybdeførst søgning
• Sammenhængskomponenter
• Sammenhængskomponenter
• Breddeførst søgning
• Breddeførst søgning
• Todelte grafer
• Todelte grafer
Philip Bille
Uorienterede grafer
Visualisering af internettet
• Uorienteret graf (undirected graph). Mængde af knuder (vertices) forbundet parvis
med kanter (edges).
knude
kant
0
6
1
8
7
9
10
11
12
2
3
4
5
• Hvorfor grafer?
• Modellerer naturligt mange problemer i mange forskellige områder.
• Tusindvis af praktiske anvendelser.
• Hundredevis af kendte grafalgoritmer.
http://en.wikipedia.org/wiki/Opte_Project
Visualisering af Facebook venskaber
Tube map Metro
London
1
Chesham
9
2
8
Chalfont &
Latimer
Amersham
Watford
A
Rickmansworth
Ruislip Manor
Ruislip
Gardens
Edgware
Stanmore
Harrow &
Wealdstone
Harrowon-the-Hill
West
Harrow
South Harrow
Northwick
Park
Queensbury
Preston
Road
Kingsbury
Sudbury Hill
Stonebridge Park
Willesden Junction
Kensal
Rise
Alperton
Queen’s Park
Greenford
Kilburn
High Road
Kilburn Park
Maida Vale
Warwick Avenue
West
Acton
3
North
Acton
Acton Central
Ealing Common
South Acton
D
Acton Town
Chiswick
Park
Shepherd’s
Bush
White
City
2
Wood Lane
Shepherd’s Bush
Market
Goldhawk Road
Hammersmith
West
Kensington
Kew Gardens
Richmond
Heathrow Terminal 5
Queensway
4
5
3
Gloucester
Road
Charing
Cross
St. James’s
Park
2
Vauxhall
Clapham
Junction
Tooting Broadway
Colliers Wood
South Wimbledon
Royal
Victoria
East
India
4
3
Custom House for ExCeL
Emirates
Royal Docks
Heron Quays
Protein interaktionsnetværk
Protein-protein interaktionsnetværk,
Jeong et al, Nature Review | Genetics
Royal Albert
West
Silvertown
South Quay
D
Beckton Park
Cyprus
North
Greenwich
Emirates
Greenwich
Peninsula
Pontoon Dock
Gallions
Reach
London
City Airport
2
Beckton
King George V
Queens Road
Peckham
Elephant & Castle
Peckham Rye
Stockwell
New Cross
Greenwich
Woolwich
Arsenal
E
Elverson Road
Lewisham
3
4
Hammersmith & City
Jubilee
Metropolitan
Sydenham
Northern
Piccadilly
Anerley
5
6
Central
District
District open weekends, public
holidays and some Olympia events
Forest Hill
Crystal Palace
Bakerloo
Circle
4
Deptford Bridge
Brockley
Honor Oak Park
Denmark Hill
3
Cutty Sark for
Maritime Greenwich
New Cross
Gate
Bank
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 Docks
Special 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 West
Step-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 Quay
Not served by DLR trains from Bank towards
Lewisham before 2100 on Mondays to Fridays.
---------------------------------------------------------------------------------
Key to lines
Island Gardens
F
Victoria
Norwood Junction
Waterloo & City
West Croydon
DLR
5
7
London Overground
This diagram is an evolution of the original design conceived in 1931 by Harry Beck
Correct at time of going to print, December 2013
8
"Visualizing friendships", Paul Butler
MAYOR OF LONDON
Prince Regent
Penge West
Tooting Bec
4
West
India Quay
Crossharbour
Kennington
Canning
Town
Blackwall
Canary Wharf
Canada
Water
Borough
Brixton
Balham
Morden
Bermondsey
Star Lane
Langdon Park
Mudchute
Clapham Common
3
Rotherhithe
London
Bridge
West Ham
All Saints
Poplar
Wapping
Surrey Quays
Clapham South
F
Tower
Gateway
Southwark
Lambeth
North
Oval
Wandsworth
Road
2
Westferry
Limehouse
C
Plaistow
Bromleyby-Bow
Devons Road
Stepney Green
Whitechapel
Shadwell
River Thames
Temple
Embankment
1
Pimlico
Imperial
Wharf
Aldgate
East
Dagenham
Heathway
Upney
Barking
East Ham
Upton Park
Bow Road
Aldgate
Tower
Hill
Fenchurch Street
Waterloo
Clapham North
2
Monument
Blackfriars
Westminster
Clapham High Street
1
Bank
Cannon Street
Mansion House
Elm Park
Becontree
Woodgrange Park
Stratford
High Street
Abbey
Road
Mile End
B
Hornchurch
Stratford
Bow Church
1
St. Paul’s
Holborn
Leicester Square
Upminster
Upminster Bridge
Dagenham
East
Wanstead Park
Hackney
Wick
Shoreditch
High Street
Moorgate
Gants
Hill
Leytonstone
High Road
Leyton
Pudding
Mill Lane
Bethnal
Green
Liverpool
Street
Barbican
Chancery
Lane
Covent Garden
Victoria
Wimbledon
Transport for London
Homerton
2
Hoxton
Barkingside
Newbury Park
Wanstead
Stratford
International
Dalston Junction
A
Fairlop
Leytonstone
Leyton
Midland Road
3
Hackney
Central
Canonbury
Haggerston
Farringdon
Russell
Square
Piccadilly
Circus
Sloane
Square
South
Kensington
Caledonian
Road &
Barnsbury
Walthamstow
Queen’s Road
Grange
Hill
Redbridge
Walthamstow
Central
Dalston
Kingsland
Old Street
Euston
Square
Green Park
East Putney
Wimbledon Park
Highbury &
Islington
King’s Cross
St. Pancras
Tottenham
Court Road
Marble
Arch
1
Putney Bridge
Southfields
Mornington
Crescent
Goodge
Street
Oxford
Circus
Hyde Park Corner
Fulham Broadway
Parsons Green
Kentish Town
Camden
Road
4
Snaresbrook
Blackhorse
Road
Tottenham
Hale
Euston
Warren Street
Bond
Street
Finsbury
Park
Angel
Knightsbridge
Earl’s
Court
South Tottenham
Arsenal
Holloway Road
Kentish
Town West
Camden Town
Great
Portland
Street
Baker
Street
Check before you travel
Chigwell
Hainault
South Woodford
Seven
Sisters
Manor House
Upper Holloway
Chalk Farm
Regent’s Park
Lancaster
Gate
High Street
Kensington
Turnpike Lane
Archway
Tufnell Park
Bayswater
2
Gunnersbury
Hounslow Central
Hatton Cross
Heathrow
Terminals 1, 2, 3
Heathrow
Terminal 4
St. John’s Wood
West Brompton
Hounslow East
Hounslow
West
Holland
Park
Barons
Court
Turnham Stamford Ravenscourt
Brook
Park
Green
Osterley
E
Swiss Cottage
Edgware
Marylebone
Road
Notting
Hill Gate
Kensington
(Olympia)
2
Finchley Road
South
Hampstead
Roding
Valley
Woodford
Harringay
Green Lanes
Crouch
Hill
Highgate
Gospel
Oak
Hampstead
Heath
5
Buckhurst Hill
Arnos Grove
Bounds Green
Caledonian Road
West Hampstead
9
6
Debden
Loughton
Southgate
West Finchley
Finchley Central
Belsize Park
Kilburn
Edgware
Road
Ladbroke Grove
Latimer Road
East
Acton
Ealing Broadway
South Ealing
Paddington
Westbourne Park
Park Royal
North Ealing
Northfields
Hampstead
Finchley Road
& Frognal
Royal Oak
Hanger Lane
Boston Manor
Brent Cross
Brondesbury
Kensal Green
Perivale
3
Hendon Central
Brondesbury
Park
Oakwood
Woodside Park
Mill Hill East
Dollis Hill
Willesden Green
Harlesden
Cockfosters
Wood Green
Golders Green
Sudbury Town
High Barnet
Totteridge & Whetstone
East Finchley
Neasden
Wembley
Park
8
Epping
Colindale
South Kenton
North Wembley
Wembley Central
Northolt
6 5 4
Burnt Oak
Canons Park
Kenton
7
Theydon Bois
4
Hatch End
Headstone Lane
North Harrow
Rayners Lane
C
6
Carpenders Park
Pinner
Eastcote
South Ruislip
B
5
5
Bushey
Northwood
Northwood
Hills
Ruislip
Ickenham
4
8 7 6
Watford Junction
Watford High Street
Moor Park
West Ruislip
Hillingdon
Uxbridge
3
Special fares apply
7
Croxley
Chorleywood
London metro, London Transport
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
9
Emirates Air Line
Terminologi
Uorienterede grafer
• Uorienteret graf. G = (V, E)
• Lemma. ∑v∈V deg(v) = 2m.
• V = mængde af knuder
• Bevis. Hvor mange gange tælles kant med i sum?
• E = mængde af kanter (par af knuder)
• n = |V|, m = |E|
• Sti/vej (path). Sekvens af knuder forbundet af kanter.
0
• Kreds (cycle). Sti hvis start- og slutknude er ens.
• Sammenhæng (connectivity). To knuder er forbundne hvis der er en vej i mellem
dem
V = {0,1,2,…,12}
deg(2) = 3
sti fra 0 til 3
6
1
4
7
9
10
11
12
n = 13, m = 15
2
3
4
8
5
kreds
Algoritmiske problemer på grafer
• 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?
Introduktion til grafer
• Uorienterede grafer
• Repræsentation • Dybdeførst søgning
• Sammenhængskomponenter
• Breddeførst søgning
• Todelte grafer
8
7
9
10
11
12
2
3
E = {(0,1), (0,2) (0,4),(2,3),…, (11,12)}
0
6
1
• Grad (degree). deg(v) = antal naboer af v = antal kanter incidente med v. 5
Repræsentation
Incidensmatrix
• G graf med n knuder og m kanter.
• Graf G med n knuder og m kanter.
• Repræsentation. Vi skal bruge følgende operationer på grafer. • Incidensmatrix (adjacency matrix). 0
• 2D n ⨉ n tabel A.
• NEIGHBORS(v): returner alle naboer af v.
• A[i,j] = 1 hvis i og j er naboer og 0 ellers.
• INSERT(v, u): tilføj kant (v, u) til G (medmindre den allerede findes).
• Plads.
O(n2)
6
1
8
7
2
9
3
4
5
• Graf G med n knuder og m kanter.
6
1
• A[i] indeholder liste af naboer af i.
• ADJACENT, NEIGHBORS OG INSERT i
O(deg(v)) tid.
10
11
12
0
1
2
3
4
5
6
7
8
9 10 11 12
0
0
1
1
0
1
0
0
0
0
0
0
0
0
• NEIGHBORS(v) i O(n) tid.
1
1
0
0
0
0
0
0
0
0
0
0
0
0
• INSERT(v, u) i O(1) tid.
2
1
0
0
1
0
1
0
0
0
0
0
0
0
3
0
0
1
0
1
1
0
0
0
0
0
0
0
4
1
0
0
1
0
1
0
0
0
0
0
0
0
5
0
0
1
1
1
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
1
1
0
0
0
0
7
0
0
0
0
0
0
1
0
0
0
0
0
0
8
0
0
0
0
0
0
1
0
0
0
0
0
0
9
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
1
11 0
0
0
0
0
0
0
0
0
1
0
0
1
12 0
0
0
0
0
0
0
0
0
1
1
1
0
Repræsentation
8
7
9
10
11
12
2
• Tabel A[0..n-1].
• Tid.
9
0
• Incidensliste (adjacency list). • Plads. O(n + ∑v∈V deg(v)) = O(n + m)
7
• ADJACENT i O(1) tid
12
Incidensliste
5
4
10
11
8
2
3
• Tid.
0
6
1
• ADJACENT(v, u): afgør om knude v og u er naboer.
3
5
4
0
1
2
4
1
0
2
3
0
3
5
2
4
5
4
0
3
5
5
2
3
4
6
7
8
7
6
8
6
9
10
11
10
9
12
11
9
12
12
9
10
12
11
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)
• I den virkelige verden er grafer tynde.
Dybdeførst søgning
• Algoritme til systematisk at udforske alle knuder og kanter i en graf.
• Dybdeførst søgning (depth-first search) fra knude s.
Introduktion til grafer
s
• Lad alle knuder være umarkede og besøg knude s. • Besøg knude v:
• Marker v.
• Uorienterede grafer
• Besøg alle umarkede naboer af v rekursivt. • Repræsentation • Dybdeførst søgning
• Sammenhængskomponenter
• Intuition.
• Breddeførst søgning
• 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.
• Todelte grafer
• 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
Dybdeførst søgning
• Opgave. Kør DFS fra knude 0 og angiv start- og sluttider. Antag incidenslisterne er
sorterede.
DFS(s)
time = 0
DFS-VISIT(s)
s
5
0
2
1
4
3
DFS-VISIT(v)
v.d = time++
marker v
for alle umarkerede naboer u
DFS-VISIT(u)
u.π = v
v.f = time++
• 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.
Farveudfyldning
Sammenhængskomponenter
• Farveudfyldning (flood fill). Skift farve på sammenhængende område af grønne
pixels.
• Def. Et sammenhængskomponent (connected component) er en maksimal
delmængder af sammenhængende knuder.
0
6
1
8
7
9
10
11
12
2
3
4
5
• Hvordan finder vi alle sammenhængskomponenter? • Algoritme. • Algoritme. • Byg en gittergraf og kør DFS. • Lad alle knuder være umarkede. • Knude: pixel.
• Sålænge der findes en umarkeret knude: • Kant: mellem nabopixels af samme farve
• Område: alle knude forbundet til en given knude.
• Vælg en umarkeret knude v og kør DFS på v. • Tid. O(n + m).
Breddeførst søgning
• Breddeførst søgning (breadth-first search) fra s.
Introduktion til grafer
• Lad alle knuder være umarkede. • Marker s og tilføj s til kø K. s
• Sålænge K ikke er tom:
• Uorienterede grafer
• Repræsentation • Dybdeførst søgning
• Udtag knude v fra K.
• For alle umarkede naboer u af v • Marker u.
• Tilføj u til K.
• Sammenhængskomponenter
• Breddeførst søgning
• Todelte grafer
• 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
Korteste veje
• Opgave. Kør BFS fra knude 0 og angiv korteste veje. Antag incidenslisterne er
sorterede.
• 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æ.
L1
L2
L0
5
0
2
s
• Hvad indeholder lagene?
• L0 = {s}
1
4
• 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.
3
•
…
• Li = alle naboer til Li-1 der ikke er naboer til Lj for j < i-1 • = alle knuder med afstand i til s.
Breddeførstsøgning
BFS(s)
marker s
s.d = 0
K.ENQUEUE(s)
gentag indtil K er tom
v = K.DEQUEUE()
for alle umarkede naboer u
marker u
u.d = v.d + 1
u.π = v
K.ENQUEUE(u)
• 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.
s
Introduktion til grafer
• Uorienterede grafer
• Repræsentation • Dybdeførst søgning
• Sammenhængskomponenter
• Breddeførst søgning
• Todelte grafer
L3
Todelte grafer
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. • Udfordring. Givet en graf G, afgør om G er todelt.
• 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.
1
2
1
2
6
7
6
3
7
3
4
5
4
5
• Anvendelser. • Kodning, skedulering, matching, ….
• Mange grafproblemer er nemmere på todelte grafer.
Todelte grafer
Todelte grafer
• Lemma. En graf G er todelt hvis og kun hvis alle kredse i G har lige længde.
• Lemma. Lad G være graf med lag L0, L1, …, Lk produceret af BFS. Præcis en af
følgende holder:
• Bevis. • ⟹ Hvis todelt så starter og slutter alle kredse i samme side.
1. Ingen kant forbinder 2 knuder i samme lag ⟹ G er todelt.
• ⟸ Hvis der er kreds af ulige længde kan vi ikke farve den.
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
Grafalgoritmer
• Algoritme.
L1
• For hver kant i G undersøg om den er
mellem knuder i samme lag.
L2
L0
• Kør BFS på G.
s
L3
• Tid.
• O(n + m)
L1
Introduktion til grafer
• Uorienterede grafer
• Repræsentation • Dybdeførst søgning
• Sammenhængskomponenter
• Breddeførst søgning
• Todelte grafer
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)
• Antager G er givet i incidenslisterepræsentation
L2
L0
s
Algoritme
L3